2012-05-21 42 views
0

我正在unix系統下編寫守護進程,並在代碼中使用std::cout來調試no silent模式。當我開始daemon/silence mode,I close(STDIN_FILENO),STDOUT_FILENOSTDERR_FILENO的過程時,可節省打印到std::cout的資源。似乎關閉時,它寫入/dev/null,不是嗎?在靜音模式下避免資源開銷是否正確並且是最好的方法?或者,也許我需要使用全球silent flag並每次打電話給std::cout之前檢查它?或其他解決方案?謝謝,對不起我的英語。C++守護進程靜默模式

回答

1

std::cout通過寫入STDOUT_FILENO來實現。關閉後者打破了前者。

+0

這是讓守護進程沉默的最好方法嗎? – abrahab

+1

@abrahab:*最好的方法是從守護進程中刪除輸出語句。通常的方法是將stdout和stderr重定向到'/ dev/null'。也許一個命令行開關或環境變量可以使守護進程選擇一些冗長的級別,有選擇地寫一些事情而不是其他的。 – wallyk