当前位置: 技术问答>linux和unix
菜鸟Unix网络编程问题,僵尸进程
来源: 互联网 发布时间:2016-11-25
本文导语: 写了个server程序,什么运行后,子进程就变成了僵尸进程,用telnet连接也不会有输出啊。。。gdb运行来运行去都阻塞在accept上面,子进程根本执行到,求大侠指点。 #include #include #include #include #include #include #define SERV_...
写了个server程序,什么运行后,子进程就变成了僵尸进程,用telnet连接也不会有输出啊。。。gdb运行来运行去都阻塞在accept上面,子进程根本执行到,求大侠指点。
#include
#include
#include
#include
#include
#include
#define SERV_PORT 8989
#define LISTENQ 10
#define MAXLINE 1024
int str_echo(int fd);
int writen(int fd,void* buf,size_t len);
int main(){
int listenfd,connfd,clilen,servlen;
pid_t childpid;
struct sockaddr_in servaddr,tempaddr,cliaddr;
listenfd=socket(AF_INET,SOCK_STREAM,0);
bzero(&servaddr,sizeof(struct sockaddr_in));
servaddr.sin_addr.s_addr=htonl(INADDR_ANY);
servaddr.sin_port=htons(SERV_PORT);
servaddr.sin_family=AF_INET;
bind(listenfd,(struct sockaddr*)&servaddr,sizeof(struct sockaddr));
listen(listenfd,LISTENQ);
getsockname(listenfd,(struct sockaddr*)&tempaddr,&servlen);
printf("%s%d","host listen",tempaddr.sin_port);
while(1){
accept(listenfd,(struct sockaddr*)&cliaddr,&clilen);
if((childpid=fork())==0){
close(listenfd);
str_echo(connfd);
exit(0);
}
close(connfd);
}
}
int str_echo(int fd){
int nread,nleft;
char buf[MAXLINE];
while(1){
while((nread=read(fd,buf,MAXLINE))>0){
if(nread
#include
#include
#include
#include
#include
#include
#define SERV_PORT 8989
#define LISTENQ 10
#define MAXLINE 1024
int str_echo(int fd);
int writen(int fd,void* buf,size_t len);
int main(){
int listenfd,connfd,clilen,servlen;
pid_t childpid;
struct sockaddr_in servaddr,tempaddr,cliaddr;
listenfd=socket(AF_INET,SOCK_STREAM,0);
bzero(&servaddr,sizeof(struct sockaddr_in));
servaddr.sin_addr.s_addr=htonl(INADDR_ANY);
servaddr.sin_port=htons(SERV_PORT);
servaddr.sin_family=AF_INET;
bind(listenfd,(struct sockaddr*)&servaddr,sizeof(struct sockaddr));
listen(listenfd,LISTENQ);
getsockname(listenfd,(struct sockaddr*)&tempaddr,&servlen);
printf("%s%d","host listen",tempaddr.sin_port);
while(1){
accept(listenfd,(struct sockaddr*)&cliaddr,&clilen);
if((childpid=fork())==0){
close(listenfd);
str_echo(connfd);
exit(0);
}
close(connfd);
}
}
int str_echo(int fd){
int nread,nleft;
char buf[MAXLINE];
while(1){
while((nread=read(fd,buf,MAXLINE))>0){
if(nread
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
站内导航:
特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!