在perl中处理exec或system中的管道

时间:2016-04-01 03:58:43

标签: linux perl pipe exec system

我有一个perl CGI脚本,它在用这些变量执行另一个perl脚本之前从用户那里获取一堆变量。此执行是分叉和后台的,因此浏览器不会等待脚本完成。 ./processor.pl的退出状态对浏览器用户来说并不重要,因为它将输出写入数据库,所以我想立即运行它并从中分离出来。

以下两个是CGI脚本如何执行作业处理器。

这有效:

exec" ./ processor.pl -j $ Trigger_Job -u $ Captured_User_Name -P $ Captured_Password > / dev / null 2>& 1&&#34 ;;

这不是:

exec" echo $ Captured_Password | ./processor.pl -j $ Trigger_Job -u $ Captured_User_Name> / dev / null 2>& 1&&#34 ;;

问题在于,如果我使用第一个示例,则用户的密码会以ps或top显示,因为它作为参数传递,这就是我尝试回复它的原因

这里是./processor.pl如何捕获输入(对于回声):

use Term::ReadKey;
ReadMode 4;
$User_Password = <STDIN>;
ReadMode 0;

如果我运行 echo bla |终端中的./processor.pl -j 12 -u blabla ,它可以正常工作,所以我知道在processor.pl中正确捕获了echo&#39; d密码。所以我怀疑是exec没有正确处理管道或类似的东西。或者也许是TTY问题 - 但我真的不知道。

为什么回声不像我期望的那样(比如在bash中),我应该如何实际处理这个密码传递?

感谢您的帮助。

0 个答案:

没有答案