我在 Ubuntu 18.04 中使用 gcc-compiler。要编译和运行程序,我使用命令:
gcc program.c -o program.exe && ./program.exe
那么,如何在程序完成工作后自动删除该程序.exe文件?
这应该可以解决问题:
gcc program.c -o program.exe && ./program.exe && rm program.exe
请不要说 Linux 中的二进制程序通常没有.exe
扩展名(但没有什么能阻止你放置它,这只是有点误导(。
您的rm
可能是某个外壳别名。然后,您可以通过提供其(标准(路径/bin/rm
(而不仅仅是在上面的命令行中rm
(来强制真正的rm
程序运行。
在 Linux 和 Unix 系统上,允许可执行文件在运行时自行删除(使用 remove(3( 或 unlink(2((。我在这里举了一个例子。但这不是常见的做法(并且可能会使您的用户感到困惑(。
因此,您可以使用显式unlink
编写 C 程序。这是不寻常的,您应该记录您正在这样做。
大多数可执行文件在某种程度上是永久性的,并且预计可以重用很多次。您需要记录为什么您不希望出现这种常见行为(并准确解释为什么、何时以及如何删除可执行文件(。
我建议使用所有警告和调试信息编译可执行文件,因此使用gcc -Wall -g program.c -o program
(稍后您可以通过添加-O2
来要求优化(。这将简化调试。
当然,如果你只是想在可执行文件完全运行后删除它,你可以简单地使用 rm(1( (正如 blue112 的答案所解释的那样(。您应该解释为什么要(以及何时(要这样做(在执行./program
后立即运行rm program
是不寻常的(。