0
我希望我的程序等待SIGUSR1的信號,但目前不起作用。等待信號
,將捕獲的信號類:
#include<signal.h>
#include<unistd.h>
int main(int argc, char *argv[]){
int pid;
pid=getpid();
printf("PID: %d\n", pid);
pause();
void my_handler(int signum)
{
if (signum == SIGUSR1)
{
printf("Received SIGUSR1!\n");
}
}
signal(SIGUSR1, my_handler);
}
計劃,這將使信號:
#include<stdlib.h>
#include<signal.h>
#include<unistd.h>
#include<time.h>
int main(int argc, char *argv[]){
int i;
printf("Filename: %s, Receiver PID: %s\n", argv[1], argv[2]);
FILE *fp;
fp=fopen(argv[1], "w");
kill(atol(argv[1]),SIGUSR1);
}
}
你會先運行接收器像./receiver 1
那麼之後你找到您要運行的接收器的PID(例如3375)./signaler 1 3375
暫停是我用來等待的功能,但它不工作,sigwaitinfo或sigsuspend工作?
這是一個糟糕的剪切/粘貼或者你有你的信號處理程序嵌套在main()?在其他問題中,'argv [2]'是PID傳遞給'kill',而不是'argv [1]'。 – 2013-02-28 20:01:27