file-descriptor相关内容

如何使用 sendmsg() 在 2 个进程之间通过套接字发送文件描述符?

@cnicutar 在这个问题上回答我之后 问题,我试图将文件描述符从父进程发送给它的子进程.基于此示例,我写了这段代码: int socket_fd ,accepted_socket_fd, on = 1;int server_sd,worker_sd,pair_sd[2];结构 sockaddr_in 客户端地址;结构 sockaddr_in server_address;/* ====== ..
发布时间:2022-01-19 16:00:01 服务器开发

什么会导致“IOError: [Errno 9] Bad file descriptor"?在 os.system() 期间?

我正在使用一个科学软件,其中包括一个调用 os.system() 的 Python 脚本,该脚本用于运行另一个科学程序.当子进程运行时,Python 有时会打印以下内容: 在文件对象析构函数中关闭失败:IOError: [Errno 9] 错误的文件描述符 我相信这条消息是在 os.system() 返回的同时打印出来的. 我现在的问题是: 哪些情况会导致这种类型的 IOError ..
发布时间:2022-01-18 15:30:02 Python

如何在python中将文件描述符从父级传递给子级?

我正在使用多处理模块,并使用池来启动多个工作人员.但是在父进程中打开的文件描述符在工作进程中是关闭的.我希望他们开放..!有没有办法传递文件描述符以在父子之间共享? 解决方案 据我所知,没有一种方法可以在进程之间共享文件描述符.如果存在方法,它很可能是特定于操作系统的. 我的猜测是您需要在另一个级别上共享数据. ..
发布时间:2022-01-12 12:58:03 Python

epoll如何工作的一般解释?

我正在写一篇关于从数据库轮询(通过同步存储过程调用)切换到消息队列(通过发布/订阅)的技术文章.我希望能够解释轮询数据库与建立与 AMQP 代理的连接和配置消息处理程序相比有何巨大不同和重得多. 有人可以在这里提供一个解释,或者给我一个很好的高级教程,说明当通知套接字上有新数据可用时,epoll 是如何工作的? 解决方案 我假设“epoll 的工作原理"是指从用户的角度来看它是如何工 ..
发布时间:2022-01-11 17:53:53 Python

检查 Linux 中给定进程的开放 FD 限制

我最近有一个 Linux 进程“泄露"了文件描述符:它打开了它们,但没有正确关闭其中的一些. 如果我对此进行了监控,我可以提前知道该过程已达到极限. 是否有一种不错的 Bash 或 Python 方法来检查 Ubuntu Linux 系统中给定进程的 FD 使用率? 编辑: 我现在知道如何检查有多少打开的文件描述符了;我只需要知道一个进程允许使用多少个文​​件描述符.某些系 ..

在 STDOUT 和 STDIN 的文件描述符上执行库函数的奇怪行为

在我作为 C 程序员的这些年里,我一直对标准流文件描述符感到困惑.某些地方,例如维基百科[1],说: 在 C 编程语言中,标准输入、输出和错误流分别附加到现有的 Unix 文件描述符 0、1 和 2. 这由 unistd.h: /* 标准文件描述符.*/#define STDIN_FILENO 0/* 标准输入.*/#define STDOUT_FILENO 1/* 标准输出.*/# ..
发布时间:2022-01-04 08:29:13 服务器开发

如何从 Rust 中的特定原始文件描述符中读取?

编者注:此问题针对 1.0 之前的 Rust 版本.一些答案已更新以涵盖 Rust 1.0 或更高版本,但不是全部. 我正在用 Rust 编写一个 systemd 套接字激活服务.systemd 正在向我的进程传递一个打开的文件描述符. 是否有任何采用原始文件描述符的 Rust IO 函数? 在 Rust 1.0 之前,我每晚都使用 Rust. 解决方案 我认为现在你最好 ..
发布时间:2022-01-04 08:26:22 服务器开发

为进程 linux(C 代码)查找打开的文件描述符?

我想在 linux 中找到为进程打开的所有文件. 我可以用 glib 库函数来做吗? 解决方案 自从您使用 Linux 以来,您(几乎可以肯定)已经安装了 /proc 文件系统.这意味着最简单的方法是获取 /proc/self/fd 的内容列表;其中的每个文件都以 FD 命名.(当然,使用 g_dir_open、g_dir_read_name 和 g_dir_close 来做列表.) ..
发布时间:2022-01-02 19:14:38 服务器开发

如何从外部进程将数据写入现有进程的 STDIN?

