私が遭遇するほとんどの例は、次のように fork する方法を示しています。
main()
{
int pid;
pid = fork();
// child
if (pid == 0)
{
...
}
// Parent
else if (pID > 0)
{
...
}
}
2 人の子供をフォークする方法を示すものもあります。
pid = fork();
// Child
if ( pid==0 )
{
...
}
// Parent
else if ( pid>0 )
{
pid=fork();
// Second child
if ( pid==0 ){
...
}
}
そして、ここに5人の子供をフォークしようとする私の試みがあります...
pid = fork();
// Child
if ( pid==0 )
{
...
}
// Parent
else if ( pid>0 )
{
pid=fork();
// Second child
if ( pid==0 ){
...
}
// Parent
else if ( pid>0 )
{
pid=fork();
// Third child
if ( pid==0 ){
...
}
// Parent
else if ( pid>0 )
{
pid=fork();
// Fourth child
if ( pid==0 ){
...
}
// Parent
else if ( pid>0 )
{
pid=fork();
// Fifth child
if ( pid==0 ){
...
}
}
}
}
}
質問:
私の言いたいことは、これは狂気だということです。ループしてさまざまな数の子を作成する (つまり、コマンド ライン引数で指定する) よりクリーンな方法はありますか?
注: 私の仕事は、各プロセスが異なるコンピューターに信号を送ることを伴うため、子供たちが自分自身を区別することが非常に重要です (つまり、「こんにちは、私は 6 番の子供です...」と書きます)。現在、セマフォとターゲット コンピューターの配列を使用してそうしています。私が望むのは、プロセスのインデックス 1..N を増やすことです。