回 帖 发 新 帖 刷新版面

主题:一个进程间发送消息的小程序,请大家指错

这个程序中子进程每隔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);
   }
}

回复列表 (共3个回复)

沙发

我运行没错阿
3-16-2006,18:52:33

3-16-2006,18:52:34

板凳

sleep(15);
最好改为wait();

3 楼

是么?应该是你的电脑比较快吧

我来回复

您尚未登录,请登录后再回复。点此登录或注册