Способы передачи данных в/из процесс/а проще разбить по этапам его жизни:

  1. Создан (Forking): Процесс создаётся с помощью системного вызова fork().

  2. Выполняется (Executing): После создания процесс начинает выполняться, часто используя системный вызов exec() для запуска программы.

  3. Остановлен (Stopped): Выполняющийся процесс может быть временно остановлен сигналами, такими как SIGSTOP.

    • Взаимодействие с процессом на этом этапе:
      • Сигналы: Остановленный процесс может быть возобновлен сигналами, такими как SIGCONT.
  4. Зомби (Termination): Когда процесс завершает выполнение, он становится зомби-процессом до тех пор, пока его родительский процесс не прочитает его статус завершения.

    • Взаимодействие на этом этапе:
      • Код возврата: Родительскому процессу передаётся код возврата — это такое целое число, которое указывает как завершился процесс (успешно или с ошибками).
  5. Завершен (Terminated): Процесс полностью завершается и удаляется из таблицы процессов после того, как родительский процесс прочитает его код возврата, обычно используя wait().