#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来打印我的计数。
发布于 2013-07-19 05:20:49
您可以使用kill -SIGHUP <pid>,其中<pid>是代码的进程ID。
发布于 2013-07-19 05:21:54
从技术上讲,在信号处理程序中执行I/O是不安全的,最好设置一个标志,观察它,并根据该标志进行打印。在posix系统上,您应该能够从命令行“终止-HUP”来发送信号。
发布于 2013-07-19 05:21:35
在控制台中尝试:
ps -a读出你的程序的pid
kill -s HUP target_pidHere you have一个带有信号列表的kill手册页面。
编辑:更简单,你可以使用killall:
killall -HUP nameofyourbinaryhttps://stackoverflow.com/questions/17734083
复制相似问题