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

Sac*_*iya 4 c perl system process

system()函数将从C和Perl脚本启动一个新进程.

system()在错误代码的表示方面,C和Perl脚本调用的进程之间究竟有什么区别?

Eli*_*sky 8

一点研究提出:

返回值是等待调用返回的程序的退出状态.要获得实际退出值,请向右移动八(见下文).另见"exec".这不是您想要用来捕获命令输出的内容,因为您应该只使用反引号或qx //,如STRINGperlop 中的" "所述.返回值-1表示无法启动程序或wait(2)系统调用错误(检查$!,原因).

而文件wait说:

就像系统上的wait(2)系统调用一样:它等待子进程终止并返回已故进程的pid,如果没有子进程则返回-1.状态以$返回?和$ {^ CHILD_ERROR_NATIVE}.请注意,返回值-1可能意味着正在自动获取子进程,如perlipc中所述.


资料来源:这是来自perldoc.这是Perl 系统教程.

  • 我讨厌链接到spammy about.com (5认同)
  • C`system()`的文档完全相同 - 它在fork失败时返回-1,否则返回`wait()`的结果. (3认同)