原文:關於fork后exec子進程繼承父進程文件描述符保持開放的問題

在多進程編程中,根據業務需要會通過fork exec執行shell腳本或其它程序,在fork后父 子進程對於每一個打開的文件描述符共享同一個文件表項,此時可能有多個文件描述符項指向同一文件表項。有時子進程不需要繼承父進程的文件描述符,並且在exec后子進程繼承下來的文件描述符成了耗費系統資源的一個累贅,此時應該怎么處理呢 接下來我將分享下我在工作中遇到的問題以及解決方案。 首先介紹一下fcntl函 ...

2020-03-12 16:03 0 1349 推薦指數:

查看詳情

fork進程子進程

進程 什么是進程進程是一個運行中的程序實體,擁有獨立的堆棧、內存空間和邏輯控制流。 這是標准的進程概念。讓我們通過操作系統的fork函數看看這個抽象的概念是怎么在進程的實現中體現出來的。 構成要素 創建一個進程,需要進程體、進程表和數據空間。 進程體在C代碼中對應一個函數,編譯成二進制 ...

Sat Jul 24 05:44:00 CST 2021 0 270
進程間傳遞文件描述符

,同時也利用到了進程地址空間保護的優勢了嗎? 但是還有一個問題,我們不能為每一個進程都創建一個監聽套接 ...

Mon Apr 02 17:35:00 CST 2012 1 3785
進程描述符(PCB)

進程描述符(PCB) 概述 CPU作為計算機的核心部件,我們當然希望它能一直工作,充分提高它的使用效率。對於上層軟件來說,我們不可能直接去操控CPU(我們沒這能力也沒必要),因為操作系統是夾在計算機硬件和上層軟件的中間層,所以操作系統就要充分擔當起這個中間人的角色,替計算機管理好CPU,保證 ...

Thu Sep 24 08:48:00 CST 2020 0 571
進程文件描述符文件對應的關系

在linux中 一切對象都被視為文件比如普通文件、目錄文件、甚至socket(這個在網絡通信中尤為重要)。FD(不了解這個的可以看下文章解釋)文件描述符其實從內核的角度來講 有一定的LIMIT 所以分配給進程的也不多 ,默認1024 。也就是拿socket 來說 連續新建socket數量 ...

Sun Aug 02 05:22:00 CST 2020 0 536
高級進程間通信之傳送文件描述符

進程間傳送打開的文件描述符的能力是非常有用的,可以用它對客戶進程/服務器進程應用進行不同的設計。它使一個進程(一般是服務器進程)能夠處理為打開一個文件所要求的一切操作(具體如將網絡名翻譯為網絡地址、撥號調制解調器、協商文件鎖等)以及向調用進程送回一描述符,該描述符可被用於以后的所有I/O函數 ...

Thu Feb 27 22:06:00 CST 2014 1 5149
文件描述符進程間通信之關聯

最近在想一個問題,關於進程間通信的問題,我們都知道進程間可以通過管道通信,但是為什么進程間可以通過管道通信呢?管道通信的機制又是什么呢?我想很多人應該沒有去思考過,下面我來講講我對管道通信機制的理解。 如果兩個不相關的進程打開同一個文件,一個只讀方式開打,一個只寫方式打開,不就相當於創建了一個 ...

Sat Jan 05 21:17:00 CST 2013 4 5476
Linux進程關於文件描述符的數量限制

文件描述符fd是Linux相對有限的資源,單個進程中的fd數量有限制,一般默認是1024。 查看當前session的fd數量限制# ulimit -n 修改當前session的fd數量限制,注意只對當前session有效# ulimit -n your_need 程序中可利用系統函數 ...

Tue Jan 08 00:28:00 CST 2013 0 6656
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM