日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux文件拷贝函数,linux:文件操作函数(open,close,read,write)

發布時間:2025/3/21 linux 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux文件拷贝函数,linux:文件操作函数(open,close,read,write) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. open()函數

功能描述:用于打開或創建文件,在打開或創建文件時可以指定文件的屬性及用戶的權限等各種參數。

所需頭文件:#include ,#include ,#include (我們用的時候只需要引用這個頭文件)

函數原型:int

open(const char *pathname,int

flags)

/ int

open(const char *pathname,int flags,int perms)

參數:pathname:被打開的文件名(可包括路徑名如"dev/ttyS0");

flags:文件打開方式.

O_RDONLY:以只讀方式打開文件

O_WRONLY:以只寫方式打開文件

O_RDWR:以讀寫方式打開文件

O_CREAT:如果改文件不存在,就創建一個新的文件,并用第三個參數為其設置權限

O_EXCL:如果使用O_CREAT時文件存在,則返回錯誤消息。這一參數可測試文件是否存在。此時open是原子操作,防止多個進程同時創建同一個文件

O_NOCTTY:使用本參數時,若文件為終端,那么該終端不會成為調用open()的那個進程的控制終端

O_TRUNC:若文件已經存在,那么會刪除文件中的全部原有數據,并且設置文件大小為0

O_APPEND:以添加方式打開文件,在打開文件的同時,文件指針指向文件的末尾,即將寫入的數據添加到文件的末尾

O_NONBLOCK:

如果pathname指的是一個FIFO、一個塊特殊文件或一個字符特殊文件,則此選擇項為此文件的本次打開操作和后續的I/O操作設置非阻塞方式。

O_SYNC:使每次write都等到物理I/O操作完成。

O_RSYNC:read 等待所有寫入同一區域的寫操作完成后再進行

在open()函數中,falgs參數可以通過“|”組合構成,但前3個標準常量(O_RDONLY,O_WRONLY,和O_RDWR)不能互相組合。

perms:被打開文件的存取權限,可以用兩種方法表示,可以用一組宏定義:S_I(R/W/X)(USR/GRP/OTH),其中R/W/X表示讀寫執行權限.(USR/GRP/OTH分別表示文件的所有者/文件所屬組/其他用戶)

返回值:成功:返回文件描述符; 失敗:返回-1

2. close()函數

功能描述:用于關閉一個被打開的的文件

所需頭文件:?#include

函數原型:int

close(int fd)

參數:fd文件描述符

返回值:0成功,-1出錯

3. read()函數

功能描述: 從文件讀取數據。

所需頭文件:?#include

函數原型:ssize_t?read(int fd, void *buf, size_t

count);

參數:?fd:?將要讀取數據的文件描述詞。buf:指緩沖區,即讀取的數據會被放到這個緩沖區中去。count:

表示調用一次read操作,應該讀多少數量的字符。

返回值:返回所讀取的實際字節數;0(讀到EOF);-1(出錯)。

以下幾種情況會導致讀取到的字節數小于?count :

A.

讀取普通文件時,讀到文件末尾還不夠?count 字節。例如:如果文件只有

30 字節,而我們想讀取 100

字節,那么實際讀到的只有 30 字節,read 函數返回 30 。此時再使用 read 函數作用于這個文件會導致 read 返回 0

B.

從終端設備(terminal device)讀取時,一般情況下每次只能讀取一行。

C.

從網絡讀取時,網絡緩存可能導致讀取的字節數小于 count字節。

D.

讀取 pipe 或者 FIFO 時,pipe 或 FIFO

里的字節數可能小于?count 。

E.

從面向記錄(record-oriented)的設備讀取時,某些面向記錄的設備(如磁帶)每次最多只能返回一個記錄。

F.

在讀取了部分數據時被信號中斷。

讀操作始于 cfo 。在成功返回之前,cfo 增加,增量為實際讀取到的字節數。

4. write()函數

功能描述: 向文件寫入數據。

所需頭文件:?#include

函數原型:ssize_t

write(int fd, void *buf, size_t count);

返回值:寫入文件的字節數(成功);-1(出錯)

功能:write 函數向 filedes 中寫入?count

字節數據,數據來源為 buf 。返回值一般等于

count,否則就是出錯了。常見的出錯原因是磁盤空間滿了或者超過了文件大小限制。

對于普通文件,寫操作始于 cfo 。如果打開文件時使用了 O_APPEND,則每次寫操作都將數據寫入文件末尾。成功寫入后,cfo

增加,增量為實際寫入的字節數。

接下來我們來一起用一用這些函數

(1)以寫方式創建打開一個文件,0600代表用戶的權限,我們可以對文件進行讀(4)和寫(2)操作

write(),在file.txt中寫“hello”,寫入字節數為5

打開file.txt,可以看到hello被寫入

(2)以讀方式打開文件,文件打開成功,往buff里讀127個字節(如果我們讀128實際存在比128個字節長,那么\0沒處放了,所以這里我們讀127.)

(3).我們可以用read和write結合完成一個拷貝操作,

讀寫操作結合完成拷貝passwd,拷貝后名為newpasswd. 讀一部分寫一部分,通過read返回值為0判斷讀完,結束。

拷貝成功,大小和原passwd一樣大.

總結

以上是生活随笔為你收集整理的linux文件拷贝函数,linux:文件操作函数(open,close,read,write)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。