fifo를 Python의 stdin으로 리디렉션

fifo를 Python의 stdin으로 리디렉션
$ mkfifo mypipe
$ echo "hello redirection" > mypipe
$ cat < mypipe
hello redirection

Python을 사용하여 위의 작업을 수행하려고 할 때 문제가 있습니다.

# pyecho.py
with open("/dev/stdin", "r") as f:
    print(f.read())
$ python3 pyecho.py < mypipe

파이프에 두 번 쓰지 않으면 종료되지 않습니다.

$ echo "hello redirection" > mypipe
$ echo "hello redirection" > mypipe

하지만 파이썬을 루프에 넣으면

# pyecho.py
while True:
    with open("/dev/stdin", "r") as f:
        print(f.read())

그런 다음 초기 반복(두 번의 쓰기 필요) 후에는 다시 예상대로 작동합니다.

관련 정보