我有两个可执行文件,其来源如下:
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 中。
我 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/*
最佳答案
关于c - 正在运行的可执行文件突然断电变成空文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22576441/