主题:一个进程间发送消息的小程序,请大家指错
这个程序中子进程每隔1秒向父进程发送一个SIGUSR1消息,父进程收到消息后打印出系统当前时间,十秒后子进程退出并向父进程发送SIGUSR2,父进程收到SIGUSR2后退出
不知道怎么回事,明明发送了,父进程就是没反映,请大虾帮忙!
THANK YOU!!!!!!!
#include <time.h>
#include <stdio.h>
#include <signal.h>
void my_sighandler(int signum)
{
time_t nowtime;
struct tm *tim;
if(signum==SIGUSR1)
{
time(&nowtime);
tim=localtime(&nowtime);
printf("\n%d-%d-%d,%d:%d:%d\n",tim->tm_mon,
tim->tm_mday,
tim->tm_year+1900,//transform 106 to 2006
tim->tm_hour,
tim->tm_min,
tim->tm_sec);
}
else if(signum==SIGUSR2)
{
printf("quit!\n");
exit(0);
}
}
int main()
{
int i;
int pid;
signal(SIGUSR1,my_sighandler);
signal(SIGUSR2,my_sighandler);
pid=fork();
if(pid<0)
{
printf("fork error!\n");
exit(1);
}
else if(pid==0)
{
for(i=0;i<10;i++)
{
kill(getppid(),SIGUSR1);
sleep(1);
}
kill(getppid(),SIGUSR2);
}
else if(pid>0)
{
sleep(15);
}
}
不知道怎么回事,明明发送了,父进程就是没反映,请大虾帮忙!
THANK YOU!!!!!!!
#include <time.h>
#include <stdio.h>
#include <signal.h>
void my_sighandler(int signum)
{
time_t nowtime;
struct tm *tim;
if(signum==SIGUSR1)
{
time(&nowtime);
tim=localtime(&nowtime);
printf("\n%d-%d-%d,%d:%d:%d\n",tim->tm_mon,
tim->tm_mday,
tim->tm_year+1900,//transform 106 to 2006
tim->tm_hour,
tim->tm_min,
tim->tm_sec);
}
else if(signum==SIGUSR2)
{
printf("quit!\n");
exit(0);
}
}
int main()
{
int i;
int pid;
signal(SIGUSR1,my_sighandler);
signal(SIGUSR2,my_sighandler);
pid=fork();
if(pid<0)
{
printf("fork error!\n");
exit(1);
}
else if(pid==0)
{
for(i=0;i<10;i++)
{
kill(getppid(),SIGUSR1);
sleep(1);
}
kill(getppid(),SIGUSR2);
}
else if(pid>0)
{
sleep(15);
}
}