我的问题来了:是不是要另外写一个程序(假设它为 A),在 A 里 tcsetattr() 函数设置TOSTOP 标志 。然后运行它,此时A 进程就会产生 SIGTTOU 信号。但光产生这个信号是毫无意义的,必须有一个企图写终端的后台进程(假设为B)也同时运行,这时 B 接收到 SIGTTOU 信号,于是它就不能向终端写东西了。
又或者我可以把A 设置为父进程,原本的后台程序 B 作为 A 的子进程,这样只要写一个程序(假设为AB)就可以了。如果后台运行AB,则作为父进程的 A 产生 SIGTTOU 信号,他儿子 B 接收到以后就没法再写终端了。不过这样做可行性也许不大。按照书里面的说法“将信号SIGTTOU送到试图写控制终端的一个后台进程的进程组”这是否就决定了 A 不能为后台进程??而B 必须是后台的??