2017-11-10 7 views
0

具体的に送信された信号にプロセスがどのように応答できるかを知っています(例えば、SIGINTSIGTERMSIGUSR2など)。しかし、別のプロセスに送られたシグナルをプロセスに通知することはできますか?他のプロセスがシグナルを受信したときに通知する方法はありますか?

+0

なぜ尋ねますか? **動機づけするために**あなたの質問を**編集してください。いくつかの臭い[XY問題](http://xyproblem.info) –

+0

私はXY問題が最近受けた注目のファンではありません。あなたの非常に有益な回答とは異なり、多くのSOユーザはOPの質問をすばやく却下し、代わりにOPだけでは手掛かりがないという結論にジャンプします。確かに、OPの質問で*余分な動機は物事を明確にすることができますが、それは短く、簡潔で明確な質問のメリットとバランスをとる必要があります。この質問は短くて明確で、あなたの答えは話題になっており、よく書かれています。将来の読者は、今日ここに書かれたことと、それがその状況に当てはまるかどうかを理解する時間を無駄にするでしょう。 –

+0

私はあなたがいくつかの追加の目標(またはモチベーション)を念頭に置いていると確信しています。あなたはすでに[signal(7)](http://man7.org/linux/man-pages/man7/signal.7.html)を読んでいるはずです。文章(またはそれらのいくつか)でそれらを言及すると、*あなたの質問(IMHOが短すぎます)が*たくさん改善されます。 **なぜ尋ねるのですか?** –

答えて

2

標準のUnixまたはPOSIXでは、別のプロセスに送信された信号について通知することはできません。 signal(7)およびsignal-safety(7)を参照してください。

しかし、waitpid(2)と友人は、child processが信号で終了したかどうかを知ることができます。 killpg(2)は、process groupに信号を送信します(また、kill(2)は、負のターゲットPIDを持つ信号も含みます)。 getrusage(2)はシグナルを数えることができます(他のプロセスによって受信されます)。 proc(5)を使用して、他のプロセスに関する情報を照会することもできます。 signalfd(2)またはptrace(2)などを使用することもできます。

信号はinter-process communicationという非常に限られた形式ではありません。より良い方法があります。

ところで、sigaction(2)SA_SIGINFOで使用することができ、その後、あなたのハンドラは、ので、あなたは多くの情報を得るucontext_tsiginfo_t、別のポインタを取得します。

プロセスグループとセッションは関連していることに注意してください。 setpgid(2),setsid(2),credentials(7)も参照してください。また、端末および疑似ttyに関連しています(tty demystifiedおよび約job controlを参照)。

あなたのother質問はこれらについてのことです。しかし、そこには何も言及していません。

+0

総合的な答えをありがとう、これは非常に有用な情報です。 –

+0

あなたはそれを動機付けるために質問を改善できますか? –

関連する問題