2016-02-13 56 views
0

我想知道在写入之前是否有可能检查管道是否打开?如果管道的另一端打开,我不希望管道的另一端读取,我只想检查管道是否发送SIGPIPE信号,以及是否只是关闭了我的程序。读过的程序(...)不应该反应。检查管道是否在写入之前打开

编辑:答案很简单..我是不够的,只写一个消息0字节长...

+0

不清楚......确切地说你的问题到底是什么。我觉得存在一些矛盾:管道“在写入之前打开”,但另一端有“如果打开时读取”? –

+0

我有4个通过管道消息发送到主进程的信号和主进程读取它。现在让我们说主进程随机关闭管道(其管道不是fifo)。我想让我的守护神发送一个“检查味精”给管道(让我们说每5秒)来检查它是否仍然打开,如果不是西普比尔应该杀死德蒙。主进程不应该看到检查msg – Thomas

+0

我从来没有尝试过,但Opengroup'write'文档说如果你在描述符上使用'I_SWROPT'标志和'ioctl',那么可以发送一个零大小的消息,收到但写入会检测到您的状况。 –

回答

0

这是一个命名管道?

你可以用这些工具做的一件事是打开指定的管道,以便在你的作者和读者中阅读(当然也是写作)。当你运行你的编辑器时,它会将管道标记为两端开放,尽管你的编写者当然不会从中读取它。

请参阅this manpage on fifos。它看起来像多个进程可以打开管道阅读。