system函数阻塞怎么办
发布网友
发布时间:2022-05-16 14:37
我来回答
共1个回答
热心网友
时间:2023-10-26 04:30
这是进程间同步的问题。解决方法是:fork一个子进程执行system调用,父进程调用 wait 或 waitpid 等待子进程的终止信息。
父进程调用 wait 或 waitpid 时可能会:
? 阻塞(如果它的所有子进程都还在运行)。
? 带子进程的终止信息立即返回(如果一个子进程已终止,正等待父进程读取其终止信息)。
? 出错立即返回(如果它没有任何子进程)。
wait 和 waitpid 这两个函数的区别是:
? 如果父进程的所有子进程都还在运行,调用wait将使父进程阻塞,而调用waitpid时如果在options参数中指定WNOHANG可以使父进程不阻塞而立即返回0。
? wait等待第一个终止的子进程,而waitpid可以通过pid参数指定等待哪一个子进程。