假设我有下面的 C 代码,它无限地接受输入并打印它。我使用 gcc 将其编译为二进制文件,例如 Test。我在一个终端中执行这个二进制文件,然后同时从另一个终端中删除这个二进制文件。
有没有办法在代码中处理这种删除并退出正在执行的二进制文件?
#include <stdio.h>
int main(){
while(1){
// HANDLE BINARY FILE DELETION AND QUIT
char input[50];
scanf("%s",input);
printf("\n%s\n",input);
}
}
最佳答案
Is there a way to handle this deletion in code and quit the binary which is on execution?
C 没有提供专门的机制来识别或响应对正在运行的程序的磁盘镜像的操作,即使存在这样的事情。您可以想像地尝试通过 argv[0]
来识别该文件(不保证一定会成功),并定期检查它。当以这种方式发现的二进制文件被修改或删除时,您甚至可能会找到第三方库或系统特定的机制来注册以接收信号。然而,这些都没有内置到 C 中。
某些操作系统可能会首先阻止此类删除,甚至会提供您在操作系统级别描述的行为。不过,总的来说,您提出的只是您不应该期望或依赖的事情。程序的磁盘镜像与正在运行的进程几乎是不同的。
关于c - 在代码中处理二进制文件删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45737144/