【发布时间】:2018-03-25 23:27:26
【问题描述】:
我有一个 Perl 脚本,它在临时目录 $tempdir 中生成一个 pdf $pdffile,并使用 xdg-open 打开它。一旦用户完成查看文件,脚本应该删除工作目录。这是我遇到问题的代码部分:
system "xdg-open $pdffile";
remove_tree($tempdir);
我对@987654325@的理解是应该等到命令返回后再继续程序。但是,当我执行此代码时,我收到一条消息“无法打开 /tmp/diff14969/diffs.pdf”。如果我在system 命令中将xdg-open 替换为okular(这是我的系统默认设置),它会按我的意愿工作。 (同样,如果我对系统上的任何 pdf 查看器进行硬编码,它也可以工作,但出于可移植性的原因,我不想这样做。)
我的猜测是xdg-open 正在一个新进程中启动查看器,而system 命令只等待xdg-open 完成。一旦xdg-open 成功返回,脚本会在查看器打开文件之前删除临时目录。如何让脚本等待实际查看器完成?
【问题讨论】: