处理代码中的二进制文件删除

时间:2017-08-17 13:57:02

标签: c linux

我们假设我有以下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);
    }
}

1 个答案:

答案 0 :(得分:5)

  

有没有办法在代码中处理这种删除并退出正在执行的二进制文件?

C没有提供专门用于识别或响应正在运行的程序的磁盘映像上的操作的机制,如果这样的话甚至存在的话。您可以想象通过argv[0]尝试识别该文件(不保证会成功),并定期检查。您甚至可能找到第三方库或系统特定的机制,用于在修改或删除以这种方式发现的二进制文件时注册接收信号。然而,这些都没有构建到C中。

某些操作系统可能会首先阻止此类删除,甚至提供您在操作系统级别描述的行为。但总的来说,你提出的建议只是你不应该期望或依赖的事情。程序的磁盘映像与运行进程几乎是分开的。