Почему файл exec генерирует 4 процесса в Linux?

Я создаю свой RTAI-модель-источник (сгенерированный simulink) в CygWin с gcc-linux-4.1 (кросс-компилятор CygWin) в Windows и успешно сгенерирую ELF. и ELF работает правильно на Ubuntu.

После того, как ELF работает правильно на Ubuntu, в системном мониторе есть четыре процесса с тем же именем, но с другим идентификатором процесса.

Но если я создам свой источник с gcc в Linux, он генерирует только 1 процесс, поэтому я думаю, что fork() или exec() не могут быть вызваны.

Как один файл exec может выполнить четыре процесса?

ps -elF показывает:

 FS UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD 4 S root 3679 3314 0 57 - - 4362 hrtime 17:44 pts/1 00:00:00 /root/Test/test 5 S root 3680 3679 0 57 - - 4362 poll_s 17:44 pts/1 00:00:00 /root/Test/test 5 S root 3681 3680 0 56 - - 4362 rt_sch 17:44 pts/1 00:00:00 /root/Test/test 5 S root 3682 3680 0 -40 - - 4362 rt_sch 17:44 pts/1 00:00:00 /root/Test/test 

  • mysql-server-5.5 неудовлетворенных зависимостей каждый раз при запуске apt-get
  • Как APT справляется с разными программами с тем же именем?
  • Почему я получаю «rsync: не удалось установить время на ...: операция не разрешена (1)» ошибка на Ubuntu 10.10 с SME Server 7.4?
  • Жесткий диск USB не будет перезагружаться после отключения питания
  • UTF-8 не работает над SSH
  • могу ли я использовать папку udev для копирования моих файлов, чтобы я мог освободить свой / dev / sda1
  • Получите среднесуточные значения от sar
  • Автоматически применять исправление модуля и компилировать ядро ​​при обновлении?
  • One Solution collect form web for “Почему файл exec генерирует 4 процесса в Linux?”

    Для некоторых процессов совершенно нормально создавать другие копии после выполнения, обычно для повышения производительности путем параллельного выполнения. Что касается того, как это работает, процесс fork (2) (он может или не может также exec (2) другой копией себя, в зависимости от способа его реализации). Посмотрите man 2 fork и man 2 exec .

    По сути, новые процессы в Linux сначала создаются как копии программы, вызывающей их, используя fork (2). После этого они могут заменить образ процесса, используя exec (2). Это обычный рабочий процесс при использовании, например, оболочки для выполнения команд. Если это один и тот же процесс, не может быть последующего exec – также возможно выполнить код, который обусловлен тем, что он находится в определенном дочернем элементе без необходимости выполнять.

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

    Linux и Unix - лучшая ОС в мире.