繁体   English   中英

perl系统返回代码是否与$相同?

[英]Is perl system return code the same as $?

Perl的system()调用的返回值是否始终与$完全相同? 会在同一个通话后立即发送?

是否有任何内核/外壳/系统故障模式不是这种情况,例如系统甚至无法启动子外壳?

(我不是在问这些位的编码,返回码(高位),信号和核心转储标志。)

Perl的system()调用的返回值是否始终与$完全相同? 会在同一个通话后立即发送?

是的,它们都来自Unix系统调用wait()

根据system

返回值是wait调用返回的程序的退出状态。

perlvar

$?
这只是传统的Unix wait()系统调用返回的16位状态字(或者看起来像这样)。


注意:根据wait(2)的原型,即pid_t wait(int *stat_loc) ,显然, system的返回值不是wait(2)的返回值,它是一个进程ID。 这是wait(2)通过其第一个参数返回的子进程退出状态,因为C函数只能返回一个值,如果要返回多个值,则需要将它们包装在结构中并返回一个值该结构类型,或通过指针类型的参数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM