当突然断电时,运行可执行文件变为空文件

时间:2014-03-22 10:34:03

标签: 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

然后我将 main_a main_b 放在〜/ test 中。

我在〜/ test中cd,在这样的背景中运行main_b

  

./ main_b 1> / dev / null&

并在前景链接中运行main_a

  

./ main_a;睡100个

等一会儿,拔掉电源,然后重新启动,我得到两个大小为零且在〜/ test中没有内容的文件。

有谁知道为什么?

PS: 为确保文件已被替换,我在两小时前触摸〜/ test / main_a和〜/ test / main_b并观看,然后拔掉电源。

  

触摸-d" 2小时前" 〜/测试/ *

1 个答案:

答案 0 :(得分:1)

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

我建议在main

中的函数main_a.c末尾调用sync(2)