ラッパーは、プロセスが正常に完了した後に一時ファイルの名前を変更します。

ラッパーは、プロセスが正常に完了した後に一時ファイルの名前を変更します。

私は以下を達成する方法を探しています。

  1. 生成するように設計されたいくつかのコマンドを実行します。foo.out
  2. foo.out.tmpターゲットコマンドが最終インストールとfoo.out同じ一時ファイルで実際に機能するようにソリューションが置き換えられました。foo.out
  3. プロセスが終了しました:
    • プロセスが終了コード0で終わると、mv -f foo.out.tmp foo.out
    • そうでない場合は、foo.out.tmpそのままにしておくか、ジャンクファイルにすることができますので削除してください。

私は見た失敗したコマンドのリダイレクトされた出力ファイルを消去するfoo.1.out, foo.2.out, foo.3.out, ...ただし、これはstdoutリダイレクトに依存し、複数のfoos()を生成するいくつかのコマンドがあります。

作成する必要がある場合は、サブプロセスを実行する前にコマンドラインに入力してからfoo.out[, ...]終了コードを確認するか、呼び出しを傍受してパラメータを変更する魔法を実行できる一種のラッパースクリプトを想像できます。sedwaitLD_PRELOADopen

私のユースケースでは、一時ファイルを削除することも完全に満足です。 Dockerコンテナといくつかの奇妙なオーバーレイマウントオプションを使用して、失敗時に全体の出力ボリュームが消える方法を考えることはできません。

かなり現代的なLinux(カーネル4.x)で役に立つなら。

ベストアンサー1

おすすめ記事