C/C++ 上の Unix で 3 つの異なるプロセスをシグナルと同期するにはどうすればよいですか? 私が必要です:最初のプロセスが2番目のプロセスを開始します。2 番目のプロセスが 3 番目のプロセスを開始します。3 番目のプロセスが開始された後、すべてのプロセスを 1 - 2 - 3 の順に強制終了します。
これに待機、シグナル、一時停止などの機能を使用することについてはわかりません。私たちを手伝ってくれますか?ありがとう。
#include <iostream>
#include <sys/types.h>
#include <sys/wait.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>
using namespace std;
int main (int argc, char * const argv[]) {
pid_t three_pid;
pid_t second_pid;
pid_t first_pid;
cout << "child 1 is started" << endl;
pid_t pid;
if ((pid = fork()) == -1)
{
cout << "fork errror" << endl;
exit(EXIT_FAILURE);
}
else if (pid == 0)
{
second_pid = getpid();
cout << "child 2 is started" << endl;
pid_t pid2;
if ((pid2 = fork()) == -1)
{
cout << "fork 2 error" << endl;
exit(EXIT_FAILURE);
}
else if (pid2 == 0)
{
three_pid = getpid();
cout << "child 3 is started" << endl;
cout << "child 3 is TERMINATED" << endl;
}
else
{
cout << "child 2 is TERMINATED" << endl;
}
}
else
{
first_pid = getpid();
cout << "child 1 is TERMINATED" << endl;
}
}