我nc
像这样启动服务器:
nc -lk -p 12345 -s localhost < <named_pipe>
以及一位nc
客户:
nc localhost 12345
当我运行命令并且管道为空时,nc
挂起,这正是我所期望的。但是,即使我开始写入管道,例如:
watch -n 3 -t fortune > p
nc
仍在等待。
当我systrace
在服务器上运行时,我看到以下内容:
strace: Process <id> attached
restart_syscall(<... resuming interrupted read ...>
表示该进程正在等待读操作。
如果我对生产者进行系统跟踪,我可以看到对命名管道的持续写入。不清楚为什么当管道上有可用数据时服务器正在等待。
但是,如果我终止客户端并再次启动它,从而重新启动连接,一切都会正常工作。
系统信息:
OS: Ubuntu 20.04.6 LTS
BSD nc