是否可以创建一个在其(拥有)进程消失时被删除的文件?

时间:2012-03-20 13:26:20

标签: objective-c macos cocoa

我想在Mac OS X(10.6)上创建一个文件,当我的进程消失时,该文件将被自动删除。这可能吗?对于我正在实现的文件锁定方案,这将非常方便。优选作为可可或碳调用。

我知道在Windows上,这是可能的。这是一个非常简洁的功能,但我不知道它是否需要文件系统支持。

在win32上,您可以使用FILE_FLAG_DELETE_ON_CLOSE调用CreateFile。 在.net中,您可以使用FileOptions.DeleteOnClose作为参数创建FileStream。

3 个答案:

答案 0 :(得分:2)

如果您正在编写自己的程序,则可以使用tmpfile()调用。 它会创建一个临时文件,在程序终止时自动删除。

答案 1 :(得分:0)

您可以让您的应用委托通过NSApplicationDelegate创建和删除文件,但是,如果用户强制退出/关闭,该文件将保留在那里。如果强制戒烟不是您关注的一部分,那么这应该有效。如果没有,您可以创建一个简单的启动代理程序来检查您的进程是否存在,如果不存在,则删除该文件。

答案 2 :(得分:0)

您可以注册一个atexit()处理程序来删除该文件,但这不一定完全可靠,尤其是在程序崩溃的情况下。

如果您想要正确锁定文件,请考虑使用flock(),但这是合作的。