Reputation: 22675
How do I make this a non-blocking call? osd_cat
accepts input only as a PIPE
which need p.communicate()
call making the process to block. Is there any other way to set stdin
in Popen
?
p = subprocess.Popen(('osd_cat',
'-d',
'{}'.format(interval)),
stdin=subprocess.PIPE)
p.communicate(message)
Upvotes: 4
Views: 1337
Reputation: 114230
The p.communicate
method is a one-shot deal in terms of sending data to the process.
Instead, write directly to p.stdin
. If you want to get output, you can read lines from p.stdout
. Make sure you pass stdout=subprocess.PIPE
to the constructor before attempting to read.
Upvotes: 3