我有两个可执行文件,它们的源代码如下:
main_a.c
#include "stdio.h"
int main() {
printf("start to copyn");
system("cp -pRf ~/main_b main_b");
system("cp -pRf ~/main_a main_a");
printf("donen");
}
main_b.c
#include "stdio.h"
int main() {
while (1) {
printf("i'm b, i'm runningn");
}
}
gcc -o main_aGCC -o main_b main_b c
然后我把 main_a 和 main_b 在 ~ 和 ~/测试。
我cd在~/test,运行main_b在后台,像这样
。/main_b 1>/dev/null &
和运行main_a在前台链接这个
。/main_a;睡眠100
等一会儿,拔掉电源,然后重新启动,我得到两个文件,大小为零,没有内容在~/test.
有人知道为什么吗?
PS:为了确保文件已被替换,我在两个小时前触摸~/test/main_a和~/test/main_b并观察,然后拔掉电源。
touch -d "2 hours ago" ~/test/*
您应该检查每个系统(3)的结果代码。
我建议在main_a.c
main
函数的末尾调用sync(2)