我有一个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中),我应该如何实际处理这个密码传递?
感谢您的帮助。