看看process signal和process handle命令.例如,有一个类似的程序
#include <signal.h>
#include <stdio.h>
#include <unistd.h>
void handler (int in)
{
puts ("signal handled");
}
int main()
{
signal (SIGUSR1, handler);
while (1)
sleep (1);
}
Run Code Online (Sandbox Code Playgroud)
如果我在另一个窗口中用lldb附加到这个(所以我可以在进程运行时键入lldb命令 - 如果我在lldb下运行该程序,程序运行时的输入/输出将转到程序,而不是lldb),我可以告诉lldb在发送SIGUSR1信号时不会停止进程执行(默认是停止执行所以你需要continue再次执行)并且我可以发送信号.例如
(lldb) pro handle -s false SIGUSR1
NAME PASS STOP NOTIFY
========== ===== ===== ======
SIGUSR1 true false true
(lldb) pro signal SIGUSR1
Process 6628 stopped and restarted: thread 1 received signal: SIGUSR1
Run Code Online (Sandbox Code Playgroud)
我会signal handled在另一个窗口看到输出,显示我的信号处理程序被调用.