- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 Linux 新手。我正在尝试使用 waitid() 来等待子进程。当我尝试使用 gcc 编译包含以下行的文件时:
id_t cpid = fork();
siginfo_t status;
waitid(P_PID, cpid, &status, WEXITED);
生成了以下错误:
error: ‘P_PID’ undeclared (first use in this function)
我包含了以下库:
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <signal.h>
#include <string.h>
#include <time.h>
我错过了什么吗?
另一个问题是如何使用 WIFSIGNALED()
从 siginfo_t
类型中检索信息?
最佳答案
您需要包含<sys/wait.h>
并定义_XOPEN_SOURCE
, as documented in the manual .
WIFSIGNALED
宏必须与从 wait
获得的整数状态一起使用, waitpid
或waitid
。以waitpid
为例,状态为 si_status
siginfo_t
的成员结构。换句话说,您可以使用 WIFSIGNALED(info.si_status)
, info
是 siginfo_t
类型的结构您之前传递给其地址 waitid()
.
关于无法使用 waitid() 和 P_PID 进行编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26380736/
waitid/waitpid 是否消耗任何未决的 SIGCHLD? 例如,如果一个线程调用 waitid 而另一个线程调用 sigwaitinfo 或从 signalfd 读取,我是否可以假设两个调用
我是 Linux 新手。我正在尝试使用 waitid() 来等待子进程。当我尝试使用 gcc 编译包含以下行的文件时: id_t cpid = fork(); siginfo_t status; wa
此代码示例基于 Michael Burr 在 How can I wait for any/all pthreads to complete? 中的回答. 我尝试修改解决方案以改为依赖 waitid。
我有来自 APUE 的代码我需要用 waitid() 替换 wait() 的书和练习: #include "apue.h" #include int main(void) { pid_t
我正在等待我克隆的进程。但是,当父级对 waitid 进行系统调用时,我在使用 strace 时得到一个 -1 ECHILD。尽管克隆调用返回了创建的子进程的 PID,如下所示: clone(chil
void *stack; stack = malloc(STACK_SIZE); if (-1 == clone(child_thread, stack + STACK_SIZE, 0, NULL))
我是一名优秀的程序员,十分优秀!