Bug #43627 [Com]: fopen blocks on fifo
| From: | php at richardneill dot org | Date: | Mon, 01 Aug 2011 16:30:19 +0000 |
| Subject: | Bug #43627 [Com]: fopen blocks on fifo | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-162339@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=43627&edit=1
ID: 43627
Comment by: php at richardneill dot org
Reported by: user at example dot com
Summary: fopen blocks on fifo
Status: Bogus
Type: Bug
Package: Filesystem function related
Operating System: Debian Etch and RHEL 5
PHP Version: 5.2.5
Block user comment: N
Private report: N
New Comment:
Similarly, fopen blocks if the fifo is opened for writing, and the "other side" isn't
being read yet: $fp = fopen('myfifo', 'w');
I'd expect the fwrite() to block, but not the fopen().
Linux's man fifo says that this is the default behaviour, but that it is possible to make it
non-blocking. This would be useful, because we can't call stream_select() to find out whether
writes would block until we have fopen()'d the pipe, but fopen() blocks. There is no way to
test in advance whether fopen() would block, because most cases don't expect it to.
Previous Comments:
------------------------------------------------------------------------
[2008-01-29 00:15:50] tony2001@php.net
man open
man 7 fifo
"Normally, opening the FIFO blocks until the other end is opened also."
------------------------------------------------------------------------
[2007-12-18 16:59:10] user at example dot com
Description:
------------
fopen() blocks waiting for read on named pipes (FIFOs) opened for reading.
Reproduce code:
---------------
At Unix prompt:
% mkfifo myfifo
PHP:
$fp = fopen('myfifo', 'r');
Expected result:
----------------
PHP execution should continue until attempting to read from the FIFO, e.g.:
fread($fp, 1);
Actual result:
--------------
PHP execution suspends (blocks) on the fopen() command until another process writes data to the
FIFO.
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=43627&edit=1