我正在寻找从外部进程将数据写入现有进程的 STDIN 的方法,并发现了类似的问题 如何将数据从不同的本地/远程进程流式传输到程序的 STDINPython?在stackoverlow中. 在那个线程中,@Michael 说我们可以在如下路径中获取现有进程的文件描述符,并允许在 Linux 上将数据写入其中. /proc/$PID/fd/ 因此,我创建了一个下面列出的简单脚本来测试从外部进 ..
发布时间:2022-01-02 19:03:41 服务器开发

FIFO 管道在 select() 中始终可读

在 C 伪代码中: while (1) {fifo = open("fifo", O_RDONLY | O_NONBLOCK);fd_set 读取;FD_SET(fifo, &read);选择(nfds, &read, NULL, NULL, NULL);} 进程在 select() 触发时休眠,直到另一个进程写入 fifo.之后它总会找到 fifo 作为可读的文件描述符. 如何避免这种 ..
发布时间:2021-12-19 15:00:03 其他开发

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

我有一个文件描述符存储在一个变量中,比如 var.如何在稍后阶段检查该描述符是否有效? fdvar1= open(.....);fdvar2 = fdvar1;//请忽略糟糕的设计....//很多循环、条件和线程.它也可以调用 close(fdvar2) .....if(CheckValid(fdvar1))//我该如何做这个检查?写(fdvar1,....); 现在我想检查 var1(仍然 ..
发布时间:2021-12-18 23:06:05 服务器开发

在 fork() 之后寻求关于“文件描述符"的简单描述

在“Unix 环境中的高级编程",第 2 版,W. Richard Stevens 着.8.3 分叉函数. 说明如下: 父和子共享相同的文件偏移量很重要. 考虑一个 fork 子进程,然后等待子进程完成的进程.假设两个进程都将写入标准输出作为其正常处理的一部分.如果父级的标准输出重定向(可能是通过 shell),则当子级写入标准输出时,子级必须更新父级的文件偏移量. 我的回 ..
发布时间:2021-12-15 00:03:03 服务器开发

在 JENKINS 上处理泄漏的文件描述符错误

当我将作业配置为停止和启动 tomcat 服务器时出现此错误: 处理泄露的文件描述符.参见 http://wiki.jenkins-ci.org/display/JENKINS/Spawning+processes+from+build 了解更多信息 当我用谷歌搜索时,我得到了一个推荐的解决方案 set BUILD_ID=dontKillMe 这是确切的解决方案吗? 如果是,我需要 ..
发布时间:2021-12-14 21:12:37 其他开发

select() 如何在 fd 变得“准备好"时发出警报?

我不知道为什么我很难找到这个,但我正在查看一些我们使用 select() 等待文件描述符报告的 linux 代码准备好了.从选择的手册页: select() 和 pselect() 允许程序监视多个文件描述符,等待一个或多个文件描述符为某些文件“准备好"I/O 操作类 所以,那太好了...我在某个描述符上调用 select,给它一些超时值并开始等待指示消失.文件描述符(或描述符的所有者)如何报 ..
发布时间:2021-12-11 12:01:06 服务器开发

文件描述符是如何工作的?

谁能告诉我为什么这不起作用?我在玩文件描述符,但感觉有点迷茫. #!/bin/bash回声“这个"回声“是">&2回声“a">&3回声“测试".>&4 前三行运行正常,但后两行出错.为什么? 解决方案 文件描述符 0、1 和 2 分别用于 stdin、stdout 和 stderr. 文件描述符 3、4、.. 9 用于附加文件.为了使用它们,您需要先打开它们.例如: exec ..
发布时间:2021-12-09 10:37:44 其他开发

通过 Linux 套接字发送文件描述符

我试图通过 linux 套接字发送一些文件描述符,但它不起作用.我究竟做错了什么?应该如何调试这样的东西?我尝试将 perror() 放在任何可能的地方,但他们声称一切正常.这是我写的: #include #include #include #include #include #include #include #include void wyslij(int socket, int fd)// ..
发布时间:2021-12-03 13:41:39 服务器开发

从 C 中的文件描述符中检索文件名

是否可以在 C 中获取文件描述符 (Linux) 的文件名? 解决方案 您可以使用 readlink 在 /proc/self/fd/NNN 上,其中 NNN 是文件描述符.这将为您提供文件打开时的名称——但是,如果文件从那时起被移动或删除,它可能不再准确(尽管 Linux 在某些情况下可以跟踪重命名).为了验证,stat 给定的文件名和 fstat 你拥有的 fd,并确保 st_dev ..
发布时间:2021-12-02 08:12:11 服务器开发