0

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

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_amain_b放在~~/test中。

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

./main_b 1>/dev/null &

并在前台运行 main_a 链接

./main_a; 睡眠 100

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

有人知道为什么吗?

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

touch -d "2 小时前" ~/test/*

4

1 回答 1

1

You should check the result code of each system(3).

And I would suggest calling sync(2) at the end of function main in main_a.c

于 2014-03-22T12:16:33.440 回答