この質問をする理由は、アーカイブを解凍するために 7zip を呼び出すプログラムそのものも含まれている可能性があるアーカイブを解凍できるようにしたいからです。Linux/UNIX では、使用中のファイルを削除したり名前を変更したりできますが、書き込み用に開くことはできません。
答え1
答えはイエスであり、ノーでもあります。
7zipの解凍コマンドでは、一時ファイルは作成されないはずです。ただし、Windowsエクスプローラーのドラッグアンドドロップを使用すると、Windowsでは一時ファイルが作成されます(次のドキュメントから引用)。http://www.7-zip.org/faq.html、ctl-f で temp を検索します)。
ただし、Linux を使用しています。
Linux ではこのようなことが起こらないことを 100% 確実にするために、大きなアーカイブを作成して解凍し、strace でプログラムを実行しました。
strace -a88 -- 7z e byob.7z 2>&1
上書き前にリンクが解除された現在の作業ディレクトリ内の既存のファイルのみが表示され、アクセスされたファイルは現在の作業ディレクトリ内のファイルのみでした。
何か見落としがないか確認するために、ご自身でテストしてください。
これがお役に立てば幸いです。
答え2
あなたの質問は、実行可能ファイル(またはスクリプト)に関するもので、 (同じ場所に)file1
新しいものを作成するメカニズムを呼び出します。file1
Unix のファイル システムについて私が理解しているところによると、これはfile1
開いている間 (実行中) に の上書きを必要とします。この動作は、上書きによって元のファイルのリンクfile1
が解除されますが、開いているため実際には削除されません。ただし、そのディレクトリ内の名前は占有されなくなりますfile1
。新しいファイルfile1
は別の場所に作成されます (正しい名前を使用)。古いファイルは実行を完了して終了すると削除されます。ただし、file1
新しいファイルはそのまま残ります。file1
注意: これは主に私の断片的な知識に基づいた推測です。ファイルシステムの概念に詳しい人がこれを肯定または訂正するかもしれません。その間、この回答は理論的なものとしてのみ受け止め、実験によるさらなる検証なしにこの回答に基づいてソリューションを構築しないことをお勧めします。