我正在尝试制作一个临时文件,要向其中写入一堆内容,然后在收到信号后将其打印出来。但是,在使用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)

这对我来说有点麻烦。考虑到它实际上仅是一个内置函数调用,在调用时不会引起错误,所以我不确定是什么问题。

最佳答案

从手册页:


lsof的输出仅指示指向inode的路径已删除。但是,当前文件句柄FILE *tmp在关闭文件或退出程序之前仍应有效。

关于c - C : Temp file deleted immediately after opening,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41197256/

10-09 01:59