Я запускаю дочерние процессы в C, и я хочу приостановить, а затем запустить один и тот же дочерний процесс. Не совсем уверен, как лучше описать мою проблему, так как я новичок в этом, но вот выстрел.Запуск/приостановка дочерних процессов в C?
Так что я знаю, что вы можете запустить процесс после выхода другого процесса с помощью waitpid
. Но что, если процесс, которого я жду, не существует при создании процесса, который выполняет ожидание. Поэтому в этом случае я думаю о приостановке процесса, который выполняет ожидание, и когда процесс, который ждет, создается, а затем завершается, он будет вызывать процесс, который ожидает ожидание. Итак, как бы вы это сделали? Опять же, я не знаком с этим, поэтому я не знаю, подходит ли это для этого.
редактировать: То, что я пытаюсь сделать
Я использую дочерние процессы для запуска команды через execvp()
параллельно, так что если у меня есть последовательность sleep 1; sleep 1;
, общее время сна будет 1 секунда. Однако есть случаи, когда я пытаюсь выполнить параллельный echo blah > file; cat < file;
, и в этом случае я предполагаю, что cat
читает файл после echo
входов blah в файл. Поэтому я должен ждать echo
, чтобы закончить, чтобы сделать cat
. Для этого есть более определенные особенности, но обычно предполагают, что для любой команды с выходом в файл должна быть ожидаема любая команда, которая читает файл позже в скрипте.
Какая у вас внешняя проблема? Зачем вам нужен процесс ожидания? –
Вы получаете PID, когда вы вызываете fork(); Если вы не видели руководство Beej, я бы предложил следующее: http://beej.us/guide/bgipc/output/html/multipage/fork.html Если вам нужно знать, когда ребенок закончен, вам понадобится своего рода МПК. – EdH
это зависит от ОС, его не является частью стандарта C, поэтому вам нужно быть немного более конкретным в отношении того, что вы пишете. Я предполагаю * nix. –