나는 두 명의 자식과 부모 간의 통신을 위해 파이프를 생성하는 시나리오가 있습니다. 부모는 (쓰기 함수를 사용하여) 파이프에 데이터를 쓰고 각각의 파일 설명자를 닫습니다. 문제는 내가 파이프에 다시 데이터를 쓰려고 할 때 쓰기 함수가 오류 코드 -1을 반환한다는 것입니다. 나는 쓰기 끝이 이전 반복에서 닫혔 기 때문에 그것을 생각한다. 그런 다음 해당 파일 설명자가 한 번 닫힌 후에 해당 파일 설명자를 여는 방법.닫힌 파일 설명자를 다시 여는 방법
일부 파일의 경로가 arguement로 필요한 open() 함수를 사용해 보았습니다. 하지만 내 응용 프로그램에서 어떤 파일도 사용하고 있지 않습니다. 간단한 파일 기술자 (int arr [2])가 있습니다.
위의 시나리오를 파이프로 구현할 수 있습니까?
우리는 파일 기술자를 닫습니다 해달라고하면 2로 알려져있다 열려진 있습니다, 그것은 각각의 스트림에 EOF를 전송하지 않습니다. 따라서 자식 프로세스에서 입력을 위해 계속 대기합니다. 하지만 스트림의 제한된 횟수를 스트림에 쓰고 파이프의 다른 끝에서 동시에 읽고 싶습니다. – chaitu
@chaitu : 쓰기 끝을 닫지 않으면 읽는 끝이 파일 끝을 표시하지 않습니다. . 즉, 자식에게 더 많은 메시지를 보내려면 메시지의 끝을 나타 내기 위해 파일 끝 이외의 것을 사용해야합니다 (일반적으로 고정 길이 메시지를 사용하여 자식이 얼마나 오래인지 알 수 있음). 그것은). – caf