파이썬에서 명명 된 파이프를 사용하여 IPC를 구현하려고하는데 문제가 있습니다. open
블록 내가 잘못 뭐하는 거지 open(path, 'r')
파이썬은 영원히 FIFO 블록을 엽니 다.
와
import os
path = '/tmp/fifo'
os.mkfifo(path)
fifo = open(path, 'w') # never returns
같은 과정?
파이썬 3.6.1
파이썬에서 명명 된 파이프를 사용하여 IPC를 구현하려고하는데 문제가 있습니다. open
블록 내가 잘못 뭐하는 거지 open(path, 'r')
파이썬은 영원히 FIFO 블록을 엽니 다.
와
import os
path = '/tmp/fifo'
os.mkfifo(path)
fifo = open(path, 'w') # never returns
같은 과정?
파이썬 3.6.1
기능 os.mkfifo(path)
(모든 폴더가 모든 경로를 구축 존재하지 않는 경우) 필요한 경로를 만들 수 있습니다.
그래서, 당신은 다음과 같이 파일 이름을 추가해야합니다 : 서버가 읽기 위해 FIFO를 열고, 클라이언트 : fifo = open(path + file, 'r')
일반적으로
는 FIFO를은 "클라이언트"와 "서버"형 프로세스 간의 만남으로 사용된다 쓰기 위해 열립니다. FIFO에 열리지 않습니다()에서는 mkfifo 주 - 그냥
이 os.mkfifo에 따르면, 당신은 fifo = open(path, dir_fd='w')
작동하지 않습니다. 'os.mkfifo (path, dir_fd = 'w')'throws'TypeError : 인수는 정수 또는 None이어야하고 str은 아니며 dir_fd = os.O_WRONLY는 그렇지 않습니다. 그러나 결과는 동일합니다 :'open' 블록 영원히 –
이 알아 낸 사용할 필요가 랑데부 지점을 만듭니다. open
블록이 파이프가 다른 쪽에서 열릴 때까지
'path + file'은 문자열을 연결하고, 내 경우에는'/ tmp'가 도전적으로 존재하므로 생성 할 필요가 없습니다. 'os.mkfifo'는 파일을 성공적으로 만듭니다.'''ls -latrh/tmp/pipe prw-r-r-- 1 올렉 사용자 0 10 월 3 일 08:30/tmp/pipe''' –