当前位置: 技术问答>linux和unix
请教各位:Unix环境下socket接口服务端程序为什么会经常自己断开?100分赠英雄!
来源: 互联网 发布时间:2015-08-07
本文导语: SOCKET服务端接口程序经常自己断开而不再监听客户端程序发送过来的数据,在没有断开的情况接收 客户端的程序发送过来的数据还是正常的. 用TELNET登录服务器上手工启动该服务端程序,可以正常监听,但一旦退出该TE...
SOCKET服务端接口程序经常自己断开而不再监听客户端程序发送过来的数据,在没有断开的情况接收
客户端的程序发送过来的数据还是正常的.
用TELNET登录服务器上手工启动该服务端程序,可以正常监听,但一旦退出该TELNET,服务端程序进程也随即退出。即使在命令符下输出: 服务程序名 &
让该服务端程序在后台运行其结果也是一样,一旦退出该TELNET,服务端程序进程也随即退出
在CRONTAB中定时调用该程序,就会经常自己断开,不知是何故?
请高手不吝赐教,谢谢!
客户端的程序发送过来的数据还是正常的.
用TELNET登录服务器上手工启动该服务端程序,可以正常监听,但一旦退出该TELNET,服务端程序进程也随即退出。即使在命令符下输出: 服务程序名 &
让该服务端程序在后台运行其结果也是一样,一旦退出该TELNET,服务端程序进程也随即退出
在CRONTAB中定时调用该程序,就会经常自己断开,不知是何故?
请高手不吝赐教,谢谢!
|
你可以把你的这个写成守护进程就可以了。
具体接口:
/*===============================================================
FUNC NAME : init_daemon
FUNC DESC : 守护进程
================================================================*/
/*
void init_daemon(void)
{
if(fork()!=0)
exit(0);
setsid();
if(fork()!=0)
exit(0);
for(int i=0; i../log/tcpserver.log 2>&1 &
具体接口:
/*===============================================================
FUNC NAME : init_daemon
FUNC DESC : 守护进程
================================================================*/
/*
void init_daemon(void)
{
if(fork()!=0)
exit(0);
setsid();
if(fork()!=0)
exit(0);
for(int i=0; i../log/tcpserver.log 2>&1 &
|
你在程序的一开始调用这个接口就可以使你的程序成为一个守护进程
|
只要设置自己的parent process id为group process的id即可。
|
父进程退出(telnet登陆进去之后的bash或其他shell),子进程当然要被退出啦!——不管是foreground还是background。
|
将你的程序放到rc.local中执行试试.
|
把程序变为守护进程。
|
同意yingle2000(音乐天堂)和onlyf(onlyf) 的说法