os.fdopen giving "Invalid Argument" from pipes

Jean-Paul Calderone exarkun at divmod.com
Thu Feb 19 11:50:04 EST 2009


On Thu, 19 Feb 2009 16:37:49 +0000, Tim Wintle <tim.wintle at teamrubber.com> wrote:
>Was wondering if someone could point out what the stupid thing I'm doing
>wrong is:
>
>
>{{{
>import os, time
>def run_multi_proc():
>    server_send, logger_recieve = os.pipe()

You got server_send and logger_receive backwards (also, i before e *except* after c et cetera).  Flip 'em around and all is well.

>    pid = os.fork()
>    if pid == 0:
>        # we are the logger
>        #os.close(server_send)
>        logger_recieve = os.fdopen(logger_recieve)
>        time.sleep(20)
>    else:
>        # we are the server
>        #os.close(logger_recieve)
>        server_send = os.fdopen(server_send,"w")
>        time.sleep(3)
>        os.kill(pid,signal.SIGTERM)
>
>if __name__ == "__main__":
>    run_multi_proc()
>}}}
>
>
>> python test.py
>
>Traceback (most recent call last):
>  File "test.py", line 20, in <module>
>    run_multi_proc()
>  File "test.py", line 9, in run_multi_proc
>    logger_recieve = os.fdopen(logger_recieve)
>OSError: [Errno 22] Invalid argument
>Traceback (most recent call last):
>  File "test.py", line 20, in <module>
>    run_multi_proc()
>  File "test.py", line 15, in run_multi_proc
>    server_send = os.fdopen(server_send,"w")
>OSError: [Errno 22] Invalid argument
>
>
>really confused about why this isn't working - running on Linux with
>python 2.5.2

Jean-Paul



More information about the Python-list mailing list