getline(3)
getline, getdelim - delimited string input
#include
ssize_t getline(char **lineptr, size_t *n, file *stream);
size_t getdelim(char **lineptr, size_t *n, int delim, file *stream)
feature test macro requirements for glibc (see feature_test_macros(7))
getline(), getdelim():
since glibc 2.10:
_posix_c_source >= 200809l
before glibc 2.10:
_gnu_source
getline()從stream裡面讀取完整的一行,將包含文字的緩衝的位址儲存在*lineptr中。這個buffer是以『\0』(null-terminator or null character)結尾的,如果有newline的話就包含newline。
如果在呼叫之前,*lineptr設定為null,*n設定為0,那麼getline()會分配乙個用於儲存行的buffer。即使getline()失敗了,使用者也需要釋放這個快取。
作為另一種選擇,在呼叫getline()之前,*lineptr可以包含乙個指向malloc分配的*n位元組快取的buffer。如果這個buffer大小不夠,那麼getline會用realloc(3)來重新調整buffer的大小,並且按需更新*lineptr和*n的大小。
無論哪一種情況,在一種成功的呼叫之下,*lineptr和*n會跟新到反應buffer的位址和大小。
getdelim()和getline()類似,但是它可以通過delimiter引數指定line分界符,而不是像getline()只能使用newline作為line分界符。和getline一樣,如果在讀到eof之前沒有讀到line分界符,那麼buffer裡面就不儲存這個line分解符。
如果成功,getline()和getdelim()返回讀取的字元長度(包含最後的行分界符,但是不包括null-terminator)。
兩個函式都return -1來表示讀行失敗。如果出現錯誤,errno就設定來反映原因。
einval 輸入引數不對(n或者lineptr是null,或者stream無效)。
enomem 分配或者重新分配buffer失敗。
要看在這個部分使用的術語的解釋,請看attribute(7)。
inte***ce
attribute
value
getline(), getdelim()
thread safety
mt-safe
getline()和getdelim()都是gnu拓展。他們在posix.1-2008中被標準化了。
#define _gnu_source
#include #include int
main(int argc, char *ar**)
stream = fopen(ar**[1], "r");
if (stream == null)
while((nread = getline(&line, &len, stream)) != -1)
free(line);
fclose(stream);
exit(exit_success);
}
read(2), fgets(3), fopen(3), fread(3), scanf(3)
這一頁是4.15 linux man-pages專案的一部分。專案的描述、報bug相關資訊以及本頁的最新版本,可以在找到。
gnu 2017-09-15 getline(3)
linux中man 2與man 3區別
在查詢stat系統呼叫的時候發現這個問題,記錄在此,發現查詢到的資訊不是系統呼叫資訊,使用man 2即可 1 standard commands 標準命令 2 system calls 系統呼叫 3 library functions 庫函式 4 special devices 裝置說明 5 fil...
RHEL7 UNI3 MAN使用方法
unit 3 1.man man manual man是手冊縮寫 man man 檢視man命令的幫助 man passwd 檢視passwd命令的幫助 man命令對於各運維人員來說是必須要學習掌握的,任何乙個運維人員不可能將所有的命令全部牢記在心,那麼使用man方法後類似於乙個軟體的readme,...
linux基本命令及操作3(man命令)
1.man man manual man是手冊縮寫 man man 檢視man命令的幫助 man passwd 檢視passwd命令的幫助 man的級別 1 系統命令 2 系統介面 3 函式庫 4 特殊檔案,比如裝置檔案 5 檔案 6 遊戲 7 系統的軟體包 8 系統管理命令 9 核心 man 5 ...