c++ - 在另一个进程完成后如何删除文件?

标签 c++ c linux ubuntu

我想打开内存中保存的数据。我创建了一个临时文件并在 ubuntu 上 fork xdg-open 以使用标准应用程序打开文件。我想在程序关闭后删除临时文件。问题在于 xdg-open 本身打开了另一个进程并立即退出。因此,我不知道哪个进程打开了该文件。我尝试使用flock获得独占锁,并尝试在等待20个src后取消链接文件(以确保其他进程首先打开该文件) ,调用成功并且打开的程序只是关闭文件。我想等到程序关闭然后删除该文件。有谁知道如何实现这一目标吗?

最佳答案

当xdg-open不依赖后缀时,可以使用

fd = open(filename, O_RDONLY|O_CLOEXEC);
unlink(filename);

system("xdg-open /proc/%u/fd/%u", getpid(), fd); /* pseudo-code! system is not printf() like! */

close(fd);

关于c++ - 在另一个进程完成后如何删除文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20340146/

相关文章:

无法识别 C++ 虚函数

c - Linux服务器--用鼠标选择任何内容后$后面出现 "^C"

c++ - 如何使用 C/C++ 创建 linux 用户?

linux - 如何快速截取视频剪辑 50 分钟后的屏幕截图?

c++ - do-while 语句主体中的声明范围

c++ - 使用 qt 自定义委托(delegate)正确突出显示

c - 如果位数大于 10,则不起作用

linux - 替换zsh中字符串的一部分

c++ - 使用查找和替换程序检测到堆损坏

c - 排列器不产生字典输出