在 fish shell 中执行这些命令时
命令挂起。 如果我通过“echo "" > answer”向
命令不会挂起并直接开始侦听。
在fish和bash中有什么不同的情况可以解释这种不同的行为?
$ mkfifo answer
$ nc -vv -l -k -p 8001 <answer | tee -a answer
命令挂起。 如果我通过“echo "" > answer”向
answer
写入内容,那么nc
就会恢复并开始正确地监听。
相反,如果我使用CTRL-C
中止挂起的进程,将会出现以下消息:^C<W> fish: An error occurred while redirecting file 'answer'
open: Interrupted system call
另一方面,在bash中执行以下命令时:
$ mkfifo answer
$ nc -vv -l -k -p 8001 <answer | tee -a answer
Listening on localhost 8001
命令不会挂起并直接开始侦听。
在fish和bash中有什么不同的情况可以解释这种不同的行为?
<answer
打开是阻塞的,但对你来说并不明显,因为它发生在一个子进程中。 - Kurtis Rader