문제

파이프를 만들었고 dup2 ()를 사용하여 스트림 1 & 2 (stdout & stderr)를 그 파이프로 덮어 씁니다.

이제 fprintf를 사용하여 스트림 1 또는 2에 쓰기를 원하지만 내 프로그램은 파이프의 다른쪽에 아무것도받지 못하는 것 같습니다. printf ()를 사용해 보았지만 이것이 기본적으로 stdout 또는 stream 1에 쓰는지 확실하지 않습니다. 그것이 스트림 1에 글을 쓰면 내 코드의 더 깊은 곳에 문제가 있다고 생각합니다.

기본적으로 스트림을 나타내는 int가 주어지면 fprintf ()에서 사용하기에 적합한 파일을 어떻게 얻을 수 있습니까?

도움이 되었습니까?

해결책

파일 디스크립터가 있고 원하는 경우 FILE*, 당신이 사용할 수있는 fdopen

FILE *fdopen(int fd, const char *mode);

fdopen posix 함수이며 문서화되었습니다 man fdopen. 반대를 수행하려면 사용할 수 있습니다 fileno

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top