私はしばらくこれに苦労しており、あきらめたので、助けを求めています。
SIGINT (Ctrl + C) を永続的に待機するプログラムを作成する必要があり、受信すると、最後の世代のプロセスが X の子を作成します。あなたはそれが「Xary」ツリーだと言うでしょう (私が何か間違っていたら、私を訂正してください)。
そう:
SIGINT を 1 回受信した場合:
$ pstree -p 6227
example(6227) example(6229)
example(6230)
2回受信した場合:
$ pstree -p 6227
example(6229) example(6235)
example(6236)
tarea2(6227)
example(6230) example(6234)
example(6237)
等々...
これまでのところ、SIGINT をキャッチすることはできますが、何度も失敗したため、ツリーの作成方法については何もわかりません。
だから、これは私のコードです:(未使用のインクルードは無視してください)
#include <stdio.h> /* libreria estandar */
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <signal.h>
#include <sys/types.h>
#include <sys/wait.h>
#define X 2
void reproducir(int signum)
{
if (signum == SIGINT)
switch(signum)
{
case SIGINT:
/*SOMETHING I'VE BEEN TRYING TO FIGURE OUT*/
}
}
int main(void)
{
printf("PID: %d\n", getpid());
while (1)
{
if (signal(SIGINT, reproducir) == SIG_ERR)
{
perror("error\n");
exit(EXIT_FAILURE);
}
}
}
事前に感謝します。文法の間違いについては申し訳ありません。スペイン語のネイティブ スピーカーです。