c - 后台运行的程序的退出状态

2024-06-26

我有一个任务,其中我必须创建一个迷你 shell,它能够执行很多操作,包括作业控制。我设法使用 fork 和 execvp 创建新的工作。但我还想获取 execvp 运行的程序的退出代码。根据我从其他帖子中查找到的内容,我可以使用以下方法来做到这一点if(WIFEXITED(status)).

但是,如果用户在 shell 中输入带有进程名称的“&”,我们还需要在后台运行该进程。因此,当子程序在后台完成时等待父进程等待是没有意义的。我可以设置任何中断来通知父进程子进程已结束吗?然后我可以使用if(WIFEXITED(status))语句来获取退出代码。

Example

sleep 100 &

将在后台运行,同时我可以在前台同时执行其他 shell 命令。


如果您没有做任何特别的事情,家长会收到SIGCHLD当孩子去世时。但要小心,多个子进程可以同时终止,并且您将收到一个信号。处理这个问题的正确方法是循环(在信号处理程序中):

while (waitpid(-1, NULL, WNOHANG) > 0)
    /* Stuff. */
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

c - 后台运行的程序的退出状态 的相关文章

  • 获取当前用户的 NetworkCredential (C#)

    我正在尝试从控制台应用程序调用 Web 服务 并且我需要向客户端提供System Net NetworkCredential object 是否有可能创建一个NetworkCredential启动应用程序的用户的对象而不提示输入用户名 密码
  • gets 和 scanf 有什么区别?

    如果代码是 scanf s n message vs gets message 有什么区别 似乎两者都获取消息的输入 基本区别 参考您的特定场景 scanf 遇到一个时结束接受输入whitespace newline or EOF gets
  • 如何将 CroppedBitmap 转换为 BitmapImage

    我正在尝试将 CroppedBitmap 转换为 BitmapImage 编辑 不使用内存流 我尝试过直接转换它 似乎这不是一个选择 这应该没那么难 我正在尝试剪切 BitmapImage 的一部分 并创建一个仅包含新裁剪的 Bitmap
  • 在异步方法中使用时 HttpClient 标头被清空

    我正在使用 NET Framework 4 6 1 我的 Web api 中有一个控制器 其中有静态 HttpClient 来处理所有 http 请求 在 IIS 上托管我的应用程序后 大约每月一次 我的应用程序的所有传入请求都会出现以下异
  • 在宏中使用 # [重复]

    这个问题在这里已经有答案了 请解释一下代码 include
  • C# Visual Studio 动态代码片段

    我正在开发一个 WinForms 项目 每天都会执行一些重复性的任务 所以我认为创建代码片段 https msdn microsoft com en us library ms165394 v vs 110 aspx会帮助我 但它仅适用于固
  • 多态性中基类缺少虚拟析构函数 = 资源泄漏?

    我们知道 如果要多态地使用基类 则需要将基类的析构函数指定为 virtual 否则程序中可能会出现资源泄漏 因为只会调用基类析构函数 而不会调用派生对象析构函数 我们还知道构造函数 析构函数纯粹是初始化 未初始化构造 而operator n
  • 通过 ssh 运行具有嵌套引号的 shell 命令

    我有以下 shell 命令 ssh user host df grep dev awk BEGIN print DISK USAGE STATUS split 5 a var GREEN print 1 5 var column t 我需要
  • 将标准库添加到C++ eclipse项目中

    一个 非常 新手 C 问题 有没有办法自动将标准库添加到 C eclipse 项目中 我安装了 CDT 主要功能插件 您可以手动添加 STL 标头的路径路径和符号 gt 包含选项卡 http help eclipse org galileo
  • 如何在 C++ 中从模板基类的构造函数调用模板超类的构造函数?

    我正在使用 sublimetext3 用 c 进行编程 我的程序有一个名为 Array 的超类和一个名为 IntArray 的子类 这两个类都是模板类 目前 我在编译该程序时遇到问题 它不断在我的 IntArray cpp 文件中给出错误
  • Linux C++ 调试器

    我正在寻找完美的 Linux C 调试器 我不期望成功 但搜索应该提供丰富的信息 我是一个非常有能力的 gdb 用户 但 STL 和 Boost 很容易压垮我的调试技能 并不是说我无法深入了解数据结构的内部结构 而是它需要很长时间 我通常会
  • 如何“全局”捕获对象实例中引发的异常

    我目前正在编写一个 winforms 应用程序 C 我正在使用企业库异常处理块 遵循我所看到的相当标准的方法 IE 在 Program cs 的 Main 方法中 我已将事件处理程序连接到 Application ThreadExcepti
  • WPF MVVM后台打印数据绑定问题

    我正在使用 wpf mvvm 开发一个销售点应用程序 在交易生命周期的许多阶段 都会在后台打印收据 我已经使用其他示例在后台生成和打印收据 我正在后台打印一个 UserControl 一切看起来都很棒 然后 我为该控件创建了 ViewMod
  • 链接错误:xxx 已在 *****.LIB 中定义:: 究竟出了什么问题?

    Problem 我正在尝试使用一个名为DCMTK http dicom offis de dcmtk它使用了一些其他外部库 zlib libtiff libpng libxml2 libiconv 我已经从同一网站下载了这些外部库 LIB
  • BASH:[ ](测试)行为不一致

    在我的狂欢中test有态度以身份退出0 test n echo true echo false gt true while test n echo true echo false gt false 这意味着当它根本没有收到任何参数时 它假设
  • 如何通过 Excel 互操作对象自动调整列大小?

    下面是我用来将数据加载到 Excel 工作表中的代码 但我希望在加载数据后自动调整列的大小 有谁知道自动调整列大小的最佳方法 using Microsoft Office Interop public class ExportReport
  • 没有类型的 IEnumerable 属性

    我正在尝试创建一个类似于来自 MSDN 的官方 DataGrid ItemsSource 的属性 public IEnumerable ItemsSource get set 这提供了对任何派生类中任何类型的支持 有了这个 我可以设置类似的
  • PC 上 XNA 中的信箱和缩放

    有没有一种方法可以让我基本上以 1080p 或 720p 作为默认分辨率来开发 XNA 游戏 然后根据设置的分辨率将游戏中的所有内容缩放到适当的大小 而不必在每个 Sprite 中设置缩放因子Draw 方法 我的想法是 我可以基于 1080
  • 更快的 WinSock sendto()

    我使用的是 Windows Server 2008 我的程序是用 C 编写的 我在 while true 循环中使用 WinSock2 和 sendto 来发送数据包 代码如下 while true if c snd gt max c sn
  • 具有可导出私钥的证书的“错误密钥”例外

    我正在尝试使用非对称加密来加密然后解密文件 我已经使用 makecert 创建了一个测试证书并将其安装到我的个人本地计算机存储中 将来我必须在多个服务器上安装此证书 这就是为什么我使用 pe 标志创建它 即使用可导出的私钥 证书已成功创建并

随机推荐

  • 基于布尔 prop 的条件字段验证

    我想要favoriteAlcohol仅当以下情况时才需要验证 需要的字段props isAdult传递给组件的是true Yup object shape favoriteAlcohol Yup string when props isAd
  • wpf C# 中的内存泄漏

    我正在使用 GalaSoft MvvmLight 套件和 WPF Toolkit 开发 WPF MVVM v3 5 中 应用程序DataGrid and DatePicker 但是 每次加载应用程序时 我都会面临应用程序中的大量内存泄漏Us
  • socket.io 切换命名空间

    我目前正在与 socket io 进行简单的聊天 基础知识已经可以工作 但现在我正在尝试实现 2 个不同的命名空间 我希望客户端能够通过单击按钮从一个命名空间 支持聊天 切换到另一个命名空间 朋友聊天 服务器端 default namesp
  • Python select() 行为很奇怪

    我在理解 select select 的行为时遇到一些困难 请考虑以下 Python 程序 def str to hex s def dig n if n gt 9 return chr 65 10 n else return chr 48
  • 两种方式通信服务器/客户端架构?

    我试图找出我们的新应用程序使用哪种客户端 服务器技术 即 NET Framework 的哪一部分 我们将使用 NET 3 5 SP1 用 C 编写应用程序 它将由一个作为 服务器 运行的中央服务和分布在多台计算机上的多个客户端应用程序组成
  • 如何在 Coq 中将等式两边相加

    这似乎是一个非常简单的问题 但我找不到任何有用的东西 我有声明 n x n 并想证明 n x x n x 我还没有找到什么定理允许这样做 你应该看看rewrite策略 然后也许reflexivity 编辑 有关重写的更多信息 You can
  • 更改分页部分中显示项目的数量

    有没有什么方法可以更改 grails 2x 中用户将显示 bean 的数量更改为分页部分 我在 grails 文档中找不到这个 它的意思是 参见 itemsPerPage
  • 如何在 VBScript 中使用最少的分隔符和时区格式化日期时间?

    我在 C 中有以下代码 DateTime dt GetDateTime string formatted dt ToString yyyyMMddTHHmmsszz 它返回以下格式的日期 20100806T112917 01 我希望能够在
  • 部署.Net应用程序

    我在部署 net windows 应用程序时确实有某些疑问 部署机器是否需要安装 Net框架 如果不是这样 我的应用程序安装程序 exe 是否包含编译器或类库与设置集成 另外 我可以将我的 net 应用程序部署在除windows 是否支持s
  • Dynamics CRM - 用户登录时注册插件

    我想在用户登录 Dynamics CRM 上的帐户时触发事件 例如在 CRM 旁边打开一个 Web 应用程序 这可能吗 我知道我可以编写插件来增强某些业务流程 例如帐户创建 任何建议将被认真考虑 CRM 不会公开您可以在其上注册插件的 Us
  • 评估函数卷积时出错

    这是我第一次尝试用 matlab 编写任何东西 所以请耐心等待 我正在尝试评估以下 ODE 的解 w N w w f t 与柯西条件 w 0 w 0 0 这里 N 是给定的非线性函数 f 是给定的源 我也需要这个功能 其中 G 是以下 OD
  • 使用 SFTP 上传文件

    我已成功通过 ftp 上传文件 但现在需要通过 SFTP 上传 我可以成功连接到远程服务器 创建文件并写入文件 但无法将现有文件从本地服务器上传到远程服务器 ftp put 没有通过 sftp 连接触发吗 我的代码用来编写一个文件 Send
  • Firebase 函数 - FirebaseError:在非交互模式下运行时缺少必需的选项(强制)

    我有一个 Firebase 函数 当用户的帐户被删除时 它会删除 Firestore 数据库中用户的集合 const firebase tools require firebase tools const functions require
  • 如何在 Kotlin 中获取可绘制对象?

    I am working on a small project in Android Studio I have drawable added to res drawable folder 但是我无法从代码中获取它 我尝试过不同的方法 Co
  • android java.lang.OutOfMemoryError 错误

    当我从网站下载大数据时 我收到以下错误信息 I global 20094 Default buffer size used in BufferedInputStream constructor It would be better to b
  • 如何使用 Windows API 重置 USB 设备?

    您知道如何使用 Windows XP API 来重置 USB 总线吗 换句话说 我希望操作系统踢出当前连接的所有 USB 设备 然后重新自动检测所有设备 我知道devcon http support microsoft com kb 311
  • 在 Java 代码中存储加密密钥? [复制]

    这个问题在这里已经有答案了 我正在使用 JASYPT 在我们基于 Java 的软件中对密码进行加密解密 这就是我们加密密码的方法 StrongTextEncryptor textEncryptor new StrongTextEncrypt
  • 如何将 Windows 窗体应用程序 (C++) 设置为具有 Aero/Glass 背景?

    我正在使用 Visual Studio 2010 Pro 用 C 创建 Windows 窗体应用程序 我想创建一个透明背景 即使用 Aero Glass 效果 类似于它围绕 Windows 照片查看器中 UI 底部的方式 此时 我已经查看了
  • 在next.js中获取客户端当前的url

    因此 我正在开发一个 Nodejs 应用程序 我将在该应用程序上建立我的新网站 并且我想为客户端的用户提供一种显示不同内容的方法 根据用户按下的内容重新呈现 我的想法是 例如 首先用户会看到 请先选择一个工具 然后用户将在导航栏中选择一个工
  • c - 后台运行的程序的退出状态

    我有一个任务 其中我必须创建一个迷你 shell 它能够执行很多操作 包括作业控制 我设法使用 fork 和 execvp 创建新的工作 但我还想获取 execvp 运行的程序的退出代码 根据我从其他帖子中查找到的内容 我可以使用以下方法来