Какие системные вызовы могли создать новый процесс?

Можно проверить использование страницы справочника man ps узнать то, что означают столбцы. Linux ps страница справочника, например, дает:

c              C           integer value of the processor utilisation percentage.
                           (see %cpu)
tname          TTY         controlling tty (terminal). (alias tt, tty).
args           COMMAND     command with all its arguments as a string. May chop as
                           desired. Modifications to the arguments are not shown.
                           The output in this column may contain spaces.
                           (alias cmd, command)
cmd            CMD         see args. (alias args, command)

Если TTY ? это означает, что процесс не связан ни с каким пользовательским терминалом.

3
26.11.2013, 16:08
1 ответ

Немного путание. fork системный вызов, который создает новый процесс путем копирования изображения родительского процесса. После этого, если дочерний процесс хочет быть другой программой, он называет часть из exec системные вызовы семейства, такой как execl. Если Вы, например, хотите работать ls в оболочке, ветвления оболочки новый дочерний процесс, который затем звонит execl("/bin/ls").

Если Вы видите две программы и их pidотличаются, проверяют их ppid(породите идентификатор). Например, если p1 ppid из процесса, чей pid p2, это означает, что процесс, идентификатор которого p1 разветвленный тот процесс. Но если первый процесс ppid не то же что другой процесс pid, это означает, что та же команда выполняется дважды.

Если pid и ppid то же, но tid(распараллельте идентификатор), отличаются, это означает, что это - один процесс, который имеет 2 потока.

Я думаю, что создание Вашей собственной оболочки является точкой хорошего начала.

5
27.01.2020, 21:16
  • 1
    Потоки имеют отличающийся PID в моей системе, таким образом, это зависит библиотеки C и ядра. –  MABC 27.11.2013, 01:31

Теги

Похожие вопросы