named pipe and Linux

bobicanprogram icanbob at
Wed Apr 8 15:33:11 CEST 2009

On Apr 7, 1:08 pm, akineko <akin... at> wrote:
> Hello everyone,
> I'm trying to use named pipes to fuse a Python program and a C
> program.
> One side creates pipes using os.mkfifo() and both sides use the same
> named pipes (one side reads, another side writes). The read side uses
> to wait for incoming messages and read the message
> when says it is ready.
> The length of the message is unknown to the read side.
> I cannot use because it will block waiting for an EOF.
> I cannot use file.readline() because how many lines have arrived is
> unknown.
> So, I needed to use with the exact number of characters to
> read.
> Under Solaris environment, os.fstat() provides the exact size of the
> message that has arrived.
> Thus, two processes can communicate each other through the named pipes
> without blocking.
> However, the above scheme didn't work under Linux.
> Linux os.fstat() returns size=0 even the message is pending.
> (I think Linux buffers the message in memory while Solaris buffers the
> message in a file system)
> My question is, how can I make the named pipe scheme work under Linux?
> Is there any way to read the message without getting blocked?
> I know this is more Linux question than Python question but I believe
> many Python programmers are strong Linux programmers.
> Any suggestions will be appreciated.
> Best regards,
> Aki Niimura

The SIMPL open source project (
provides an ultra lightweight toolkit useful for joining Python
programs to C programs using a Send/Receive/Reply mechanism first
pioneered by QNX.    SIMPL uses a fifo synchronized shared memory
scheme for the local message pass.    Through the use of generic
surrogate pairs SIMPL processes can be distributed across TCP/IP or
RS232 (think radio modem) networks often times without any changes or
recompiles.   Through the use of another type of generic surrogate a
Python module running on a nonLinux OS can communicate transparently
with a module running on a Linux box.

A SIMPL application consists of two or more SIMPL modules
collaborating in this way.   SIMPL modules can be written in any
number of languages including Python, C, C++,  Tcl/Tk or JAVA.   More
importantly SIMPL modules written in different languages can be mixed
in a given SIMPL application.

There is a Sudoku puzzle solver example here:

SIMPL project facilitator

More information about the Python-list mailing list