日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

close on exec标志位

發(fā)布時間:2025/3/15 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 close on exec标志位 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

首先說明下文件描述符,文件描述符標志,文件狀態(tài)標志的區(qū)別:
? ? 文件描述符:標識文件用的;
? ? 文件描述符標志(目前就只有一個close-on-exec):僅僅是一個標志,當進程fork一個子進程的時候,在子進程中調(diào)用了exec函數(shù)時就用到了該標志。意義是執(zhí)行exec前是否要關閉這個文件描述符;
? ? 文件狀態(tài)標志:是在系統(tǒng)文件表中,關于write、read等標志。

? ? close_on_exec 是一個進程所有文件描述符(文件句柄)的位圖標志,每個比特位代表一個打開的文件描述符,用于確定在調(diào)用系統(tǒng)調(diào)用execve()時需要關閉的文件句柄(參見include/fcntl.h)。當一個程序使用fork()函數(shù)創(chuàng)建了一個子進程時,通常會在該子進程中調(diào)用execve()函數(shù)加載執(zhí)行另一個新程序。此時子進程將完全被新程序替換掉,并在子進程中開始執(zhí)行新程序。若一個文件描述符在close_on_exec中的對應比特位被設置,那么在執(zhí)行execve()時該描述符將被關閉,否則該描述符將始終處于打開狀態(tài)。

? ? 當打開一個文件時,默認情況下文件句柄在子進程中也處于打開狀態(tài)。因此sys_open()中要復位對應比特位。

? ? 設置close on exec標志可通過fcntl(fd, F_SETFD, flags | FD_CLOEXEC)來進行設置,當然flags可先通過F_GETFD獲得。

? ? close on exec標志可有如下三個用途:

? ? 1、如果調(diào)用了exec(),應該關閉指定的套接字;

? ? 2、如果設置了此選項,則連接監(jiān)聽器設置所涉及的監(jiān)聽器套接字以close-on-exec標志;

? ? 3、一般我們會調(diào)用exec執(zhí)行另一個程序,此時會用全新的程序替換子進程的正文,數(shù)據(jù),堆和棧等。此時保存文件描述符的變量當然也不存在了,我們就無法關閉無用的文件描述符了。所以通常我們會fork子進程后在子進程中直接執(zhí)行close關掉無用的文件描述符,然后再執(zhí)行exec。

總結

以上是生活随笔為你收集整理的close on exec标志位的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。