【发布时间】:2016-12-11 05:11:19
【问题描述】:
我正在尝试在 while-true 循环中等待 waitpid() 和 read()。具体来说,我正在等待这两个事件之一,然后在循环的每次迭代中对其进行处理。目前,我有以下实现(这不是我想要的)。
while (true) {
pid_t pid = waitpid(...);
process_waitpid_event(...);
ssize_t sz = read(socket, ....);
process_read_event(...);
}
这个实现的问题是第二个事件的处理依赖于第一个事件的完成。我希望处理循环的每次迭代中首先出现的事件,而不是顺序处理这两个事件。我该怎么做?
【问题讨论】:
-
你想用异步的方式来做吧?
-
这更像是一个线程问题。您可以搜索如何在 C 中实现线程。
-
请详细说明您的问题。什么是waitpid,你在读什么。特别是,您是否只是有一个子进程并想读取其输出但只需要知道它何时结束?
标签: c linux events concurrency condition-variable