#include <stdio.h>
#include <stdlib.h>
#include <sys/signal.h>
#include <string.h>
void handler (int sig);
int count;
int main() {
struct sigaction act;
memset (&act, 0, sizeof (act));
act.sa_handler = handler;
if (sigaction (SIGHUP, &act, NULL) < 0) {
perror ("sigaction");
exit (-1);
}
int count = 0;
while(1) {
sleep(1);
count++;
}
}
void handler (int signal_number){
printf ("count is %d\n", count);
}
我认为我这样做是正确的,我如何在命令行中调用sighup?它需要调用sighup来打印我的计数。
答案 0 :(得分:4)
从技术上讲,在信号处理程序中进行I / O是不安全的,最好设置一个标志,注意它,然后根据标志进行打印。 在posix系统上,你应该能够从命令行“杀死-HUP”来发送信号。
答案 1 :(得分:2)
您可以使用kill -SIGHUP <pid>
,其中<pid>
是您代码的进程ID。
答案 2 :(得分:1)
在控制台中尝试:
ps -a
宣读你的节目的pid
kill -s HUP target_pid
Here you have一个带有信号列表的kill手册页。
编辑:更简单的是你可以使用killall:
killall -HUP nameofyourbinary