Вызов функции getpid в C с примерами

Calling Getpid Function C With Examples



Getpid () - это функция, используемая для получения идентификатора процесса, который вызывает эту функцию. PID для начального процесса равен 1, а затем каждому новому процессу присваивается новый идентификатор. Это простой подход к получению PID. Эта функция только помогает вам получить уникальные идентификаторы процессов.

Функции, используемые для получения идентификаторов

Здесь присутствуют два типа идентификаторов. Один из них - текущий идентификатор PID процесса. А другой - это идентификатор PPID родительского процесса. Обе эти функции являются встроенными функциями, которые определены в библиотеке. При запуске кода без использования этой библиотеки может возникнуть ошибка и остановка выполнения.







Функция getpid () в C

Когда какой-то процесс сформирован и запущен, ему присваивается уникальный идентификатор. Это идентификатор процесса. Эта функция помогает вернуть идентификатор процесса, который в данный момент вызывается.



Функция getppid () в C

Этот идентификатор полезен при возврате процесса родительского процесса / функции.



Пример 1
Чтобы понять пример PID в процессе на языке C. Вам понадобятся два инструмента: любой текстовый редактор и терминал Linux, на котором вы должны запускать команды. Создайте файл в любом текстовом редакторе. Мы создали файл с именем code1.c, поскольку код написан на языке C, поэтому его следует сохранить с расширением .c.





Мы добавили одну библиотеку. Затем здесь запускается основная программа. В основной программе мы вызываем встроенную функцию getpid (); чтобы получить идентификатор текущего процесса. И вводится и назначается переменная. Чтобы значение функции PID () сохранялось в этой переменной, мы будем распечатывать значение, используя эту переменную.



Теперь мы хотим запустить содержимое этого файла в терминале Linux. Предварительное условие кода должно быть сначала скомпилировано, а затем выполнено. Для компиляции используется GCC. Если в вашей системе отсутствует GCC, вам необходимо сначала установить его с помощью команды Sudo.

Теперь скомпилируйте написанный код. Это можно сделать с помощью следующей добавленной команды.

$ GCC –o code1 code1.c

В то время как –o используется для открытия файла сохранения в команде. Затем после –o мы пишем имя файла.

После компиляции запустите команду.

$ ./code1

На изображении выше показан идентификатор процесса функции.

Пример 2
В предыдущем примере мы использовали PID. Но в этом примере используются как PID, так и PPID. Исходный код этой функции почти такой же, как и предыдущий. Только есть еще одно добавление ID.

Рассмотрим файл, содержащий две переменные в основной программе, которым присвоены идентификаторы процесса. Один относится к текущему процессу, а другой - к родительскому процессу. Затем, как и в первом примере, выведите оба идентификатора через их переменные.

Int pid_t = getpid ();
Int ppid_t = getppid ();

Это две основные функции всего кода. Теперь, после создания файла, следующим шагом будет его компиляция и запуск. Скомпилируйте с помощью GCC в команде. После компиляции запустите его на терминале Ubuntu.

$ GCC –o code1 code1.c
$ ./code1

Выходные данные показывают, что сначала отображается идентификатор процесса, а затем отображается идентификатор родительского процесса.

Пример 3
Все процессы запускаются и выполняются параллельно. Родительский и дочерний процессы выполняют все оставшиеся строки вместе. Оба дают результат одновременно. Но при использовании вилки в коде C, если эта функция возвращает значение меньше 0, это означает, что вызов функции завершен.

Рассмотрим новый файл с двумя библиотеками в соответствующем заголовке. Здесь используется условие, в котором мы использовали оператор if-else. В основной программе указано, что если значение fork имеет значение –ive, будет отображаться сообщение о том, что идентификатор процесса не выполнен и не будет получен. Если ситуация ложная, компилятор перейдет к другой части условия. В этой части получается идентификатор процесса, затем мы отобразим этот идентификатор процесса и отобразим сообщение о том, что получен идентификатор процесса. Здесь мы процитируем оператор if-else исходного кода.

Теперь снова скомпилируйте код и запустите его.

./code2

Выходные данные показывают, что часть else была выполнена и распечатает идентификатор процесса, а затем отобразит сообщение PID.

Пример 4

Это еще один пример объяснения той же концепции. Функция Fork () возвращает два разных значения. В случае дочернего процесса значение равно 0, которое должно быть возвращено. В то же время значение в случае родительского процесса - это идентификатор нового дочернего процесса.

В этом примере используется то же условие if_else. Но здесь применяются два условия. Сравнение PID, который меньше нуля, и другой равный нулю. Если PID меньше нуля, появится сообщение об ошибке. Если PID равен нулю, это означает, что это дочерний процесс, а часть else показывает, что если PID больше нуля, это родительский процесс.

Теперь скомпилируйте и запустите код.

$ gcc –o code3 code3.c
$. / code3

Из выходных данных мы видим, что сначала печатается часть else, что означает, что идентификатор процесса больше 0.

Пример 5
Хорошо, это последний пример, в котором мы попытались суммировать все коды, описанные выше, чтобы объяснить работу этой функции. Мы также можем использовать циклы с функциями fork () для использования функций getpid (). Мы можем использовать циклы для создания множества дочерних процессов. Здесь мы должны использовать значение 3 в цикле.

Мы снова должны использовать условный оператор в коде. Цикл for начинается с первого и повторяется до 3rdперемена.

Теперь сохраните файл и запустите его. Есть еще один простой способ скомпилировать и выполнить код только в одной команде. То есть.

$ GCC codes5.c –o s & ./code5

Теперь перейдем к выводу кода. Идентификатор родительского процесса одинаков для всех дочерних процессов. Это означает, что все эти процессы принадлежат одному родителю. Эти процессы выполняются один за другим, так как цикл ограничен 3. Будет выполнено только 3 итерации.

Заключение

Эта статья содержит базовые знания и работу функции getPID () в командах Linux. Уникальный идентификатор присваивается каждому процессу с помощью этой функции.