Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 突然断电时,正在运行的可执行文件变为空文件_C_Linux_Power Off - Fatal编程技术网

C 突然断电时,正在运行的可执行文件变为空文件

C 突然断电时,正在运行的可执行文件变为空文件,c,linux,power-off,C,Linux,Power Off,我有两个可执行文件,其源代码如下: 主空调 #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"); } 主楼b.c #include "stdio.h" int main() { while (1) {

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

主空调

#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");
}
主楼b.c

#include "stdio.h"

int main() {
    while (1) {
        printf("i'm b, i'm running\n");
    }
}
gcc-o主管道a主管道a.c gcc-o主接线盒主接线盒c

然后我把main\u amain\u b放在~~/test

我将cd放入~/test,在后台运行main_b,如下所示

/main_b 1>/dev/null&

并在前台链接中运行main_a

/主要部分a;睡100

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

有人知道为什么吗

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

触摸-d“2小时前”~/测试/*


你应该检查每一个的结果代码


我建议在
main_a.c

中的
main
函数末尾调用在目录~/testWhat文件系统中创建的文件名是什么?停电后您是否运行了
fsck
?@Loong:您能否更改您的第一个程序,而不是使用“-pRf”标志“-pR”。我认为cp命令中额外的“f”标志会导致这些文件自身被强制覆盖,从而使其为空。@tmp如果没有“f”,我无法替换正在运行的main_b或main_a。我的目的是在它们运行时更新它们。@JohnZwinck我已经运行了“fsck”,但它只显示“fsck from util linux 2.20.1”。它的文件系统是ext4。系统(3)的结果很好。调用sync(2)可以解决此问题!但我还是不明白断电前会发生什么。