我需要测试一个创建临时文件的程序。运行完成后,将删除该文件。如何检查文件是否已创建和删除。
我正在考虑发送一些信号进行处理(比如Ctrl-Z)暂停它并检查但应该更简单。
我在Linux中使用bash。
答案 0 :(得分:2)
由于您无权访问程序代码,因此您可以使用 strace 工具拦截该进程发出的所有系统调用。然后使用简单的greps,您可以查找文件创建,删除和所有相关操作。可能你必须使用“-f”选项来确保记录所有内容,包括任何进程的子进程执行的操作
答案 1 :(得分:0)
如果可以肯定地知道何时创建文件,您可以使用the link command挂起到该文件。例如,在您正在测试的代码中,有一个类似的序列:
open some temporary file for writing
# do stuff
write stuff to open file
close file
unlink file
如果在测试程序中的open和unlink之间,你可以运行
ln the_temp_file my_temp_file
然后当发生取消链接时,测试的程序将不知道你有一个文件的硬链接,所以它没有从文件系统中删除。
这不适用于符号链接ln -s
,因此您的链接需要位于同一物理设备上。