我想在Mac OS X(10.6)上创建一个文件,当我的进程消失时,该文件将被自动删除。这可能吗?对于我正在实现的文件锁定方案,这将非常方便。优选作为可可或碳调用。
我知道在Windows上,这是可能的。这是一个非常简洁的功能,但我不知道它是否需要文件系统支持。
在win32上,您可以使用FILE_FLAG_DELETE_ON_CLOSE调用CreateFile。 在.net中,您可以使用FileOptions.DeleteOnClose作为参数创建FileStream。
答案 0 :(得分:2)
如果您正在编写自己的程序,则可以使用tmpfile()调用。 它会创建一个临时文件,在程序终止时自动删除。
答案 1 :(得分:0)
您可以让您的应用委托通过NSApplicationDelegate创建和删除文件,但是,如果用户强制退出/关闭,该文件将保留在那里。如果强制戒烟不是您关注的一部分,那么这应该有效。如果没有,您可以创建一个简单的启动代理程序来检查您的进程是否存在,如果不存在,则删除该文件。
答案 2 :(得分:0)
您可以注册一个atexit()
处理程序来删除该文件,但这不一定完全可靠,尤其是在程序崩溃的情况下。
如果您想要正确锁定文件,请考虑使用flock(),但这是合作的。