Blog: 2024-02-13
Jump to navigation
Jump to search
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