一般我们会调用exec执行另一个程序,此时会用全新的程序替换子进程的正文,数据,堆和栈等。 此时保存文件描述符的变量当然也不存在了,我们就无法关闭无用的文件描述符了。 所以通常的做法是,我们一般会fork子进程后,先在子进程中close那些由于继承得到的,对子进程后续工作无用的文件描述符,再去执行e ...
分类:
其他好文 时间:
2020-10-06 20:23:34
阅读次数:
36
大部分这种问题都能够解决,在文章的最后,提到了一种特殊情况,就是父子进程中的端口占用情况。父进程监听一个端口后,fork出一个子进程,然后kill掉父进程,再重启父进程,这个时候提示端口占用,用netstat查看,子进程占用了父进程监听的端口。 原理其实很简单,子进程在fork出来的时候,使用了写时 ...
分类:
系统相关 时间:
2020-06-27 00:36:08
阅读次数:
80
close_on_exec是一个进程所有文件描述符的标记位图,每个比特位代表一个打开的文件描述符,用于确定在调用系统调用execve()时需要关闭的文件句柄 (参见include/fcntl.h)。 当一个程序使用fork()函数创建了一个子进程时,往往会在该子进程中调用execve()函数加载执行 ...
分类:
系统相关 时间:
2019-06-20 18:44:24
阅读次数:
241
Conmajia ???? © 2012, Alan Bryan ???? © 2012 部分设计参考了 Alan Bryon 的 B32 虚拟机,已获授权. Updated on Feb. 19, 2018 虚拟机基础 这篇文章是我自制虚拟机系列文章的第一部分。这个系列将从零开 ...
分类:
其他好文 时间:
2018-02-21 18:16:26
阅读次数:
200
一、概述 1、什么是数据库 ? 答:数据的仓库,如:在ATM的示例中我们创建了一个 db 目录,称其为数据库 2、什么是 MySQL、Oracle、SQLite、Access、MS SQL Server等 ? 答:他们均是一个软件,都有两个主要的功能: a. 将数据保存到文件或内存 b. 接收特定的 ...
分类:
数据库 时间:
2017-06-11 15:00:17
阅读次数:
253
1 进程 using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Threading.Tasks; nam ...
分类:
编程语言 时间:
2017-05-29 16:00:53
阅读次数:
233
def __init__(self, impl=None): self._impl = impl or _poll() if hasattr(self._impl, 'fileno'): self._set_close_exec(self._impl.fileno()) self._handlers... ...
分类:
其他好文 时间:
2017-05-11 17:01:06
阅读次数:
264
转自:使用FD_CLOEXEC实现close-on-exec,关闭子进程无用文件描述符 我们经常会碰到需要fork子进程的情况,而且子进程很可能会继续exec新的程序。这就不得不提到子进程中无用文件描述符的问题! fork函数的使用本不是这里讨论的话题,但必须提一下的是:子进程以写时复制(COW,C ...
分类:
其他好文 时间:
2017-04-23 20:10:20
阅读次数:
125
文件描述符标志(目前就只有一个close-on-exec): 它仅仅是一个标志,当进程fork一个子进程的时候,在子进程中调用了exec函数时就用到了这个标志。意义是执行exec前是否要关闭这个文件描述符。 close-on-exec是一个进程所有文件描述符(文件句柄)的位图标志,每个比特位代表一个 ...
分类:
其他好文 时间:
2016-06-30 19:58:04
阅读次数:
206