31

私が遭遇したほとんどのシステムには、 と の両方がtempfile(1)ありmktemp(1)ます。構文の違いがあり、mktempディレクトリを作成することもできますが、それ以外は同じことをしているようです。

両者に違いはありますか?なぜ両方が存在するのですか?一方は他方よりも標準的ですか?一時ファイルを安全に作成したいだけの場合、一方を優先する理由はありますか?

この背後には興味深い Unix 伝承があるのではないかと思いますが、検索しても何も見つかりません。

4

3 に答える 3

38

この背後には興味深い Unix 伝承があるのではないかと思います...

歴史OpenBSD 2.1mktempまでさかのぼることができます。ただし、それはずっと後に GNU coreutils の一部になりました。 この投稿では、forが含まれていることを発表しました。mktempcoreutils

それまでは、tempfile多くのプログラムで使用されていました。の周りにラッパーを作成するという提案もありましたが、 の使用を思いとどまらせるために拒否されました。tempfilemktemptempfile

ただし、tempfileマニュアルに次の内容が追加されました。

NFS パーティションにファイルを作成する場合、排他的な作成は保証されません。 tempfile一時ディレクトリを作成できません。 tempfile非推奨です。mktemp(1)代わりに使用する必要があります。

于 2013-09-10T11:18:25.537 に答える
1

(debian の) ソース コードから見るtempfileと、パッケージからのものdebianutils であり、libc 関数tempnam()を使用mktempしていますが、GNU coreutils からのものであり、libc 関数を使用していません。

于 2013-09-10T10:47:35.347 に答える