mkfifo
根本不适用于Cygwin?一组简单的命令如mkfifo导致终端挂起?
$ mkfifo my_pipe
$ echo "1234" > my_pipe
只是导致终端永远坐着,光标闪烁。我是否“做错了”?
mkfifo
根本不适用于Cygwin?一组简单的命令如mkfifo导致终端挂起?
$ mkfifo my_pipe
$ echo "1234" > my_pipe
只是导致终端永远坐着,光标闪烁。我是否“做错了”?
不,你没有做任何错误或者这些命令的,这只是你的期望有点关闭。
你错过的东西在另一端,读取该数据。这种明显的挂起也发生在Linux上,所以它不是CygWin问题(或者任何其他问题)。
只需打开另一个窗口,然后输入:
cat <my_pipe
,你会看到的数据显示,后跟原始echo
完成。
命名管道的事情是,你需要两端都有东西。如果管道尚未完成,则无法写入管道,因此echo
命令会挂起,直到有其他设备尝试从该管道读取(在您的情况下永远不会发生这种情况)。