检测后台操作

2024-06-08

在C中,检测程序在“后台模式”下调用的方法是什么? 我有一个程序想要以交互方式或在后台启动。

我怎样才能检测到我不应该从标准输入读取并以“已停止:tty 输入”状态结束?

我应该测试 stdin 是否已关闭?我怎样才能做到这一点 ?

编辑 : isatty 似乎是个好主意,但是如果 stdin 是管道端而不是 tty 会发生什么?


Use the tcgetpgrp() http://www.opengroup.org/onlinepubs/9699919799/functions/tcgetpgrp.html控制终端的文件描述符上的函数(例如STDIN_FILENO或 stdin 为 0)来检查当前前台进程组是否等于您自己的进程组(来自getpgrp() http://www.opengroup.org/onlinepubs/9699919799/functions/getpgrp.html)。然而,当您的程序在前台和后台之间移动时,前台进程组可能随时发生变化。例如,它可能会在您致电后立即更改tcgetpgrp()在你测试它之前。因此,如果您打算据此采取任何行动,请记住这一点;这不是一个可靠的避免方法SIGTTIN.

#include <unistd.h>
pid_t fg = tcgetpgrp(STDIN_FILENO);
if (fg == -1) {
    /* stdin is not controlling terminal (e.g. file, pipe, etc.) */
} else if (fg == getpgrp()) {
    /* foreground */
} else {
    /* background */
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

检测后台操作 的相关文章

随机推荐

  • 使用 JSF2 包含上下文根之外的资源

    我目前正在将应用程序从 JSF 1 2 和 Richfaces 3 3 升级到 JSF 2 和 Richfaces 4 我在使用 JSF2 的新功能让我的应用程序包含样式表时遇到问题h 输出样式表 http download oracle
  • 如何给RibbonComboBox数据绑定?

    我正在使用 wpf 4 和 Microsoft Ribbon 我的绑定显示 用户 列表中每个用户的名称 但下拉菜单关闭后 选择的内容未显示在 RibbonComboBox 中 Thanks 这对我有用 XAML
  • 使用天蓝色管道和诗歌,有什么方法可以避免在每个脚本中采购 ~/.poetry/env ?

    我目前使用下面的脚本来构建我的包并将其发布到私有 Azure Artifacts 源 在每个脚本中 我都必须运行该行source HOME poetry env或者找不到诗歌命令 有没有办法消除这种重复 完整脚本 trigger maste
  • 错误 102 (net::ERR_CONNECTION_REFUSED):服务器拒绝连接 [关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我开发了 Facebook 应用程序 它克隆了我网站的注册和登录部分 用户可以通过 Facebook 注册或登录我的网站
  • 如何在后台加载图像?

    问题 我正在创建一个专辑 所以每次按 时间 下一个 按钮我正在加载新图像 我想要实现的是 只有在新图像从服务器完全下载后 我才想从旧图像切换到新图像 实际上我不想在加载时显示部分图像 有什么解决办法吗 PS 类似的问题 https stac
  • x 轴上带有时间戳的静态图表

    我想创建一个从 MySQL 数据库中提取的静态值图表 图表格式为 x 轴 dd mm yy hh mm ss 对应 mysql 数据库的时间戳 y 轴为双精度值 我能够从 MySql 数据库成功检索这些值 我需要帮助通过 ZingChart
  • 安卓。 onEditorAction 从未被调用

    我正在尝试捕捉从屏幕上移除键盘的事件 并且我正在使用OnEditorActionListener班级 然而 其onEditorAction方法永远不会被调用 这是我的 XML 格式的 EditText
  • 应用程序关闭时监听 firebase 数据库更改

    我正在使用 firebase 创建一个 Ionic 2 应用程序 当应用程序关闭时 即在前台 后台和终止 我需要一种方法来侦听数据库更改 特别是在 child added 上 基本上 我想使用 WebRTC 在应用程序内拨打电话 例如 Wh
  • 构建具有“RUN apt-get update”的 Dockerfile 给我“rootfs 内的监狱进程导致‘权限被拒绝’”

    我的 Docker 主机是 Ubuntu 19 04 我使用 snap 安装了 docker 我创建了一个 Dockerfile 如下所示 FROM ubuntu 18 04 USER root RUN apt get update RUN
  • 在哪里停止使用 async /await 关键字?

    我的 DB2 400 有一个简单的心跳方法 public bool CheckConnection try using OleDbConnection db new OleDbConnection this conString OleDbC
  • 如何在 IBM Worklight 6.0 中实施 OAUTH 2.0

    在我的应用程序中 我通过实现安全领域来实现登录模块身份验证安全性 但我正在考虑实现 OAUTH2 0 身份验证 一旦我获得令牌并重新验证而不是应用程序启动 用户将得到身份验证 因此 请指导实施这一目标的先决条件是什么 我可以通过创建自定义身
  • LazyAdapter 上的 TextView 显示错误数据

    我已经基于此成功使用 ListView 和 LazyAdapter 构建了一个应用程序link https stackoverflow com questions 541966 android how do i do a lazy load
  • 这个用户定义的转换没有歧义吗?如果可以,什么规则允许?

    C 11 12 3 2 用户定义的转换仅在明确的情况下应用 然而 以下在 GCC 中编译得很好 http coliru stacked crooked com a 6191a6016d6a3ddf和 Clang 树干 struct B st
  • 为什么 Bootstrap 选项卡具有 role="presentation"?

    我正在开发一个从 Bootstrap 框架扩展的设计系统 关键目标之一是可访问性 在实现 Bootstrap 选项卡时 我发现它们适用role presentation 到其导航列表中的列表项 因此 我将 Bootstrap 模板中的一小块
  • 如何检索标记某人的所有 Facebook 照片

    我知道您可以将限制和偏移值附加到 graph facebook com id photos API 调用中以对照片进行分页 但大的限制似乎效果不佳 照片最终会丢失 我在这里读到 limit 0 为您提供了所有照片 但照片又会丢失 那么您可以
  • 在哪里可以了解有关“蚁群”优化的更多信息?

    我已经阅读了一段时间关于使用 蚁群 模型作为优化各种类型算法的启发式方法的内容 然而 我还没有找到一篇文章或书籍以介绍性的方式甚至详细地讨论蚁群优化 谁能给我指出一些资源 让我可以更多地了解这个想法 如果你懂德语 是的 抱歉 我和一个朋友写
  • 找不到“initializer_list”文件

    Context you laptop clang version Debian clang version 3 5 0 10 tags RELEASE 350 final based on LLVM 3 5 0 每当我尝试make一个需要的
  • 自定义 CSS 不适用于 Bootstrap

    首先我想说 我知道我的 HTML 并不是最高效或最干净的 我的问题是我编写的自定义 CSS 根本不适用于我的网页 Bootstrap 似乎工作得很好 但是当我尝试进行任何编辑或覆盖 Bootstrap 时 它完全不起作用 我知道我的自定义
  • 如何使用 IO Codenameone 发布图片/图像

    因为 codenameone 不能使用外部库 HttpConnection 所以我必须使用 Codenameone 提供的内部库 API 只是我已经设法使用 ConnectionRequest 将数据发布到格式化文本 字符串 我想知道是否有
  • 检测后台操作

    在C中 检测程序在 后台模式 下调用的方法是什么 我有一个程序想要以交互方式或在后台启动 我怎样才能检测到我不应该从标准输入读取并以 已停止 tty 输入 状态结束 我应该测试 stdin 是否已关闭 我怎样才能做到这一点 编辑 isatt