C语言中的system()和Perl中的system()有什么区别?

4
< p > system() 函数将从 C 和 Perl 脚本启动一个新进程。

就错误代码的表示方式而言,由 C 和 Perl 脚本调用 system() 的进程有何区别?

1个回答

8
一些研究结果如下:
返回值是由wait调用返回的程序退出状态。要获取实际的退出值,向右移动8位(见下文)。另请参阅"exec"。这不是您想要使用来捕获命令输出的方法,对于这个问题,您应该使用简单的反引号或qx//,如perlop中所述。返回值为-1表示启动程序失败或wait(2)系统调用出错(检查$!的原因)。
而wait的文档则说:
在您的系统上,像wait(2)系统调用一样运行:等待子进程终止并返回已死进程的pid,如果没有子进程,则返回-1。状态在$?和${^CHILD_ERROR_NATIVE}中返回。请注意,返回值为-1可能意味着子进程正在自动清除,如perlipc中所述。
来源:这段内容来自perldoc。这里有一个关于Perl中system命令的教程

@eliben,您能否提供更多信息或一些详细工作的链接给我? - Sachin Chourasiya
@Sachin:链接到源代码 - Eli Bendersky
3
C语言的system()函数文档也是这么说的——如果fork失败,它返回-1;否则返回wait()的结果。 - hobbs
5
我讨厌包含垃圾信息的about.com链接。 - Sinan Ünür

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接