Blog: 2024-02-13: Difference between revisions
Jump to navigation
Jump to search
(Created page with "How does this work but it doesn't seem to when you use the read and write methods on the io objects? <pre> proc = subprocess.Popen(['bc'], stdin=subprocess.PIPE, stdout=subprocess.PIPE) os.write(proc.stdin.fileno(), b'100+200\n') print(os.read(proc.stdout.fileno(), 4096)) </pre>") |
No edit summary |
||
(One intermediate revision by the same user not shown) | |||
Line 5: | Line 5: | ||
os.write(proc.stdin.fileno(), b'100+200\n') |
os.write(proc.stdin.fileno(), b'100+200\n') |
||
print(os.read(proc.stdout.fileno(), 4096)) |
print(os.read(proc.stdout.fileno(), 4096)) |
||
</pre>https://stackoverflow.com/questions/39899074/communicate-multiple-times-with-a-subprocess-in-python |
|||
Ok it was about: buffering and flushing |
|||
<pre> |
|||
import os |
|||
import subprocess |
|||
proc = subprocess.Popen(['bc'], stdin=subprocess.PIPE, stdout=subprocess.PIPE) |
|||
proc.stdin.write(b'100+200\n') |
|||
proc.stdin.flush() |
|||
print(proc.stdout.readline()) |
|||
</pre> |
</pre> |
||
flush was missing, and readline reads just a line rather than read which blocks |
Latest revision as of 10:00, 13 February 2024
How does this work but it doesn't seem to when you use the read and write methods on the io objects?
proc = subprocess.Popen(['bc'], stdin=subprocess.PIPE, stdout=subprocess.PIPE) os.write(proc.stdin.fileno(), b'100+200\n') print(os.read(proc.stdout.fileno(), 4096))
https://stackoverflow.com/questions/39899074/communicate-multiple-times-with-a-subprocess-in-python
Ok it was about: buffering and flushing
import os import subprocess proc = subprocess.Popen(['bc'], stdin=subprocess.PIPE, stdout=subprocess.PIPE) proc.stdin.write(b'100+200\n') proc.stdin.flush() print(proc.stdout.readline())
flush was missing, and readline reads just a line rather than read which blocks