プログラムに 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(ex 3375)を見つけた後、最初に受信機を実行します./signaler 1 3375
一時停止は待機に使用している機能ですが、機能していません。sigwaitinfo または sigsuspend は機能しますか?