皆さん、私は道に迷ったようです。無限ループ内の子でカウントをインクリメントできるはずであり、親がシグナルを送信するたびにカウントを出力する必要があります。これは1秒ごとにする必要があります。コードを書きましたが、フォークを使用した後、子プロセスと親プロセスが同時に実行されると思いましたが、そうではないため、この問題に取り組む方法がわかりません。どんな助けでも素晴らしいでしょう
2 に答える
1
あなたが説明していることは、理論的にはうまくいくはずです。
fork()
プロセスに慣れていない場合、特に を使用して、並列コードを記述するのは難しい場合があります。
これが私の提案です。たとえば、コード全体に一連のデバッグ出力を追加します。
int pid = fork();
if(pid == -1) {
printf("Fork failed!\n");
} else if (pid) {
printf("I'm the parent!\n");
// Do stuff
printf("Parent exiting\n");
exit(0);
} else {
printf("I'm the child!\n");
// Do stuff
printf("Child exiting\n");
exit(0);
}
次に、プログラムが本来の動作をしているかどうかを確認できます。
また、シグナル ハンドラーにステートメントを追加して、printf()
それが呼び出されていることを確認できるようにします。
于 2012-04-26T07:44:05.913 に答える