exec函数

本文探讨了exec函数的使用细节及其对当前目录下可执行文件的要求,并讨论了FD_CLOEXEC标志的作用与影响,包括文件描述符的管理和close操作的具体表现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

已经转载了一篇exec函数的文章,这里补充一些。

exec函数的第二个参数好像只能用"./xx"当前目录下的可执行文件,至于为什么我也不是很懂,以后遇见了再说吧。

FD_CLOEXEC,标志默认是关闭的。可以再open里打开,或者fcntl。如果文件已经存在,再次create+trunc,属性

是不变的,O_TRUNC(配合只写或者读写才会更新文件) 若文件存在, 将其长度缩为0, 属性不变。

close删除/proc/pid/fd下的文件描述符,ulimit -n 我的电脑是1024,这个文件夹下最多能放0-1024共1025个描述符。

FD_CLOEXEC执行时关闭,这个经测试并没有删除文件夹下的fd,但是打开标志后,文件不可读。(别的地方说

是引用计数减一)。那就引用计数减一吧,不过fd的个数还是占用的。当我在父进程打开1024个描述符,fork子进程

后exec的进程,只能打开一个exec描述符。不管有没有设置CLOSE_ON_EXEC标志。还有一点,exec执行的时候也

占用了一个fd,执行的程序运行后查看文件夹下,fd的个数并没有增加。这个也不太好理解。

综上,感觉这个标志只是让子进程不能使用继承的描述符,但跟close的作用还是不一样。不过close的话,

要关闭所有的继承的描述符的话又不好统计。

就这样吗,以后再看吧


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值