我的程序如何檢測它是如何啓動的:通過某人使用命令行或其他進程?Linux:如何檢測進程是如何開始的
該程序有一個可選的交互式部分,我想在其它進程啓動時禁止 - 在後臺運行;但是當它從終端啓動時,我希望它能夠執行交互式位。
如果可以從C++程序中完成。
我的程序如何檢測它是如何啓動的:通過某人使用命令行或其他進程?Linux:如何檢測進程是如何開始的
該程序有一個可選的交互式部分,我想在其它進程啓動時禁止 - 在後臺運行;但是當它從終端啓動時,我希望它能夠執行交互式位。
如果可以從C++程序中完成。
檢查,如果你的標準輸入isatty
,如
if (isatty(0))
{
/* interactive! */
}
通常,只需提供調用程序可用於以非交互模式運行的命令行參數即可。你可以做更有趣的事情,但這很常見 - 很多時候,它很安靜。
好的,可能可以使用。我會考慮的。我知道我曾經在某個地方看過一個程序/腳本來檢測它是否是從終端開始的......我有一個副本,但是它出現在天空中的偉大的大桶中,這是一個事件引起了我對這個網站上備份的問題。 – slashmais 2010-09-28 14:39:15
Bash有一個簡單的測試,將告訴你如果腳本是從TTY開始:
if [ -t 0 ]; then
echo "Interactive code goes here"
fi
< unistd.h中>定義isatty函數,您可以用來檢查輸入(0)或輸出(1)文件描述符是否連接到終端(這意味着它是一個交互式會話)。
除非調用程序重定向stdin,否則這將不起作用。 – Darron 2010-09-28 19:50:19