2010-09-28 63 views
1

我的程序如何檢測它是如何啓動的:通過某人使用命令行或其他進程?Linux:如何檢測進程是如何開始的

該程序有一個可選的交互式部分,我想在其它進程啓動時禁止 - 在後臺運行;但是當它從終端啓動時,我希望它能夠執行交互式位。

如果可以從C++程序中完成。

回答

3

檢查,如果你的標準輸入isatty,如

if (isatty(0)) 
{ 
    /* interactive! */ 
} 
+0

除非調用程序重定向stdin,否則這將不起作用。 – Darron 2010-09-28 19:50:19

1

通常,只需提供調用程序可用於以非交互模式運行的命令行參數即可。你可以做更有趣的事情,但這很常見 - 很多時候,它很安靜。

+0

好的,可能可以使用。我會考慮的。我知道我曾經在某個地方看過一個程序/腳本來檢測它是否是從終端開始的......我有一個副本,但是它出現在天空中的偉大的大桶中,這是一個事件引起了我對這個網站上備份的問題。 – slashmais 2010-09-28 14:39:15

1

Bash有一個簡單的測試,將告訴你如果腳本是從TTY開始:

if [ -t 0 ]; then 
    echo "Interactive code goes here" 
fi 
1

< unistd.h中>定義isatty函數,您可以用來檢查輸入(0)或輸出(1)文件描述符是否連接到終端(這意味着它是一個交互式會話)。

相關問題