自プロセスにSIGINTを送るコードは、どのように書いたらいいですか?
また、自分にSIGINTを送ると、シグナルハンドラは反応するのでしょうか・・・?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答1件
0
ベストアンサー
Linux/MacintoshなどUnix系OS前提の話ですね?
シグナルを送るにはkillシステムコール、自プロセスに送るなら自プロセスのプロセスIDを調べるためにgetpidを使えばよいです。
C
1#include <stdio.h> 2#include <sys/types.h> 3#include <unistd.h> 4#include <signal.h> 5 6int main() 7{ 8 pid_t pid = getpid(); 9 printf("pid = %d\n", pid); 10 fflush(stdout); 11 kill(pid, SIGINT); 12 printf("killed\n"); 13 return 0; 14}
bash
1$ gcc t.c 2$ ./a.out 3pid = 9360 4$
SIGINTで割り込まれるとデフォルト動作によりプロセスが死にます。そんなわけでkillシステムコールの後に書いた"killed"が印字されないわけです。
自分にSIGINTを送ると、シグナルハンドラは反応するのでしょうか・・・?
尋ねる前にまずできる限り調べ実際にやってみましょう。ハンドラーはsigactionシステムコールで設定しますのでまずはsigactionの使い方を調べるところからですね。「反応するのが妥当だろう」と考えた上で、実際にやってみて「期待に反して反応しなかった」といった問題・疑問が生じた時点で調べたり質問したりするのがよいでしょう。
なんでもかんでも尋ねるよりはできる限りやってみることが(特に初心者の時には)貴重な経験になると思います。ある程度経験がついてきたら「こう振る舞うはずだ」と想像できたり「実際にやるよりドキュメントを確認した方が早くて確実」と思うようにになっていきます。そうなるまでは自分で調べたり手を動かして実験するなどして経験を積みましょう。そうしないとなかなかプログラミングができるようにはならないと思います。
投稿2019/04/14 05:22
総合スコア18404
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/04/14 05:38 編集