在使用waitpid
函数时,如果出现EINTR
错误,表示调用被中断,即接收到了一个信号。解决这个问题的一种方法是重新调用waitpid
函数。
可以使用一个循环来重试waitpid
函数,直到成功返回或者出现其他错误。示例代码如下:
#include#include #include #include pid_t waitpid_retry(pid_t pid, int *status, int options) { pid_t result; while ((result = waitpid(pid, status, options)) == -1) { if (errno == EINTR) { continue; // 被中断,则重新执行waitpid } else { perror("waitpid"); break; } } return result; }
在调用waitpid_retry
函数时,如果返回值不是-1,表示等待成功,否则可以根据需要进行处理。
注意:waitpid_retry
函数只是一种简单的处理方式。在实际使用中,可能需要根据具体需求做出适当的修改。