これは私のコードのスニペットです:
pid_t children[MAX_PIPES];
for (i = 0; i < numPipes; i++)
{
pid_t child_pid = fork();
children[i] = child_pid;
switch(child_pid)
{
case 0:
// Some code thats executed in the child that executes execv()
break;
case -1: // Unable to create child
perror("fork");
break;
}
}
// Wait for children
for (j = 0; j < numPipes && children[j] != 0; j++)
{
if (background)
waitpid(children[j], &status, WNOHANG);
else
waitpid(children[j], &status, 0);
}
現在、execv() を 1 回だけ呼び出すと正常に動作しますが、既にフォークされた子プロセス内で execv() を使用して複数のコマンドを次々と実行しようとしています。
その機能を追加するにはどうすればよいですか? 子内のループ内に別の fork() を追加しようとしましたが、成功しませんでした。
どんなアイデアでも大歓迎です。ありがとう