我已经看到这两种forms的pipe道在Perl中open 。
一个是简单的pipe道打开
open FH,'| command';
和其他是安全的pipe道打开
open FH,'|-','command';
现在有什么用-在第二个? 他们都写信给pipe道。 我知道-叉新的过程。
用bash脚本设置p4客户端
保持活着ssh会话与脚本bash / expect
rm如何工作? rm做什么?
共享进程和DLL之间的全局/静态variables
如何在命令行上使用aspell
简单| 也创造新的过程?
我们何时/应该使用安全pipe道打开|- ?
从远程服务器findgit分支的名字
wkhtmltopdf,使用stdin时如何使用相对path图片
在Linux中监视文件访问
用perf_events / oprofile分析Linux上JIT的输出结果?
你必须使用-当你计划(你想)从你自己的叉子( -| )或自己的叉子|- 。 open函数返回父进程中的子进程ID,子进程返回0。 例:
if( open(TO,"|-") ) { # Parent process print TO $from_parent; } else { # Child process $to_child = <STDIN>; exit; }
没有区别
open my $PIPE,'| command';
VS
open my $PIPE,'command';
其实“安全”是开放的
open my $PIPE,'program',@one_or_more_args;
此版本保证直接启动程序; 没有shell被调用。 它还可以避免将参数变成shell文字。 换一种说法,
open my $FH,@one_or_more_args;
类似于
use String::ShellQuote qw( shell_quote ); open my $FH,'|'.shell_quote('program',@one_or_more_args);
但没有外壳(所以浪费的资源少了,你得到的程序的PID而不是一个外壳,你知道程序是否死于信号)。
不幸的是,没有像system一样的没有参数的程序的语法。
(也有open my $PIPE,"|-"没有更多的参数,但这是别的。)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。