gpt4 book ai didi

C: 临时文件打开后立即删除

转载 作者:太空狗 更新时间:2023-10-29 11:50:13 25 4
gpt4 key购买 nike

我正在尝试制作一个临时文件,我想在其中写入一堆内容,然后在收到信号后打印出来。但是,在使用 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 应该仍然有效,直到文件关闭或程序退出。

关于C: 临时文件打开后立即删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41197256/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com