스레드 A와 스레드 B가 2 개 있습니다.파이썬에서 파이프 파일 기술자를 사용할 때 EOF를 확인하는 방법은 무엇입니까?
스레드 A는 sys.stdin 또는 파이프의 읽기 끝 (os.pipe() 사용)에서 데이터를 가져옵니다. sys.stdin 또는 파이프의 읽기 끝에서 읽은 데이터가 모두 TCP 소켓에서 전송됩니다. 스레드 A는 select.select()를 사용하여 sys.stdin 또는 파이프의 읽기 끝에서 읽어야하는지 여부를 결정하고 select.select()는 1 초의 시간 초과를 사용하여 주기적으로 소켓 연결이 있는지 확인합니다 여전히 거기에.
스레드 B는 파이프의 쓰기 끝을 보유하고 일반적으로 실제 길이가 1 인 문자열을 파이프에 쓰고 쓰기 끝을 닫습니다.
스레드 A가 파이프에서 EOF를 확인하는 방법은 무엇입니까? 기본적으로 스레드 A가 더 이상 사용되지 않을 때 파이프를 닫으려고합니다. 그러나 sys.stdin에서 사용할 수있는 데이터가 불필요하게 차단되므로 pipe에서 read()를 차단할 위험이 없습니다.
도움을 주시면 감사하겠습니다. 고맙습니다!
감사합니다. 매우 유용했습니다. 스레드 B는 내가 언급 한 것 이상을 수행하며 제거 할 수 없습니다. 방금 프로그램을 단순화하여 누군가 내 질문에 대답하기에 충분한 정보 만 제공하려고했습니다. 다시 한 번 감사드립니다! – pcd6623