- 论坛徽章:
- 0
|
- #include<stdio.h>
- #include<stdlib.h>
- #include<errno.h>
- #include<string.h>
- #include<sys/types.h>
- #include<netinet/in.h>
- #include<sys/socket.h>
- #include<sys/wait.h>
- #include<sys/stat.h>
- #include<fcntl.h>
- #include<unistd.h>
- #include<arpa/inet.h>
- void init_daemon(char **argv)
- {
- int iRet=0;
- int fd=-1;
- if(1==getppid())
- {
- setsid();
- for(iRet = getdtablesize (); 0 <= iRet; --iRet)
- {
- fd=iRet;
- close(fd);
- }
- open("/dev/null",O_RDONLY);
- open("/dev/null",O_RDWR);
- }
- else
- {
- iRet=vfork();
- if(0>iRet) exit(1);
- if(0<iRet) exit(2);
-
- iRet=vfork();
- if(0>iRet) exit(3);
- if(0<iRet) exit(4);
-
- execv(argv[0],argv);
- }
- }
- int main(int argc,char **argv)
- {
- init_daemon(argv);
- int sockfd;
- int length=0;
- char buff[1024]="hello world";
- int i;
- struct sockaddr_in server_addr;
-
- if(-1==(sockfd=socket(AF_INET,SOCK_DGRAM,0)))
- {
- perror("socket error:");
- exit(1);
- }
-
- memset(&server_addr,0,sizeof(server_addr));
- server_addr.sin_family=AF_INET;
- server_addr.sin_port=htons(1234);
- inet_aton("192.168.6.130",&server_addr.sin_addr);
- while(1)
- {
- if(-1==(length=sendto(sockfd,buff,1024,0,(const struct sockaddr*)&server_addr,sizeof(server_addr))))
- {
- perror("send error:");
- exit(2);
- }
- }
- return 0;
- }
复制代码 我用的是vfork,不是fork.发生问题的现象是我先用ps -ef找出自己客户端的守护进程,关掉后该进程后,打开服务端的话依然能接到客户端发过来的数据。 |
|