success python pipe stdin, out only one time this source
main.py
import subprocess from subprocess import PIPE, STDOUT
player_pipe = subprocess.Popen([\
the output of call.py
is buffered. so you have to flush()
it to send to main.py
.
#!/usr/bin/python2
import sys
getMsg = raw_input()
print getMsg
sys.stdout.flush()
getMsg2 = raw_input()
print getMsg2
sys.stdout.flush()
Note that you need shebang #!/usr/bin/python2
at least when your OS is Linux (I don't know why OP's code works without shebang. Maybe some Windows magic ?).
Also you can use -u
option not to buffer the output of python.
player_pipe = subprocess.Popen(["/usr/bin/python2","-u","./call.py"], stdin=PIPE,
stdout=PIPE, stderr=STDOUT, shell=False)
When you say "but I want twice or more time stdin, out", I'm not sure what you really mean.
In a basic Linux/UNIX system, you have 1 - and only one - STDIN, STDOUT, and STDERR. Now, you can pipe things in and out, treating STDERR separately if you want, but you cannot just arbitrarily assign multiple inputs without setting up separate mechanisms (sockets, etc) to handle that within your program.