c - 正在运行的可执行文件突然断电变成空文件

标签 c linux power-off

我有两个可执行文件,其来源如下:

main_a.c

#include "stdio.h"

int main() {
    printf("start to copy\n");
    system("cp -pRf ~/main_b main_b");
    system("cp -pRf ~/main_a main_a");
    printf("done\n");
}

main_b.c

#include "stdio.h"

int main() {
    while (1) {
        printf("i'm b, i'm running\n");
    }
}

gcc -o main_a main_a.c gcc -o main_b main_b.c

然后我将 ma​​in_ama​​in_b 放在 ~~/test 中。

我 cd 到 ~/test,像这样在后台运行 main_b

./main_b 1>/dev/null &

然后在前台运行 main_a link this

./main_a; sleep 100

稍等片刻,拔掉电源,然后重启,我得到两个文件,大小为零,~/test 中没有内容。

谁知道为什么?

附言: 为了确保文件已被替换,我在两个小时前触摸了 ~/test/main_a 和 ~/test/main_b 并观看,然后拔下电源。

touch -d "2 hours ago" ~/test/*

最佳答案

您应该检查每个 system(3) 的结果代码.

我建议调用 sync(2)main_a.c

中函数 main 的末尾

关于c - 正在运行的可执行文件突然断电变成空文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22576441/

相关文章:

c - 在 C 中使用通配符 % 和 sqlite3_mprintf %q 的 SQLite 查询

c - 我的 C "Hello, world!"程序没有编译

C宏写一个堆栈可变长度结构?

检查 C/*nix 中指定用户的文件访问权限

linux - shutdown -p 命令有什么作用?

linux - 如何让linux在halt运行时断电?

filesystems - 嵌入式文件系统和断电

C头文件依赖

node.js - 解码 mongodump 的 stderr

linux - 如何在 Linux 机器上编写 Flash ActionScript ?