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

在Perl中修改一个subprocess的环境

我不知道为什么这不起作用,但也许我已经过于简单/过于复杂的事情

我正在编写一个Perl脚本,最终需要调用一个外部程序。 值得一提的是,这个程序需要LD_LIBRARY_PATH环境variables的修改版本,以便find供应商不在标准位置安装的一对库。

好的,环境是%ENV ,可以重写,是吗?

我想如果我改变父母的LD_LIBRARY_PATH ,它会影响孩子的dynamic链接

C中使用共享内存的IPC

内存映射文件修改通知/信号

如果父母没有调用wait(),那么相同父项的两个子项不使用pipe道进行通信

用System V信号量实现条件variables

UNIX / Linux IPC:从pipe道读取。 如何知道运行时的数据长度?

所以我有

use Env qw(@LD_LIBRARY_PATH); use IPC::System::Simple qw(capturex $EXITVAL); # We need these to establish the call to rsq later my ($rsqexe,$rsqhome,$suffix) = fileparse($config->rsq()); push @LD_LIBRARY_PATH,$rsqhome; eval { $output = capturex( $config->rsq(),qq/"$source"/ ); };

但是subprocess死了,显示共享库无法find。

我怎样才能改善这个?

我需要在成功执行后检查$output的内容

如何撤消信号量的最新操作SEM_UNDO?

与DLL通信

写入SOCK_SEQPACKETprimefaces?

Linux上用于Java / C ++应用程序的共享内存IPC的很好替代scheme

跨内存附加。 无法使用pipe道发送远程地址

eval { $output = capturex( $config->rsq(),qq/"$source"/ ); };

问题在于:我没有检查$@ (如果use ENGLISH;则不是$EVAL_ERR use ENGLISH; )

如果我有,我会看到问题是引用qq/"$source"/ – 因为capturex() 调用shell(这是所需的行为)引号破坏文件名称(即test.pdf存在,但""test.pdf""不)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