我想在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);
讀man page for dup()它意味着dup()
簡單地複製一個文件描述符。
所以我不明白這是怎麼做的重定向?編譯器是從上面的行中的註釋中獲得提示嗎?或者它是否遺漏了一些代碼?是錯誤的嗎?或者我錯過了什麼?
這是否例子在創建新的STDIN,STDOUT和STDERR之前關閉現有的STDIN,STDOUT和STDERR?因此,下一個免費的fd使用將是0,然後1,然後2 – infixed
可能重複[重定向STDIN,STDOUT,STDERR到/ dev/null在C](http://stackoverflow.com/questions/4263173/redirecting -stdin-標準輸出-stderr的至DEV-空在-c)的 –