プロセスを二重分岐するとき、分離されたプロセスはまだ同じプロセスグループにありますか?

プロセスを二重分岐するとき、分離されたプロセスはまだ同じプロセスグループにありますか?

タイトルのボーナスの質問で、プロセスグループが子孫を持つことはできますか?

ベストアンサー1

実験を通して非常に簡単に知ることができます。私はここで「二重十字」があなたが意味するものであると仮定していますただ二重交配。次のプログラムを検討してください。

#include <stdio.h>
#include <unistd.h>

int main(void)
{
    printf("original pid/pgid: %d/%d\n", getpid(), getpgrp());

    if (fork() != 0) { return 0; }
    printf("after first fork pid/pgid: %d/%d\n", getpid(), getpgrp());

    if (fork() != 0) { return 0; }
    printf("after second fork pid/pgid: %d/%d\n", getpid(), getpgrp());

    return 0;
}

プログラムはプロセスIDとプロセスグループIDを印刷して分岐し、サブプロセスはそれを再印刷して再分岐し、サブプロセスは再印刷します。

プログラムの実行例:

$ ./a.out
original pid/pgid: 7306/7306
after first fork pid/pgid: 7307/7306
after second fork pid/pgid: 7308/7306

ご覧のとおり、プロセスグループIDは四半期間で変更されません。

おすすめ記事