Perl中“系统”功能的背后是什么?
发布时间:2020-12-15 23:27:42 所属栏目:大数据 来源:网络整理
导读:我可以认为它将打开一个 shell,执行参数( shell命令)并以标量返回结果. 但是,在Perl脚本中执行 system函数比shell命令更快. 它会在C中调用此命令吗? 如果是,那么它们之间有什么区别 rmdir foo 和 system('rmdir foo'); 解决方法 两者之间的区别在于第二个将
我可以认为它将打开一个
shell,执行参数(
shell命令)并以标量返回结果.
但是,在Perl脚本中执行 system函数比shell命令更快. 它会在C中调用此命令吗? 如果是,那么它们之间有什么区别 rmdir foo 和 system('rmdir foo'); 解决方法
>两者之间的区别在于第二个将打开(fork)子进程(将是rmdir命令),而第一个将使用API??进行直接Unix系统调用而无需打开进程.打开子进程是昂贵的资源.
> system()调用将始终打开一个子进程来执行,但是,它可以打开一个shell,然后将所需的程序作为自己的子进程分叉(从而导致2个子进程),或者分离程序直接作为儿童过程. Perl将在系统()调用期间打开shell的选择在perldoc -f system中详细说明.短(而不是100%准确)版本是: >如果系统调用只有一个参数,并且参数的计算结果为包含shell元字符的字符串,则首先将分叉一个shell. 从而: system("rmdir foo"); # forks off rmdir command directly system("rmdir","foo"); # forks off rmdir command directly system("rmdir foo > out.txt"); # forks off a shell because of ">" (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |