免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1149 | 回复: 1
打印 上一主题 下一主题

信号问题,为什么父进程5S钟后而不是60S后执行的啊? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-06-25 16:30 |只看该作者 |倒序浏览
  1. #include<stdio.h>;
  2. #include<sys/types.h>;
  3. #include<sys/ipc.h>;
  4. #include<sys/sem.h>;
  5. #include<unistd.h>;
  6. #define SEMK 0x12345L
  7. #define PERMS 0666
  8. #define DEBUG
  9. static struct sembuf op[2]={0,-1,0,
  10.                             0, 1,0};
  11. int InitSem()
  12. {
  13. return    semget(SEMK,1,PERMS|IPC_CREAT);
  14. }

  15. int SemDel(int sem)
  16. {
  17. return semctl(sem,0,IPC_RMID,0) ;
  18. }

  19. int SetSem( int sem)
  20. {
  21. union semun {
  22.        int val;
  23.        struct semid_ds *buf;
  24.        ushort *array;
  25.   } arg;

  26.   
  27.   arg.val=0;
  28.   return semctl(sem,0,SETVAL,arg);
  29. }


  30. int P()
  31. {
  32.   int semid;
  33.   
  34.   semid=semget(SEMK,1,PERMS);
  35.   if (semid<0) return -1;
  36.   return(semop(semid,&op[0],0));
  37. }

  38. int V()
  39. {
  40.   int semid;
  41.   
  42.   semid=semget(SEMK,1,PERMS);
  43.   if (semid<0) return -1;
  44.   return(semop(semid,&op[1],0));
  45. }
  46. main()
  47. {
  48.    int semid;
  49.    int rc;
  50.    pid_t  pid;
  51.    
  52.    rc = InitSem();
  53.    if(rc<0)
  54.    {
  55.      perror("create sem error");
  56.      exit(0);
  57.    }
  58.    semid=rc;
  59.    rc =  SetSem(semid);
  60.    if(rc<0)
  61.    {
  62.      perror("set sem");
  63.      system("ipcs -as");
  64.     }
  65.    pid=fork();
  66.    if(pid==0)
  67.    {
  68.      P();
  69.      sleep(60);
  70.      V();
  71.    }
  72.    if(pid>;0)
  73.    {
  74.      sleep(5);
  75.      P();
  76.      printf("this is the parents do:\n");
  77.      system("ls -l|more");
  78.      V();
  79.    }  
  80.    rc=SemDel(semid);
  81.    if(rc<0)
  82.    {
  83.      perror("del sem");
  84.      system("ipcs -as");
  85.    }
  86. }
复制代码

论坛徽章:
0
2 [报告]
发表于 2003-06-25 19:51 |只看该作者

信号问题,为什么父进程5S钟后而不是60S后执行的啊?

fork
父进程返回pid
子进程返回0
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP