看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《florenceL (佛羅倫斯)》之銘言: : ※ [本文轉錄自 Linux 看板 #1MDDsv5Z ] : 作者: florenceL (佛羅倫斯) 看板: Linux : 標題: [問題] 有甚麼指令可以關file descriptor : 時間: Sat Oct 31 23:26:44 2015 : 我在遠端終端機上跑程式, : 因為我一直fopen出file descriptor, : 但是都沒有fclose掉它, : 結果過一陣子之後就沒辦法fputc寫字串到打開的file descriptor了 : 系統訊息是下面兩種 : 1.bad file descriptor : 2.no such file or directory : 想請問碰到這種情形該怎麼辦? : 有沒有甚麼linux的指令可以關掉沒close的file descriptor? 我寫的程式如果是fopen("xxx.txt","rw+") fputc出現的error meassage是bad file descriptor 如果是fopen("xxx.txt","w+") fputc出現的error message是no such file or directory -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.115.53.27 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1446305958.A.2FD.html
new052: file descriptor的型別應該是int吧?fopen傳回的是FILE * 10/31 23:50
new052: 這個int是process的file table的index 10/31 23:56
new052: struct FILE裡有一個欄位會記錄這個int 10/31 23:56
new052: 如果程式執行期間,檔案被rm指令刪除,也許是你遇到的情形 11/01 00:00
florenceL: 對 應該不是叫file descriptor 是叫FILE*才對 11/01 00:30
florenceL: 但是我沒有remove xxx.txt 為什麼還會有這些error 11/01 00:31
filiaslayers: 你先看你的檔案有沒有問題吧 11/01 01:19
florenceL: 我是在bsd環境下用touch xxx.txt把空的檔案生出來的 11/01 01:20
florenceL: 是因為醬有問題嗎 還是說因為fopen就會自動生出xxx.txt 11/01 01:22
florenceL: 所以應該要用fopen生出xxx.txt才對嗎 11/01 01:23
kenduest: fopen 沒有 "rw+" 這種開檔模式,沒開檔成功後續的 11/01 01:43
kenduest: fputc 當然會錯誤,檔案根本沒有開啟所以後續操作會失敗 11/01 01:43