2016-05-23 9 views
-2

信号の構文を見ると、信号を別のpid(pid_t)に渡す柔軟性がないことがわかります。プロセスは無視したり、デフォルトを実行したり、アクション自体をカスタマイズすることしかできません。信号を別のプロセスに渡すことができる方法は何ですか? (私はpthreadsについて話していません)。シグナルを他のプロセスに渡すには?

+2

「man kill」はあなたの質問に答えますか? – SergeyA

+0

私はシェルコマンドを使用してシグナルを渡すか、またはプロセスを殺すか、シグナルを送信するためにexecを使用するオプションを除外しています – theartist33

+0

@SergeyA私は上記のコメントでkillコマンドを探していません – theartist33

答えて

4

あなたはkill(2) system call(ないkillシェルコマンドを)欲しい:

#include <sys/types.h> 
#include <signal.h> 

int kill(pid_t pid, int sig); 

kill()システムコールは、任意のプロセス グループもしくはプロセスにシグナルを送信するために使用することができます。

pidが正の場合、信号sigは、ID がpidで指定されたプロセスに送信されます。

pidが0の場合、呼び出しプロセスのプロセスグループのすべてのプロセスにsigが送信されます。

pidが-1の場合、プロセス1 (init)を除く、 呼び出しプロセスがシグナルを送信する権限を持つすべてのプロセスにsigが送信されますが、以下を参照してください。

pidが-1より小さい場合、IDが-pidのプロセスグループ 内のすべてのプロセスにsigが送信されます。

sigが0の場合、信号は送信されませんが、エラーチェックはまだ実行されています( )。これはプロセスID またはプロセスグループIDの存在を確認するために使用できます。

man killを実行すると、シェルコマンドであるkill(1)が表示されます。システムコールのマニュアルページを入手するには、man 2 killを実行します。

関連する問題