2
一時ファイルを作成しようとしていますが、たくさんのものを書きたいと思っています。しかし、lsof
の診断後には、一時ファイルが開いた直後に一時ファイルが削除されたように見えます。次のスニペットを取る:私は、ps aux
を行う私のプロセスのpidを取得し、その後lsof -p <pid>
を行う行けばC:開いた直後に一時ファイルが削除されました
FILE *tmp;
int main(int argc, char *argv[]) {
if ((tmp = tmpfile()) == NULL)
err_sys("tmpfile error");
sleep(60);
は今、私は以下を参照してください。
10.06 1159 daniel 3u REG 0,1 0 10696049115128289 /tmp/tmpfCrM7Jn (deleted)
これは少しあります私の頭を傷つける人。実際に呼び出されたときにエラーを引き起こしていない関数呼び出しは1つだけであることを考慮すると、問題の内容がわかりません。
:* – user3386109
*そして、「*それへの最後の参照がある「作成されたファイルは、それへの最後の参照が閉じているときに、ファイルが自動的に に削除され、TMPFILE()が復帰する前に リンク解除です」 'fclose(tmp);'が呼び出されたときに "*を閉じました"。 – alk
私はまだそれを読み書きすることができます。リンクを解除するということは、inodeを指すパスが削除されたことを意味します。現在のファイルハンドル 'FILE * tmp'は、@alkが述べたように、' fclose'を呼び出すか、プログラムが終了するまでは有効です。 –