当前位置: 技术问答>linux和unix
后台程序在运行,但结果不对!
来源: 互联网 发布时间:2015-10-11
本文导语: /*需求:在LINUX下建立一个在机器启动后可以自动运行的后台网络服务程序*/ void init_daemon(void) ; void startApp(); void * ACCEPT(void *p); int main() { init_daemon(); StartApp(); while(true) sleep(100000...
/*需求:在LINUX下建立一个在机器启动后可以自动运行的后台网络服务程序*/
void init_daemon(void) ;
void startApp();
void * ACCEPT(void *p);
int main()
{
init_daemon();
StartApp();
while(true)
sleep(100000);
}
void startApp()
{
pthread_t AcceptThreadHandle;
pthread_create(&AcceptThreadHandle, NULL, ACCEPT,(void *)NULL);
}
void * ACCEPT(void *p)
{
pthread_detach(pthread_self());
int fd=socket(AF_INET,SOCK_STREAM,0);
int newfd;
bind(.....);
listen(......);
while(true)
{
...
newfd=accept(...);
recv(...);//接收NEWFD的数据,并且一样的发送回去.
send(...);
close(newfd);
}
return NULL;
}
//我编译出来放在/root/test
//如果我在终端上输入/root/test运行后返回终端,在WINDOWS用个客户程序去测试,可以收到返回的数据,但是我在/etc/rc.local文件里面加入:/root/test,再从起机器后用ps -ef可以看到TEST进程,用netstat -a也可以看到TEST兼听的端口,但是就是WINDOWS的客户程序收不到返回数据了!!!!怎么回事呢?
}
//操的函数:
void init_daemon(void)
{
int pid;
int i;
pid = fork();
if (pid)
{
exit(0);
}
else if (pid
void init_daemon(void) ;
void startApp();
void * ACCEPT(void *p);
int main()
{
init_daemon();
StartApp();
while(true)
sleep(100000);
}
void startApp()
{
pthread_t AcceptThreadHandle;
pthread_create(&AcceptThreadHandle, NULL, ACCEPT,(void *)NULL);
}
void * ACCEPT(void *p)
{
pthread_detach(pthread_self());
int fd=socket(AF_INET,SOCK_STREAM,0);
int newfd;
bind(.....);
listen(......);
while(true)
{
...
newfd=accept(...);
recv(...);//接收NEWFD的数据,并且一样的发送回去.
send(...);
close(newfd);
}
return NULL;
}
//我编译出来放在/root/test
//如果我在终端上输入/root/test运行后返回终端,在WINDOWS用个客户程序去测试,可以收到返回的数据,但是我在/etc/rc.local文件里面加入:/root/test,再从起机器后用ps -ef可以看到TEST进程,用netstat -a也可以看到TEST兼听的端口,但是就是WINDOWS的客户程序收不到返回数据了!!!!怎么回事呢?
}
//操的函数:
void init_daemon(void)
{
int pid;
int i;
pid = fork();
if (pid)
{
exit(0);
}
else if (pid