【发布时间】:2013-08-21 19:02:30
【问题描述】:
我在阅读 Richard Stevens“UNIX 环境中的高级编程”时发现了这个主题。
*8.13。系统功能
*****因为system是通过调用fork、exec、waitpid来实现的,所以返回值有3种**
1.如果 fork 失败或 waitpid 返回 EINTR 以外的错误,则系统返回 –1 并设置 errno 以指示错误。
2。如果exec失败,表示shell无法执行,返回值就好像shell执行了exit(127)一样。
**3。否则,fork、exec 和 waitpid 这三个函数都会成功,并且 system 的返回值是 shell 的终止状态,格式为 waitpid 指定的格式。******
据我了解,我们 fork() 通过 cmdstring name 和 exec() 将其与父进程分开。
但无法弄清楚 waitpid() 函数 如何成为 system() 函数 调用的一部分?
下面的链接ambiguous constructor call while object creation没有给我正确的答案。
【问题讨论】: