首先,您并不需要关心很多关于您不知道的打开的文件描述符。如果你知道你不会再写信给他们,关闭它们是一个好主意,并且不会伤害 - 毕竟你只是做了一个fork(),这个fds打开了两次。但是同样,如果你让他们开放,他们也不会打扰你 - 毕竟,你不知道他们,你大概不会随机写给他们。

至于你的第三方库会做什么,这有点夸张。有些人可能不希望遇到fork()的情况,最终可能会意外地从两个进程写入同一个fd,而没有进行任何同步。其他人可能不希望让你关闭他们的fds。你必须检查。这就是为什么在库中随机打开一个文件描述符并且不给调用者进行管理是一个坏主意。

这么说,本着回答原问题的精神,没有一个特别好的方法。您可以在文件描述符上调用dup()或dup2();如果关闭,该呼叫将以EBADF失败。所以,你可以说:

int newfd = dup(oldfd);

if (newfd > 0)

{

close(newfd);

close(oldfd);

}

,但在这一点上,你只是作为小康说,摆在首位close(oldfd)和忽略任何EBADFs。

假设您仍然想要关闭所有内容的核选项,则需要找到可能的最大打开文件描述符数。假设1至65,535不是一个好主意。首先,当然,fds从0开始,但也没有定义特定的上限。为了便于携带,POSIX的sysconf(_SC_OPEN_MAX)应该在任何理想的POSIX系统上告诉你,尽管严格来说它是可选的。如果你感到偏执狂,请检查返回值为-1,但此时你大多不得不退回硬编码值(1024应该没问题,除非你做的事很奇怪)。或者,如果您对Linux特定的版本没有问题,您可以在/ proc中进行挖掘。

不要忘了关闭fds 0,1和2--这可能会让事情变得混乱。

在linux中查找运行程序句柄,如何查找我的进程在Linux中打开的文件句柄?相关推荐

  1. 在linux中查找运行程序句柄,Linux下查看句柄

    查看各个分区的句柄数 df -ih 查看句柄最大数 ulimit -n 查看23711进程连接句柄数 lsof -n|awk '{print $2}'|sort|uniq -c|sort -nr|mo ...

  2. 在Red Hat Linux中自动运行程序

    在Red Hat Linux中自动运行程序 1.开机启动时自动运行程序 Linux加载后, 它将初始化硬件和设备驱动, 然后运行第一个进程init.init根据配置文件继续引导过程,启动其它进程.通常 ...

  3. linux下软件编译终止,[2018年最新整理]linux下编译运行程序命令大全.ppt

    [2018年最新整理]linux下编译运行程序命令大全 1. 项目课题引入 2. Vi编辑器的使用方法 3. Linux中C语言程序的编辑 4. Linux中C语言程序的运行 5. 现场演示案例 课题 ...

  4. linux上根据运行程序的进程号,查看程序所在的绝对路径。linux查看进程启动的时间

    1 linux上根据运行程序的进程号,查看程序所在的绝对路径 1.如下,我想查看python 25_run_train_tripletloss_sknet_8w_offline_c_plus.py 这 ...

  5. 如何在Linux实现自动运行程序

    1.开机启动时 Linux加载后, 它将初始化硬件和设备驱动, 然后运行第一个进程init. init根据配置文件继续引导过程,启动其它进程.通常情况下,修改放置在 /etc/rc或 /etc/rc. ...

  6. Linux 下后台运行程序,查看和关闭后台运行程序(转载)

    1.运行.sh文件 直接用./sh 文件就可以运行,但是如果想后台运行,即使关闭当前的终端也可以运行的话,需要nohup命令和&命令. (1)&命令 功能:加在一个命令的最后,可以把这 ...

  7. Linux命令--定时运行程序(脚本)--方法/实例

    原文网址:Linux命令--定时运行程序(脚本)--方法/实例_IT利刃出鞘的博客-CSDN博客 简介 说明         本文介绍Linux如何定时运行程序. 概述 at命令是一次性定时计划任务, ...

  8. 【Android 逆向】代码调试器开发 ( 等待进程状态改变 | detach 脱离进程调试 PTRACE_DETACH | 调试中继续运行程序 PTRACE_CONT )

    文章目录 一.等待进程状态改变 二.detach 脱离进程调试 PTRACE_DETACH 三.调试中继续运行程序 PTRACE_CONT 一.等待进程状态改变 上一篇博客 [Android 逆向]代 ...

  9. red hat linux怎么运行,Red Hat Linux中自动运行程序

    1.开机启动时自动运行程序 Linux加载后, 它将初始化硬件和设备驱动, 然后运行第一个进程init.init根据配置文件继续引导过程,启动其它进程.通常情况下,修改放置在 /etc/rc或 /et ...

最新文章

  1. songCMS 3.15 cookie SQLINJ
  2. Jenkins安装plugin
  3. 1-2月我国程控交换机产量同比减少13.96%
  4. apollo java客户端_02、携程Apollo Java客户端使用指南
  5. sqlserver 类似oracle的rownum功能: row_number
  6. VMware ESXi 安装手记
  7. [转载] 新兵训练营系列课程——海量数据存储基础
  8. Python - @property 方法变属性
  9. Elasticsearch 日期时间处理
  10. 什么情况下你的工作最为成功_在不倦怠的情况下开始成功学习
  11. Codeforces Beta Round #1 题解
  12. Java语言实现简单FTP软件------FTP软件远程窗口的实现(六)
  13. python实用代码
  14. Alien Skin X7PS调色滤镜插件下载及PS调色滤镜教程
  15. Mac安装软件提示“已损坏,无法打开”的解决办法
  16. 通过Navicat for MySQL导入数据时,日期时间错误问题解决办法
  17. 瑞芯微RK3328_Demo(1)原理图参考
  18. 华为机试:身高体重排序
  19. 电路交换(Circuit Switching)
  20. 无条码商品新建商品档案,搭配蓝牙便携打印机移动打印条码标签

热门文章

  1. 【招聘(北京)】东方国信 工业互联网
  2. .NET 图形化开源爬虫Hawk 3发布
  3. Microsoft使用.NET Core SDK遥测数据
  4. asp.net core高级应用:TagHelper+Form
  5. OAuth 2.0: Bearer Token Usage
  6. Visual Studio “15”的第四个预览版发布
  7. 在Windows Server 2012 R2 Standard 部署 ASP.NET Core程序
  8. 英语自动提取高频词_斑马英语提分营免费体验课
  9. mysql事务操作_mysql的事务操作
  10. 微信多开工具 可以同时在电脑上打开多个微信 免费开源