我的程序如何检测它是如何启动的:有人使用命令行还是其他进程?
该程序有一个可选的交互式部分,当它被另一个进程启动时我要压制它 - 在后台运行;但是当它从一个终端开始时,我希望它能够进行交互式比特。
[edit]如果可以从C ++程序中完成。
答案 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)文件描述符是否连接到终端(这意味着它是交互式会话)。