C_and_CPP 板


LINE

請問有需要在離開 process 時, close fd 嗎? 我想這大家一定都會說是。 開檔時, 核心分配一塊 file structure,fd 就是每個 process 內的 fd table 的索引,fd 就會指向某個文件的 inode。 當每一次指向(引用),就會引用+1 當完全沒process引用了此文件,記憶體就會被銷毀? 想請問 1 核心分配的 file structure 是 heap memory 嗎? 2 請問 process exit 時,引用會消失嗎? 如果引用會消失,那有必要還要 close(fd)? 感謝 --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.115.72.6 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1627304107.A.BE9.html
1F:推 Schottky: 看平台而定。如果你在寫冷氣機或遙控直升機的程式, 07/27 02:20
2F:→ Schottky: 有可能不會自動幫你 close fd 07/27 02:20
3F:→ Lipraxde: OS 在 process 結束回收資源的時候會幫你關吧,就像亂 07/27 08:20
4F:→ Lipraxde: 丟垃圾媽媽會幫忙收的感覺? 07/27 08:20
5F:推 CGS0: 保持好的習慣 ,會讓你寫大程式時 ,減少很多除錯的時間 07/27 13:18
6F:推 cuteSquirrel: 最好養成有開有關的習慣 07/27 13:45
7F:推 Qbsuran: 那你覺得為什麼不用關 07/27 15:19
8F:推 d630200x: 養成習慣吧 07/28 00:04
9F:→ sunneo: 要關啊 假設今天把fd fileop 真正mapping到自動車跟車庫 07/28 00:45
10F:→ sunneo: 車子跑一跑,車庫沒關,那就有差了 07/28 00:45
11F:推 b0920075: trace 了一下 linux 5.10.1 開啟 regular file 會在 fs 07/28 01:46
12F:→ b0920075: /file_table.c 的 __alloc_file 用 kmem_cache_zalloc 07/28 01:46
13F:→ b0920075: 分配 object , kernel 的動態分配記憶體不確定有沒有 07/28 01:46
14F:→ b0920075: 稱為 heap 的慣例(usermode 下看 process memory maps 07/28 01:46
15F:→ b0920075: 是直接就寫 heap , kernel 印象沒看過這種說法?) 07/28 01:46
16F:推 b0920075: exit syscall 就會call filp_close 關檔案引用減一,以 07/28 01:54
17F:→ b0920075: 上是 5.10.1 版本的 kernel 07/28 01:54
18F:→ b0920075: 如果是linux 然後 process 又是正常關掉 linux 是會幫 07/28 01:56
19F:→ b0920075: 你收好,但其他 os 就不好說了吧 07/28 01:56
20F:→ isaacting: 有些東西沒有跑os的,不關會造成嚴重的錯誤 07/28 12:02
21F:→ isaacting: 我曾經在mcu上對sd卡讀寫,有api類似開關檔,寫了之後 07/28 12:03
22F:→ isaacting: 沒有下關的指令,會讓sd card讀寫造成錯誤 07/28 12:03
23F:推 Killercat: 通常關一關比較好 07/28 16:26
24F:推 pponywong: 同上面講的 fd 不見得是檔案 char kernel driver 都有 07/28 19:42
25F:→ pponywong: 可能用fd來操作 kernel driver不一定保證幫你處理 07/28 19:43
26F:→ pponywong: resource release的操作 我就遇過系統中直接發signal 07/28 19:44
27F:→ pponywong: 去砍掉程式 造成kernel panic的 07/28 19:44
28F:→ alex70266: 想不到什麼理由不關啦,更何況這是確保安全的習慣 07/28 23:11
29F:→ alex70266: 難道有了免治馬桶以後就不用買衛生紙嗎XD 07/28 23:12
30F:推 askacis: 不關fd, 則 process 會佔用 一個 fd號碼,系統跑久之後你 07/28 23:59
31F:→ askacis: 就會發現為什麼沒辦法開檔了,因為系統的 fd都用光光了 07/28 23:59
32F:→ askacis: 很多系統靈異現象都是這樣來的,記得用 lsof 查誰佔住了 07/29 00:00
33F:→ askacis: 一堆 fd 07/29 00:00
34F:推 b0920075: 如果是 process 一直跑但是不關 fd 達到給 process 的 07/29 01:51
35F:→ b0920075: fd 上限後開下一個就會失敗,但 fd 只跟 process 有關 07/29 01:51
36F:→ b0920075: 吧,跟系統上跑的其他 process 應該是獨立不相干的? 07/29 01:51
37F:→ jacky1989: 建議保持好習慣,有fopen 就有fclose 07/30 00:37
38F:推 ibmibmibm: 如果你在寫飛彈的程式,那可能發射兩分鐘後就有終極的 08/10 09:46
39F:→ ibmibmibm: 全系統資源回收,那就不用關了,不然還是都記得關吧 08/10 09:46
40F:推 youtuuube000: 問題是process很可能會長期跑啊..一直開著到時fd爆 08/12 14:43
41F:→ youtuuube000: 掉怎辦 08/12 14:43
42F:推 ArdenCho: 關一關吧,養成一個好習慣 09/28 22:49







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:BabyMother站內搜尋

TOP