Как дважды вызвать дочерний процесс - PullRequest
0 голосов
/ 21 марта 2019

Есть ли способ заставить дочерний процесс запустить свой код дважды?

Например, если у нас есть этот код

pid_t child;
child=fork();
if (child<0) printf("error");
else if (child==0) printf("Hello world, I am the child");
else printf("This is the father");

После остального, как я могу вызвать дочерний процесс по порядкуснова напечатать "Hello world ..."?

Ответы [ 2 ]

0 голосов
/ 21 марта 2019

Я просто догадываюсь здесь, но, может быть, вы хотите, чтобы дочерний процесс выполнял несколько операторов самостоятельно?Тогда вы можете сделать это, поместив их все в блок if (child == 0):

if (child == 0)
{
    // Here you can have as many statements as you want
    // The process will continue to run until you explicitly call exit
    // or until you return from the main function

    // If you need to do multiple things, then my suggestion is that
    // you put this code in a function that you call
    // Then when the function returns you call exit to end the process

    exit(0);  // Exit the child process only, the parent can still continue
}
0 голосов
/ 21 марта 2019

У вас есть переменная child, в которой хранится возвращаемое значение функции fork () (предположительно, идентификатор процесса, но pid_t может хранить все 32-разрядные числа со знаком, которые вы хотите сохранить).Затем вы сравниваете это значение с int (0).Если вы хотите снова напечатать «Hello world ...», просто добавьте одну строку кода с помощью printf () или if (...) printf ().Надеюсь, я понял, что вы спросили, и смог помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...