c++ - C++ 中的 system() 函数在一段时间内工作正常,但由于 ECHILD 错误而在一段时间内失败返回 -1。为什么?

标签 c++ system

我在 C++ 中每 5 分钟执行一次 system() 函数。它在一段时间内工作正常,但由于 ECHILD 错误而在一段时间内失败并返回 -1。为什么有时会发生此问题?为了避免这种情况,我将 SIGCHLD 设置为 SIG_DFL,此后它工作正常。但是在其他功能的程序中有一个 SIGCHLD 的处理程序。将SIGCHLD设置为SIG_DFL对其他功能有影响吗?

最佳答案

可能您应该做的是在调用 system() 之前将 SIGCHLD 设置为 SIG_DFL,然后在 system() 返回后重新注册您的 SIGCHLD 处理程序。

但也许不仅如此,您还应该认真考虑为什么要调用 system()。它通常不是完成这项工作的最佳工具。

关于c++ - C++ 中的 system() 函数在一段时间内工作正常,但由于 ECHILD 错误而在一段时间内失败返回 -1。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23166558/

相关文章:

c++ - 将 vector 的迭代器发送到函数中。 (C++)

c++ - 有没有办法在 C++/MFC 中使用 SHORT 系统时间图片?

r - 高效的 list.files

java - System.out.println 和 System.err.println 乱序

c - 函数 sleep() 在被动时是主动的吗?

c++ - istream::ungetc() 与 stringbuf(在 stringstream 中使用)一起工作的可能性有多大?

c++ - 使用 XMM0 寄存器和内存提取(C++ 代码)比仅使用 XMM 寄存器的 ASM 快两倍 - 为什么?

c++ - 根据 value_type 调用适当的构造函数 : integer or float

c++ - const_cast 与 reinterpret_cast

java - 如何模拟客户端和服务器之间的套接字断开连接(在 Windows 上)?