当我scp文件时,我可以用^ Z将其停止并将其放在后台。当它在后台时,它会停止打印进度,但复制仍在继续。如果我再次前景,它将恢复打印。怎么知道的? SIGTTOU?这会发生在标准的ptty吗?
答案 0 :(得分:2)
是的,你明白了。该过程会捕获或忽略SIGTTOU(也许SIGTTIN,取决于它正在做什么),然后它在接收这些信号时会表现得恰当。 Linux确实会在普通的伪终端上发送这些信号。
答案 1 :(得分:1)
我的一位同事,我实际上看了看源头,找到了答案。
每当scp即将打印输出时,它会在stdout上运行tcgetpgrp。这将返回终端的控制进程组(假设它是终端)。只有在控制终端的进程组与scp的进程组相同时才会打印出来。原来不需要信号! (虽然它确实处理SIGWINCH来计算进度线的大小)。