我正在研究一些工具后端的代码。该工具在固定目录中创建其所有输出。现在假设客户想要终止其所有应用程序,那么应该删除所有文件。因此,我使用系统命令(rm -rf
)删除目录,但打开的文件不会被删除,因此该目录也不会被删除。我该如何巧妙地做到这一点?删除应用程序退出前的所有文件
一个选项似乎是使用一个表来维护所有打开的文件并在目录上发射rm -rf
之前全部关闭它们。但是,这可能会减慢整个应用程序的速度。
我探索的另一个选项是使用lsof
来查找打开文件的列表,并在rm -rf
之前关闭它们。
在我的问题上的一个额外的约束是,我已经打开一个进程中的几个不同的文件,其中一个被另一个进程使用。使用上述方法,如果关闭所有文件描述符并尝试删除该目录,则逻辑上它不应该被删除,因为仍有文件被另一个进程打开。
任何建议,将不胜感激。
@all请帮我解决这个问题.... – 2012-02-14 18:56:07
有谁能够告诉我OPEN_MAX =的sysconf(_SC_OPEN_MAX); 通过使用这个我得到的数字是从当前进程或系统中的所有进程打开文件描述符的数量。 – 2012-02-14 18:57:30
一件事想我有一个进程打开了三个文件,其中一个被另一个进程打开,使用上述方法,如果我关闭所有FD并尝试删除该目录,在逻辑上是不应该,因为它仍然是由另一打开进程..请建议 – 2012-02-14 18:59:07