私は同じような質問をthisのリンクで読んだが、それは私の問題を解決しなかったので、繰り返しの質問にお詫び申し上げます。Cでシグナルハンドラから戻り値を取得するにはどうすればよいですか?
私はプログラムが実行されるときに基本的にCtrl + CとCtrl + Zを受け取る次のコードを持っていますが、端末から信号を受け取ったときに2を返すようにしたいと思います。
リンクでは、typedefを使用していて、C言語にはまったく新しいことがありました。私が持っているコードでは、その実装方法はわかりません。ここで
はコードです:
#include <stdio.h>
#include <signal.h>
/* Signal Handler for SIGINT */
void sigintHandler(int sig_num) {
signal(SIGINT, sigintHandler);
printf("\n Cannot be terminated using Ctrl+C \n");
fflush(stdout);
}
/* Signal Handler for SIGTSTP */
void sigtstpHandler(int sig_num) {
signal(SIGTSTP, sigtstpHandler);
printf("\tCtrl+z received\n");
fflush(stdout);
}
int main (void) {
signal(SIGINT, sigintHandler);
signal(SIGTSTP, sigtstpHandler);
while(1) {} //infinite loop.
return 0;
}
はあなたの時間/助けをいただき、ありがとうございます。
編集:私は1だけではなく、ボイドを返すために、現在
void sigintHandler(int sig_num)
void sigtstpHandler(int sig_num)
ある2シグナルハンドラ関数にしたいと思います。だから、私は何かをすることができるように
int sigIntReturn = signal(SIGINT, sigintHandler);
の主な機能です。
質問が分かりません。 1に何を返しますか? –
@DavidSchwartz申し訳ありません。私は私の質問に編集を加えました。読んでください。 – user100000
標準では 'void'が必須です。値を返すことはできません。代わりに( 'volatile')グローバル変数を使用してください(' errno'のように)。 – pmg