C: 临时文件打开后立即删除
C: Temp file deleted immediately after opening
我正在尝试制作一个临时文件,我想在其中写入一堆内容,然后在收到信号时打印出来。但是,在使用 lsof
进行一些诊断后,看起来临时文件在打开后立即被删除。采取以下片段:
FILE *tmp;
int main(int argc, char *argv[]) {
if ((tmp = tmpfile()) == NULL)
err_sys("tmpfile error");
sleep(60);
现在,如果我执行 ps aux
,获取进程的 pid,然后执行 lsof -p <pid>
,我会看到以下内容:
10.06 1159 daniel 3u REG 0,1 0 10696049115128289 /tmp/tmpfCrM7Jn (deleted)
这让我有点头疼。考虑到它实际上只是一个内置函数调用,在调用时不会导致错误,我不确定是什么问题。
来自手册页:
The created file is unlinked before tmpfile() returns, causing the
file to be automatically deleted when the last reference to it is
closed.
lsof
的输出只是表明指向 inode 的路径已被删除。但是,当前文件句柄FILE *tmp
应该仍然有效,直到文件关闭,或者程序退出。
我正在尝试制作一个临时文件,我想在其中写入一堆内容,然后在收到信号时打印出来。但是,在使用 lsof
进行一些诊断后,看起来临时文件在打开后立即被删除。采取以下片段:
FILE *tmp;
int main(int argc, char *argv[]) {
if ((tmp = tmpfile()) == NULL)
err_sys("tmpfile error");
sleep(60);
现在,如果我执行 ps aux
,获取进程的 pid,然后执行 lsof -p <pid>
,我会看到以下内容:
10.06 1159 daniel 3u REG 0,1 0 10696049115128289 /tmp/tmpfCrM7Jn (deleted)
这让我有点头疼。考虑到它实际上只是一个内置函数调用,在调用时不会导致错误,我不确定是什么问题。
来自手册页:
The created file is unlinked before tmpfile() returns, causing the file to be automatically deleted when the last reference to it is closed.
lsof
的输出只是表明指向 inode 的路径已被删除。但是,当前文件句柄FILE *tmp
应该仍然有效,直到文件关闭,或者程序退出。