pthread_createユーティリティを使用して 3 つのスレッドを作成しまし た。を使用してスレッドにシグナルを送信できます
kill -SIGUSR1 thread-id。
ps -eLFコマンド ( LWP フィールド )を使用してスレッド ID を取得し ました。
不思議なんだけど:
なぜ殺す必要があるのですか?
kill コマンドを使用してスレッド グループ ID にシグナルを送信するにはどうすればよいですか? グループ ID を見つけるにはどうすればよいですか?
pthread_createユーティリティを使用して 3 つのスレッドを作成しまし た。を使用してスレッドにシグナルを送信できます
kill -SIGUSR1 thread-id。
ps -eLFコマンド ( LWP フィールド )を使用してスレッド ID を取得し ました。
不思議なんだけど:
なぜ殺す必要があるのですか?
kill コマンドを使用してスレッド グループ ID にシグナルを送信するにはどうすればよいですか? グループ ID を見つけるにはどうすればよいですか?
スレッド グループ識別子 (TGID) は、実際にはプロセスのメイン スレッドのタスク識別子です。また、メインスレッドのタスク識別子は、プロセス全体のプロセス識別子です。これは、同じプロセス内の任意のスレッドからgetpid()によって返される値です。つまり、gettid()は、メイン スレッドのgetpid()と同じ値を返します。
このコマンドでは、 tgid書式指定子psを使用してスレッド グループ識別子を取得します。次のコマンドを使用すると、pid = tgid = tidの行がプロセスのメイン スレッドであることがわかります。ps
$ ps -eLo pid,tgid,tid,comm
PID TGID TID COMMAND
890 890 890 rsyslogd <-- Main thread = thread group id
890 890 915 in:imuxsock
890 890 916 in:imklog
890 890 917 rs:main Q:Reg
891 891 891 snapd <-- Main thread = thread group id
891 891 934 snapd
891 891 935 snapd
891 891 936 snapd
891 891 937 snapd
891 891 938 snapd
891 891 1000 snapd
891 891 1006 snapd
891 891 1007 snapd
891 891 1009 snapd
891 891 1010 snapd
891 891 1042 snapd
891 891 1043 snapd
891 891 1062 snapd
891 891 1063 snapd
891 891 1064 snapd
891 891 1542 snapd
891 891 1544 snapd
[...]
killこれはシグナルを送信するためのコマンドであるため、必要です。デフォルトではプロセスを強制終了しますが、ご存知のように他のシグナルを送信できます。
を使用killall -s <signal number> <executable name>して、同じプロセス名 (番号ではない) を共有するすべてのプロセスにシグナルを送信できます。