LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 641|回复: 3

这个程序为什么不会运行后面几条语句?

[复制链接]
发表于 2004-10-20 23:18:19 | 显示全部楼层 |阅读模式

  1. #include <sys/types.h>
  2. #include <signal.h>
  3. #include <unistd.h>
  4. #include <stdio.h>

  5. static int alarm_fired = 0;

  6. void ding(int sig)
  7. {
  8.         alarm_fired = 1;

  9. }

  10. int main(void)
  11. {
  12.         pid_t pid;

  13.         printf("alarm application starting\n");
  14.         pid = fork();

  15.         switch(pid)
  16.         {
  17.         case -1:
  18.                 perror("fork failed\n");
  19.                 exit(1);
  20.         case 0:
  21.                 sleep(1);
  22.                 kill(getppid(), SIGALRM);
  23.                 exit(0);
  24.         }

  25.         printf("waiting for alarm to go off\n");

  26.         pause();
  27.         printf("Hello World\n");

  28.         if (alarm_fired) printf("Ding!\n");

  29.         printf("done\n");

  30.         return 0;

  31. }
复制代码


        printf("Hello World\n");

        if (alarm_fired) printf("Ding!\n");

        printf("done\n");
为什么不运行?

运行结果

  1. [root@book cai]# ./y
  2. alarm application starting
  3. waiting for alarm to go off
  4. 闹钟
复制代码
发表于 2004-10-21 09:13:05 | 显示全部楼层
你这个程序的目的是什么,首先你的程序没有绑定处理alarm的信号,还有看看你将alarm信号发给谁了?
发表于 2004-10-21 12:44:43 | 显示全部楼层
没有绑定信号函数signal()
发表于 2004-10-23 23:10:10 | 显示全部楼层
pause 函数挂起调用它的进程直至有任何信号到达,pause才返回调用进程,继续执行下面语句.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表