当前位置: 技术问答>linux和unix
求教!终端登录后...
来源: 互联网 发布时间:2016-10-11
本文导语: 我的系统发行版为Ubuntu,我有一测试程序,得到一系列键盘输入后结束。该程序类似于: main() { getchar(); getchar(); getchar(); } 编译为a.out, 问题是:我用一终端(实达、昌霖等网络终端)用telnet登录后运行该a.out,在键盘...
我的系统发行版为Ubuntu,我有一测试程序,得到一系列键盘输入后结束。该程序类似于:
main()
{
getchar();
getchar();
getchar();
}
编译为a.out,
问题是:我用一终端(实达、昌霖等网络终端)用telnet登录后运行该a.out,在键盘输入之前将终端关闭!这时在主机上还可看到该终端的这些进程,有什么办法使测试程序得知发生意外而主动关闭,求助!
ps -t 1
PID TTY TIME CMD
6118 pts/1 00:00:00 login
6119 pts/1 00:00:00 bash
6137 pts/1 00:00:00 a.out
请看,从login至a.out都没死。它们都没有收到任何让它们退出的信号?
main()
{
getchar();
getchar();
getchar();
}
编译为a.out,
问题是:我用一终端(实达、昌霖等网络终端)用telnet登录后运行该a.out,在键盘输入之前将终端关闭!这时在主机上还可看到该终端的这些进程,有什么办法使测试程序得知发生意外而主动关闭,求助!
ps -t 1
PID TTY TIME CMD
6118 pts/1 00:00:00 login
6119 pts/1 00:00:00 bash
6137 pts/1 00:00:00 a.out
请看,从login至a.out都没死。它们都没有收到任何让它们退出的信号?
|
自己写过程调用信号处理的函数
|
你在a.out里设置下信号忽略试试?
|
通常终端关闭后,内核会发送SIGHUP信号
你的网络终端关闭后,看来对于内核来说,它没有感知.. 不知道为什么
你的网络终端关闭后,看来对于内核来说,它没有感知.. 不知道为什么
|
mark~
如果这样,就得完善主机的程序,监控终端是不是退出了,还是异常退出了……
程序本身应该不行吧。