Мне не удалось заставить mkfifo
работать.Однако мне удалось заставить сервер / клиента общаться через os.pipe
:
#!/usr/bin/env python
from subprocess import Popen
import os
from itertools import cycle
from time import sleep
from sys import stdout, executable
def client():
for letter in cycle('ABCDE'):
stdout.write(letter)
stdout.flush()
sleep(1)
def main(argv=None):
import sys
from argparse import ArgumentParser
argv = argv or sys.argv
parser = ArgumentParser()
parser.add_argument('--client', default=False, action='store_true')
args = parser.parse_args(argv[1:])
if args.client:
client()
r, w = os.pipe()
pipe = Popen([executable, __file__, '--client'], stdout=os.fdopen(w, 'w'))
try:
client_out = os.fdopen(r, 'r')
while True:
letter = client_out.read(1)
print(letter)
except KeyboardInterrupt:
pipe.kill()
if __name__ == '__main__':
main()