как форк работает с логическими операторами - PullRequest
0 голосов
/ 06 октября 2010
main()
{
    if (fork() || (fork() && fork()))
    printf("AA\n");
    else if (!fork())
    printf("BB\n");
    else
    printf("CC\n");
}

Я запустил следующий код и получил результаты AA AA CC BB CC BB. Хотя я понимаю, как работает fork, я не понимаю, что он делает с логическими операторами. Учитель в нашем классе хочет, чтобы мы дали ответы на эту домашнюю работу. Хотя я могу легко запустить эту программу, я хотел бы знать, что именно происходит. Может кто-нибудь объяснить или направить меня на сайт, чтобы узнать, что происходит при использовании форка с логическими операторами.

Я довольно новичок в c / c ++, так что будьте спокойны со мной. Спасибо

1 Ответ

5 голосов
/ 06 октября 2010

fork() возвращает 0 (false) для дочернего процесса и ненулевое (true) для родительского процесса.

Вы можете применять логические операторы к этим логическим значениям.

Помните, что логические операторы будут закорачиваться, поэтому 0 || fork() вообще не будет вызывать fork.

Если вы внимательно прочитаете код и подумаете о том, что будет возвращать каждый вызов fork(), вы сможете понять его.

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