나는 c에서 linux 데몬을 만들려고하는데 어떤 사람이 sample code on this page 인 것을 발견했다.STDIN/OUT/ERR 리디렉션
나는 STDIN, STDOUT 및 STDERR (/ dev/null /로)을 리디렉션하려는 경우를 제외하고 모든 코드를 이해합니다. 나는 또한 여기에 이러한 리디렉션해야 관련이 질문을 발견 (내가 이해).
는 특히 내 질문에 관련 코드의 섹션은 다음과 같습니다
/* Route I/O connections */
/* Open STDIN */
i = open("/dev/null", O_RDWR);
/* STDOUT */
dup(i);
/* STDERR */
dup(i);
는 dup()
단순히 파일 기술자를 복제하는 것이 함축 man page for dup() 읽기.
그래서 어떻게 리디렉션을하는지 이해할 수 없습니까? 컴파일러가 위의 줄에있는 주석에서 힌트를 얻고 있습니까? 아니면 일부 코드가 누락 되었습니까?, 잘못 되었습니까? 아니면 뭔가 빠졌습니까? DUP의 사람 페이지에서
대해 그 일례를 가장 낮은 번호 않는 기술자 되었습니까 사용 파일 디스크립터 newfd를 사본을 작성 새 STDIN, STDOUT 및 STDERR을 작성하기 전에 닫으십시오. 그래서 사용 가능한 다음 free fd는 0, 1, 2가됩니다. – infixed
[C에서/dev/null로 STDIN, STDOUT, STDERR을 리디렉션 할 수 있습니다] (http://stackoverflow.com/questions/4263173/redirecting -stdin-stdout-stderr-dev-null-in-c) –