5

$pdffile一時ディレクトリにpdf を生成し、.xml$tempdirを使用して開くPerl スクリプトがありますxdg-open。ユーザーがファイルを見終わったら、スクリプトは作業ディレクトリを削除する必要があります。私が問題を抱えているコードの部分は次のとおりです。

system "xdg-open $pdffile";
remove_tree($tempdir);

私の理解でsystemは、プログラムを続行する前に、コマンドが戻るまで待つ必要があります。ただし、このコードを実行すると、「/tmp/diff14969/diffs.pdf を開けませんでした」というメッセージが表示されます。コマンドで(システムのデフォルトです)に置き換えるxdg-openと、希望どおりに機能します。(同様に、私のシステムにある pdf ビューアをハードコードしても機能しますが、移植性の理由からそうしたくありません。)okularsystem

私の推測ではxdg-open、ビューアーを新しいプロセスで開始しており、systemコマンドはxdg-open終了するまで待機しているだけです。xdg-open正常に戻ると、ビューアがファイルを開く前に、スクリプトによって一時ディレクトリが削除されます。代わりに、実際のビューアが終了するまでスクリプトを待機させるにはどうすればよいですか?

4

1 に答える 1