c - 在代码中处理二进制文件删除

标签 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);
    }
}

最佳答案

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/

相关文章:

c - 编写一个程序求正奇数之和与小于或等于30的正偶数的乘积

python - 安装 openpyxl 2.5

linux - 如何将静态库输出到当前目录以外的另一个目录?

c - 创建单链表时出现异常

C_F_POINTER 导致未定义的数组

c - 计算平均程序时输出错误

linux - 如果找不到任何东西,sched_find_first_bit 的返回值是多少?

c - sprintf() 与 argv 的行为

linux - 监控进程的网络使用情况

linux - 有关 DS 记录更新的 DNSSEC key 翻转