小编Vti*_*rum的帖子

Linux中的C++代码留下的文件句柄

我正在尝试调试代码中的问题.我有一个持续运行的流程A,直到我要求它停止.

在AI内部执行以下操作:

  • mount partition/dev/sda1
  • open() //创建一个空文件X.
  • write() //给它写一些字节
  • close() //关闭文件
  • processFile() //执行一些操作
  • remove() //删除文件
  • umount/dev/sda1

注意我在上面的每个操作之后测试它是否成功或不是前进.当我这样做时,lsof | grep A它显示了进程A拥有的X的文件句柄.我也看到它有一个(已删除).这可以防止我卸载分区.为什么会发生这种情况?如何解决这个问题?

编辑:谢谢大家.这是代码的片段:

tarFileDesc = _pSysCall->open("test.tar", O_CREAT | O_RDWR | O_APPEND, 0777);    
 if (0 > tarFileDesc)
  return false;

 ... some logging here

 // Write http stream to tar file, istr is an argument to my function     
 int read_buffer_size = 0;     
 buffer = new char[4096];     
 while (!istr.eof() && count < content_length)
 {      
    if ((content_length - count) >= 4096)
        read_buffer_size = 4096; …
Run Code Online (Sandbox Code Playgroud)

c c++ linux

2
推荐指数
1
解决办法
873
查看次数

标签 统计

c ×1

c++ ×1

linux ×1