Linux:如何检测进程是如何启动的

发布于 2024-09-24 22:31:34 字数 145 浏览 3 评论 0原文

我的程序如何检测它是如何启动的:由某人使用命令行启动还是由另一个进程启动?

该程序有一个可选的交互部分,当它由另一个进程启动时我想禁止它 - 在后台运行;但是当它从终端启动时,我希望它执行交互操作。

[编辑] 是否可以通过 C++ 程序执行。

How can my program detect how it was started: by someone using the command-line or by another process?

The program has an optional interactive part that I want to suppress when it was started by another process - running in the background; but when it was started from a terminal I want it to do the interactive bit.

[edit] If it is possible to do from a C++ program.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

離殇 2024-10-01 22:31:34

检查您的标准输入是否 isatty,例如

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

Check if your stdin isatty, eg

if (isatty(0))
{
    /* interactive! */
}
一百个冬季 2024-10-01 22:31:34

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

Usually, just provide command-line arguments that the caller can use to run in non-interactive mode. You can do fancier things, but that's pretty common -- a lot of times, it -q for quiet.

策马西风 2024-10-01 22:31:34

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

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

Bash has a simple test that will tell you if the script was started from a TTY:

if [ -t 0 ]; then
    echo "Interactive code goes here"
fi
长不大的小祸害 2024-10-01 22:31:34

定义 isatty 函数,您可以使用它来检查输入 (0) 或输出 (1) 文件描述符是否连接到终端(这意味着它是一个交互式会话)。

<unistd.h> defines the isatty function that you could use to check if the input (0) or output (1) file descriptors are connected to a terminal (which means it is an interactive session).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文