首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >打开lsof if文件描述符

打开lsof if文件描述符
EN

Stack Overflow用户
提问于 2013-04-23 12:21:54
回答 1查看 576关注 0票数 0

我使用以下命令查找是否打开了文件描述符:

代码语言:javascript
复制
/usr/sbin/lsof -a -c sqlplus -u ${USER} | grep -l "${FILE_NAME}”

如果不是的话,我会执行一些动作。该文件是一个从sqlplus中产生的日志。

有时,lsof会告诉文件描述符没有打开,但随后我在这个文件中找到了一些新的数据。它很少发生,所以我无法复制它。

  1. 原因是什么?
  2. sql假脱机是如何工作的?它是将文件描述符从假脱机文件命令中保存到关闭comand的假脱机,还是多次打开和关闭文件描述符?
EN

回答 1

Stack Overflow用户

发布于 2013-04-23 13:00:18

你可能有一个"种族条件“。Sqlplus打开文件,在lsof检查文件和使用lsof的结果处理文件之间将一些新数据放入其中并关闭它。

通常,避免文件系统中的争用条件的最佳方法是在处理文件之前重命名相关文件。重命名是一种相对便宜的操作,它阻止其他进程在处理文件时打开/修改文件。您需要确保如果文件在重命名时在另一个进程中打开,则在进程处理该文件之前,要等到不再通过打开的文件句柄访问该文件为止。

大多数程序员编写的代码中到处都是竞争条件。这些都会引起各种无与伦比的臭虫。如果您记住几乎所有的程序都有多个进程共享资源,并且必须始终管理共享,那么您将是一个更好的程序员。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16169248

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档