Linux:如何检测进程的启动方式

时间:2010-09-28 14:33:46

标签: linux detect

我的程序如何检测它是如何启动的:有人使用命令行还是其他进程?

该程序有一个可选的交互式部分,当它被另一个进程启动时我要压制它 - 在后台运行;但是当它从一个终端开始时,我希望它能够进行交互式比特。

[edit]如果可以从C ++程序中完成。

4 个答案:

答案 0 :(得分:3)

检查你的标准isatty,例如

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

答案 1 :(得分:1)

通常,只提供调用者可用于在非交互模式下运行的命令行参数。你可以做更好的事情,但这很常见 - 很多时候,它是安静的。

答案 2 :(得分:1)

Bash有一个简单的测试,告诉你脚本是否是从TTY启动的:

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

答案 3 :(得分:1)

< unistd.h中>定义 isatty 函数,可用于检查输入(0)或输出(1)文件描述符是否连接到终端(这意味着它是交互式会话)。