Blog: 2024-02-13: Difference between revisions

From razwiki
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