红联Linux门户
Linux帮助

为什么进程总是不停的受到SIGTTOU信号,请高手指点

发布时间:2009-12-29 23:23:23来源:红联作者:awangyong1
#include
#include
#include
#include
#include
static void sig_ttou(int signo)
{
printf("SIGTTOU receive");
}
int main(void)
{
signal(SIGTTOU,sig_ttou);
printf("hello");
return 0;

}

这是程序的源代码,根据UNIX环境高级编程上所说,用stty tostop关闭后台输出后,在后台进程试图写控制终端的时候,产生SIGTTOU信号。问题(1):我用./sigttou & 讲这个程序在后台执行以后,它总是不停的收到SIGTTOU信号呢?总不是停的打印SIGTTOU receive,好像一个死循环一样 无休止的打印SIGTTOU receive 请各位大哥帮小弟解惑。
问题(2):我将signal的第二个参数设置成SIG_IGN,忽略SIGTTOU信号,同样也是用 stty tostop 关闭后台输出,将该进程在后台执行,为什么会输出hello 我不是已经关闭了后台输出了吗?为什么这个进程还能在控制终端输出呢,请高手帮忙解决,跪谢了
文章评论

共有 4 条评论

  1. guofeidage 于 2014-03-17 21:01:58发表:

    而非绯闻绯闻

  2. qxfsy 于 2014-02-09 11:10:54发表:

    不知

  3. 于 2014-01-10 23:31:35发表:

    第一个问题,原因是信号处理函数中使用printf函数,每次执行都会试图向关闭后台进程输出的终端输出,每次都会收到内核发送的SIGTTOU,然后再执行注册的信号处理函数,再执行printf。。。如此形成死循环。

  4. 01382140 于 2009-12-30 08:01:17发表:

    也学习一下