微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

pipe道打开“|”之间的区别 和'| – '安全pipe道打开

我已经看到这两种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的输出结果?

每次都需要调用timer_delete来删除定时器吗?

你必须使用-当你计划(你想)从你自己的叉子( -| )或自己的叉子|- 。 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] 举报,一经查实,本站将立刻删除。

相关推荐