当前位置: 首页 > 面试题库 >

如何检查存储在变量中的给定文件描述符是否仍然有效?

江新
2023-03-14
问题内容

我有一个存储在变量var中的文件描述符。如何在以后的阶段检查该描述符是否有效?

  fdvar1= open(.....);
  fdvar2 = fdvar1;       // Please ignore the bad design

  ....
  // lots of loops , conditionals and threads. It can call close(fdvar2) also.  
  ....

  if(CheckValid(fdvar1)) // How can I do this check  ?
    write(fdvar1, ....);

现在,我想检查var1(仍保留打开的描述符)是否仍然有效。是否有任何API?


问题答案:

fcntl(fd, F_GETFD)是检查fd是否有效的打开文件描述符的最便宜的规范方法。如果需要大量检查,则使用poll零超时并将events成员设置为0并POLLNVALrevents返回后进行检入更为有效。

话虽如此,“检查给定资源句柄是否仍然有效”操作几乎总是根本上是不正确的。释放资源句柄后(例如fd为closed),可以将其值重新分配给您分配的下一个此类资源。如果还有其他可用的引用,它们将错误地在新资源上而不是旧资源上运行。因此,真正的答案可能是:如果您尚不了解程序的逻辑,则有一些基本的基本逻辑错误需要修复。



 类似资料:
  • 我已经使用Spring Security和SAML实现了SSO。以下是目前为我工作的内容: 当我尝试访问SP上的任何资源时,如果我还没有登录,我会被重定向到我的IdP(在我的情况下是idp.ssocircle.com)。在IDP成功验证后,我会被重定向回SP,并授权传入的SAML响应并为相应的用户创建一个会话。到目前为止,一切都很酷!但是当我从IDP注销时(通过从idp.ssocircle.com

  • 问题内容: 我想检查浏览器是否仍然存在,如果不存在,那么我想打开一个新的浏览器!网络驱动程序中是否有可用的api来检查浏览器是否仍然存在? 问题答案: 调用后,将driver的值设置为 但是,如果调用,它将驱动程序的值设置为 因此,如果您在调用 driver.quit() 之后检查浏览器窗口,则可以通过以下实现知道。

  • 问题内容: 我想检查一个变量是否存在。现在我正在做这样的事情: 是否有其他方法无一例外? 问题答案: 要检查是否存在局部变量: 要检查是否存在全局变量: 要检查对象是否具有属性:

  • 使用数据库时,您可以执行< code>snapshot.exists()来检查某些数据是否存在。根据文件,没有类似的储存方法。 https://firebase.google.com/docs/reference/js/firebase.storage.Reference 检查某个文件是否存在于Firebase存储中的正确方法是什么?

  • 问题内容: 我有一个Freemarker模板,其中包含一堆占位符,在处理模板时会为其提供值。如果要提供userName变量,我想有条件地包括模板的一部分,例如: 但是,FreeMarker手册似乎表明if_exists已过时,但是我找不到其他方法来实现这一目标。当然,我可以简单地提供一个额外的布尔变量isUserName,并像这样使用它: 但是,如果有一种方法可以检查userName是否存在,那么

  • 问题内容: 我试图用bash编写脚本来检查用户输入的有效性。 我想将输入(例如变量)与有效值列表进行匹配。 我目前想出的是: 我的问题是,是否有更简单的方法可以做到这一点, 就像大多数编程语言一样。 另外: 说的清单是: 我的代码将仅针对那些值回显该消息,因为将其视为数组而不是字符串,所有字符串操作都将验证,而我希望它失败。 问题答案: 或创建一个函数: 使用它: