Linux命令"kill"可以向线程发送信号



我使用实用程序创建了 3 个线程pthread_create。 我可以使用
向线程发送信号 kill -SIGUSR1 thread-id .

我使用ps -eLF命令(LWP 字段)获得了线程 ID。

我想知道:

  1. 为什么我们需要杀戮?

  2. 如何使用 kill 命令向线程组 id 发送信号? 如何找到组 ID ?

线程组标识符 (TGID) 实际上是进程主线程的任务标识符。而主线程的任务标识符是整个进程的进程标识符。这是 getpid() 从同一进程中的任何线程返回的值。换句话说,gettid() 在主线程中返回与 getpid() 相同的值。

使用

ps 命令,使用 tgid 格式说明符获取线程组标识符。使用以下 ps 命令,我们可以看到 pid = tgid = tid 的行是进程的主线程:

$ 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> 向共享相同进程名称(而不是编号)的所有进程发送信号。

最新更新