【发布时间】:2013-02-01 12:52:25
【问题描述】:
我目前正在为嵌入式系统编写 C 应用程序(磁盘空间有限) 在这个系统上,有几个进程访问我必须在某些事件(例如磁盘空间不足)上使用我的应用程序删除的文件。但是由于其他进程仍然可以写入这些文件,因此磁盘空间情况并没有改善。
有没有可能实际删除文件,让其他进程的写访问失败?
我只能有限地访问其他进程的行为,所以如果不需要这些进程的合作会很好。
【问题讨论】:
-
解决方案有多难?我可以想象 ptracing 这些进程并关闭这些文件的 fds...
-
@PlasmaHH 可以这样说:我更喜欢简短而简单的解决方案,但文件必须删除,如果这些漂亮的小进程不想放弃对文件的控制,我必须强迫他们。
-
@Joze 保护文件是行不通的,因为这需要 linux 系统上其他进程的大量合作,我不知道我是否得到这个。
-
你能重新启动那些进程吗?
-
其他类 Unix 系统对此有一个称为
revoke的系统调用。不幸的是,Linux 似乎无法做到这一点(glibc 中的存根只返回ENOSYS)。