【发布时间】:2021-07-17 06:55:57
【问题描述】:
在进程运行过程中,我使用vim aa.txt和exec :wq,然后这个进程就不能再打印了。为什么?
当我通过lsof -p pid 检查进程状态时,它显示/home/ben/bypy/sederror/aa.txt~ (deleted) 。顺便说一下,在centos中测试。
//test.cc
#include <iostream>
#include <fstream>
#include <unistd.h>
using namespace std;
int main()
{
ofstream file("./aa.txt");
if(!file.is_open())
{
return -1;
}
int iNum = 1;
while(1)
{
file << iNum <<endl;
iNum++;
sleep(5);
}
return 0;
}
【问题讨论】:
-
我猜
vim已经更改了文件aa.txt,因此程序正在写入一个现在已删除的文件。我对此没有信心,但这可能就是您所看到的,并且可能与您从lsof看到的输出一致。
标签: c++ vim file-io operating-system system-calls