免费注册 查看新帖 |

Chinaunix

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

自己创建的守护进程kill掉之后为什么还在 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-04-20 10:20 |只看该作者 |倒序浏览

  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<errno.h>
  4. #include<string.h>
  5. #include<sys/types.h>
  6. #include<netinet/in.h>
  7. #include<sys/socket.h>
  8. #include<sys/wait.h>
  9. #include<sys/stat.h>
  10. #include<fcntl.h>
  11. #include<unistd.h>
  12. #include<arpa/inet.h>

  13. void init_daemon(char **argv)
  14. {
  15.   int iRet=0;
  16.   int fd=-1;
  17.   if(1==getppid())
  18.   {
  19.       setsid();
  20.       for(iRet = getdtablesize (); 0 <= iRet; --iRet)
  21.       {
  22.         fd=iRet;
  23.         close(fd);
  24.       }
  25.       open("/dev/null",O_RDONLY);
  26.       open("/dev/null",O_RDWR);
  27.   }
  28.   else
  29.   {
  30.       iRet=vfork();
  31.       if(0>iRet) exit(1);
  32.       if(0<iRet) exit(2);
  33.       
  34.       iRet=vfork();
  35.       if(0>iRet) exit(3);
  36.       if(0<iRet) exit(4);
  37.       
  38.       execv(argv[0],argv);
  39.   }       

  40. }
  41. int main(int argc,char **argv)
  42. {
  43.    init_daemon(argv);
  44.    int sockfd;
  45.    int length=0;
  46.    char buff[1024]="hello world";
  47.    int i;
  48.    struct  sockaddr_in  server_addr;
  49.    
  50.    if(-1==(sockfd=socket(AF_INET,SOCK_DGRAM,0)))
  51.    {
  52.        perror("socket error:");
  53.        exit(1);
  54.    }
  55.    

  56.    memset(&server_addr,0,sizeof(server_addr));
  57.    server_addr.sin_family=AF_INET;
  58.    server_addr.sin_port=htons(1234);
  59.    inet_aton("192.168.6.130",&server_addr.sin_addr);

  60.    while(1)
  61.    {
  62.    if(-1==(length=sendto(sockfd,buff,1024,0,(const struct sockaddr*)&server_addr,sizeof(server_addr))))
  63.    {
  64.        perror("send error:");
  65.        exit(2);
  66.    }
  67.    }       
  68.         return 0;
  69. }
复制代码
我用的是vfork,不是fork.发生问题的现象是我先用ps -ef找出自己客户端的守护进程,关掉后该进程后,打开服务端的话依然能接到客户端发过来的数据。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP