프로그램 (유닉스 스타일)을 작성할 때 둘 이상의 stdout 및 stdin 채널을 처리하고 주소를 관리 할 수 있습니까?프로세스에 stdout과 stdin이 둘 이상있을 수 있습니까?
0
A
답변
3
아니오; 주어진 시간에 하나의 표준 입력과 하나의 표준 출력이 (많아야) 존재합니다. 궁극적으로, 질문은 유닉스를 특별히 언급하기 때문에, 표준 입력은 파일 기술자 0이고 표준 출력은 파일 기술자 1이며 주어진 숫자를 갖는 파일 기술자는 하나뿐입니다.
0
정의에 따르면 1 개의 표준 입력과 1 개의 표준 출력이 있습니다.
그러나 명명 된 파이프를 살펴볼 수 있습니다. 명명 된 파이프를 사용하면 다음과 같은 작업을 수행 할 수 있습니다.
mkfifo pipe1
mkfifo pipe2
cat a.a > pipe1
cat b.b > pipe2
yourapp pipe1 pipe2
나는 하나의 프로세스가 하나 이상의 표준 출력을 갖는 것을 의미한다고 생각합니다. 예를 들어'printf'의 출력은 어디에 있습니까? – Dolda2000
오버로드 된 메서드를 통해 인쇄 할 특정 채널을 선택하는 방법을 상상했을 것입니다. 나는 websocketd 데몬을보고 있었고, 새로운 대상 스트림을 작성하는 장기 실행 프로세스로 액터를 구현할 수 있는지 궁금해했습니다. 나는 소켓이나 다른 가벼운 통신 스트림으로 작업하는 것이 최선의 선택 일 것이라고 생각하지만, srd stdout의 단순성을 원했다. – schrepfler
그런 경우,'fopen()'과'fprintf()'를 찾고있는 것처럼 들리겠습니까? 아니면 내가 오해하고 있습니까? – Dolda2000