[英]Is perl system return code the same as $?
Perl的system()调用的返回值是否始终与$完全相同? 会在同一个通话后立即发送?
是否有任何内核/外壳/系统故障模式不是这种情况,例如系统甚至无法启动子外壳?
(我不是在问这些位的编码,返回码(高位),信号和核心转储标志。)
Perl的system()调用的返回值是否始终与$完全相同? 会在同一个通话后立即发送?
是的,它们都来自Unix系统调用wait()
。
根据system
:
返回值是
wait
调用返回的程序的退出状态。
和perlvar
:
$?
这只是传统的Unixwait()
系统调用返回的16位状态字(或者看起来像这样)。
注意:根据wait(2)
的原型,即pid_t wait(int *stat_loc)
,显然, system
的返回值不是wait(2)
的返回值,它是一个进程ID。 这是wait(2)
通过其第一个参数返回的子进程退出状态,因为C函数只能返回一个值,如果要返回多个值,则需要将它们包装在结构中并返回一个值该结构类型,或通过指针类型的参数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.