GNU/Linux >> Linux の 問題 >  >> Linux

mkstemp() で作成されたファイルはいつ削除されますか?

<ブロック引用>

Linux は close(fd) 後にこのファイルを削除しますか?

自動的ではありません。 unlink を呼び出す必要があります 手動でファイルに。 mkstemp を呼び出した直後にこれを行うことができます 名前で (つまり、ファイル システム経由で) ファイルにアクセスする必要がない場合 — 記述子が閉じられると削除されます。

または、ファイルをコード (またはプロセス) の別の部分に名前で渡す必要がある場合は、unlink を呼び出さないでください。

ワークフローの例:

char filename[] = "tempfile-XXXXXX";
int fd;
if ((fd = mkstemp(filename)) == -1) {
    fprintf(stderr, "Failed with error %s\n", strerror(errno));
    return -1;
}

unlink(filename);

FILE *fh = fdopen(fd, "w");
fprintf(fh, "It worked!\n");
fclose(fh);

fclose FILE* を閉じます ストリームだけでなく、基になるファイル記述子も含まれるため、明示的に close(fd) を呼び出す必要はありません .

必要なヘッダー:

#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

Linux
  1. Extundeleteを使用してExt4で削除したばかりのファイルを元に戻しますか?

  2. 改行をNulに置き換えますか?

  3. Zipファイルのエンコード?

  1. ファイルの作成/作成時間を取得しますか?

  2. 削除されたファイルを回復しますか?

  3. nftw での警告

  1. Qt QApplication が new で作成されたときのセグメンテーション違反

  2. gnuplot で .gnu ファイルをプロットする

  3. ワイルドカードを使用した mv はまだアトミックです