私はSIGINT(CTRL + C)をキャッチしようとしています。 私は、ユーザーがCTRL + Cキーを押して子プロセスを終了させるが、親プロセスは正常に続行したいと思う。 自分のプログラムに子プロセスがある場合は正常に動作しますが、子プロセスがない場合は「セグメント化エラー」が発生します。セグメンテーションエラーシグナルハンドラsigint
私はこれを行っている:
void sig_handler(int signo);
//========================================
int main()
{
// CTRL + C => SIGINT handler
struct sigaction act;
act.sa_handler = sig_handler;
sigfillset(&act.sa_mask);
act.sa_flags = 0;
// Catch the signal
sigaction(SIGINT, &act, NULL);
...
// done some checks and then fork a child.
}
// SIGINT handler
void sig_handler(int signo)
{
// dont know what to write here
}
あなたの子プロセスをフォークする前に、現在のプロセスIDを取得し、あなたの子プロセスをフォークし、そのプロセスIDを取得して、ctrl cが親プロセスIDかどうかをチェックします。 – FZE
セグメンテーションフォルトはどのコード行にありますか? –