Re: [問題] 有甚麼指令可以關file descriptor

看板C_and_CPP作者 (佛羅倫斯)時間8年前 (2015/10/31 23:39), 編輯推噓1(1012)
留言13則, 4人參與, 最新討論串1/1
※ 引述《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

10/31 23:50, , 1F
file descriptor的型別應該是int吧?fopen傳回的是FILE *
10/31 23:50, 1F

10/31 23:56, , 2F
這個int是process的file table的index
10/31 23:56, 2F

10/31 23:56, , 3F
struct FILE裡有一個欄位會記錄這個int
10/31 23:56, 3F

11/01 00:00, , 5F
如果程式執行期間,檔案被rm指令刪除,也許是你遇到的情形
11/01 00:00, 5F

11/01 00:30, , 6F
對 應該不是叫file descriptor 是叫FILE*才對
11/01 00:30, 6F

11/01 00:31, , 7F
但是我沒有remove xxx.txt 為什麼還會有這些error
11/01 00:31, 7F

11/01 01:19, , 8F
你先看你的檔案有沒有問題吧
11/01 01:19, 8F

11/01 01:20, , 9F
我是在bsd環境下用touch xxx.txt把空的檔案生出來的
11/01 01:20, 9F

11/01 01:22, , 10F
是因為醬有問題嗎 還是說因為fopen就會自動生出xxx.txt
11/01 01:22, 10F

11/01 01:23, , 11F
所以應該要用fopen生出xxx.txt才對嗎
11/01 01:23, 11F

11/01 01:43, , 12F
fopen 沒有 "rw+" 這種開檔模式,沒開檔成功後續的
11/01 01:43, 12F

11/01 01:43, , 13F
fputc 當然會錯誤,檔案根本沒有開啟所以後續操作會失敗
11/01 01:43, 13F
文章代碼(AID): #1MDE2cBz (C_and_CPP)