導航:首頁 > 操作系統 > linux文件操作的函數

linux文件操作的函數

發布時間:2023-05-15 15:08:26

linux下 對文件的 操作,用fopen fread,fwrite等,還是用open read,write哪個更好呢

上面幾位都說到點子上了,fopen系的函數是C標准庫的函數中操作文件流的函數(有緩沖)頭文件stdio.h,open系的函數是posix規范的介面,沒緩沖,頭文件估計是io.h還是unistd.h我記不到了。返回值不一樣(一個結構體指針一個int)然後就是open系的可以做更多的事,但fopen移植性好。這個看你的需求來用,順便一提,win下mingw支持很多posix的函數(但至少fork,exec不支持,spawn倒是支持)

㈡ linux系統中,有哪些系統調用的函數

Linux下對文件操作有兩種方式:系統調用(system call)和庫函數調用(Library functions)。系統調用實際上就是指最底層的一個調用,在linux程序設計裡面就是底層調用的意思。面向的春蠢仔是檔猜硬體。而庫函數調用則面向的是應用開發的,相當於扒汪應用程序的api...

㈢ 在linux下操作文件,是用linux提供的fcntl.h還是用C++提供的fstream.h

1、fcntl.h定義了一組基於C的非緩沖的文件操作函數,可用於文件和設備(及socket等)的I/O操作。另外在stdio.h中定義了一組標准I/O函數,提供了帶緩沖的文件操作功能(與非緩沖文件操作對應),它們多用於常規文件的操作。

2、fstream.h(fstream)定義了一個C++的流類,提供對文件的流式訪問。
在linux系統早乎中,可彎睜基以根據你的應用需求選擇使用它埋謹們。

㈣ linux系統調用文件函數write()怎麼往文件里寫入換行

參考一下吧,

strcat(buf," ");

將你要寫的數據放在buf中,利鎮知敗用strcat函數在後面拼接上換行符

int fd=open("/home/wang/time.log",O_CREAT|O_RDWR,0666);

打開(創建)你要操作的文件

write(fd,buf,sizeof(buf));

向文件中寫入數據


下面是我創建的守護進程列印的日誌文件御顫信息,文件為time.log。內容時每兩秒向文件中寫猛旁入當前時間

㈤ Linux p p2函數理解

在linux中,我們需要復制文件描述符,下面是我對文件描述符的理解

int p(int fd); // 復制一個已經存在的文件描述符,如果成功,返回復製成功後的文件描述符,失敗返回-1

int p(int fd, int fd2); // 復制一個文件描述符,fd表示已經存在的打開的文件描述符,fd2是指定新的文件描述符,如果fd2等於fd,則直接返回,如果fd2存在並且打開,則先close(fd2)後,重新打開,這樣fd2和fd就指向了同一個文件(共享打開的文件),如果fd2不存在或者沒有打開,則打開fd2,並且指向fd所指向的文件。函數的返回值和fd2一致。該函數可以實現文件的重定位。

每個進程都有一個文件描述符表,每個描述符佔用一個描述符項,每個文件描述符可以描述成這樣

struct fileDescription {

int index;

void *pointer;

};

除了整形,還有一個指針,指向文件表,內核為所有打開文件維持一張文件表,每個文件表項包含:

1)文件狀態標志(讀、寫、添寫、同步和非阻塞等)

2)當前文件的偏移量

3)指向該文件v節點表項的指針

v節點表中包含了文件所有者、文件長度、文如逗件所在的設巧鍵備、指向文件實際數據塊在磁碟上所在位置的指針等等

下面給出一個例子:

#include <iostream>

#include <stdio.h>

#include <fcntl.h>

#include <sys/stat.h>

#include <unistd.h>

#include <string.h>

using namespace std;

int main()

{

cout << "Hello world!" << endl;

int fd = open("a.txt", O_RDWR | O_CREAT | O_APPEND, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH);

if (fd < 0)

{

printf("open a.txt failed, fd = %d\n", fd);

return -1;

}

printf("open a.txt success, fd = %d\n", fd);

fflush(stdout);

// 復制標准輸出的文件描述符

int nfd = p(STDOUT_FILENO);

int fileFd = p2(fd, STDOUT_FILENO);

if (fileFd < 0)

{

printf("p2 stdout_fileno failed, fileFd = %d\n", fileFd);

return -1;

}

printf("重定向標准輸出到a.txt, fileFd = %d\n", fileFd);

// 將STDOUT_FILENO復制到fd後,fd並沒有發生變化,依然可以通過它寫入到a.txt中

const char *pStr = "write string through fd\n";

write(fd, pStr, strlen(pStr));

fileFd = p2(nfd, fileFd);

if (fileFd < 0)

{

printf("p2 reback stdout_fileno failed\n");

return -1;

}

printf("print back to stdout standard, fileFd = %d\n", fileFd);

//孝橡巧 上面使用p2的時候,STDOUT_FILENO是存在並打開的,我們來測試下不存在的文件描述符的情況

fileFd = p2(fd, 20);

if (fileFd < 0)

{

printf("p2不存在的文件描述符失敗, fileFd = %d\n", fileFd);

}

else

{

printf("p2不存在的文件描述符成功, fileFd = %d\n", fileFd);

const char *pStr = "write string through fileFd\n";

write(fileFd, pStr, strlen(pStr));

}

close(nfd);

close(fileFd);

return 0;

}

文件指針是關鍵,標志兩個文件描述符是否一致,看文件指針是否一致即可 ,如果兩個或者多個文件描述符指向同一個文件表,那麼對他們的操作是對同一個文件進行操作

㈥ Linux系統中如何操作文件

Linux里主要有兩種文件操作方式:系統調用、ANSI C文件操作.

(1) Linux系統調用

一個非負整數,索引值,通常使用宏來表示。代表指向內核中每個進程打開文件的記錄表。

即底層操作。文件底層I/O操作的系統調用主要有open、close、read、write、lseek、ulink函數來直接操作文件。

其實ZLG那有很多的,你可以去看一下的。

㈦ 在linux系統中如何用open函數創建文件

Linux操作系統內核(kernel)利用文件描述符來訪問文件,文件描述符大於等於0,是一個用戶描述被打開文件的索引值,它指向該文件的相關信息記錄表,當文件打開或者創建新文件的時,就會返回一個文件描述符,當讀寫文件時,也需要使用文件描述符來指定特寫文件。

2、講解open函數
文件需要先打開或則創建





如果返回是-1, 則出錯,如果成功,則返迴文件描述符

第一個參數是文件路徑
第二個參數是flags

㈧ linux 中 open和fopen的區別

在 C 語言中,open()、read()、write()、close() 函數是對一個二進制文件(或者文本文件)進行的低級操作函數;而fopen()、fread()、fwrite()、fclose() 函數是對一個二進制文件(或者文本文件)進行的高級操作函數。具體的函數參數如何寫法,你可以參考 C 語言庫函數的相關文檔。通常情況下,如果要處理的數據比較大的話,低級操作肯定要比高級操作在速度上要快得多。

㈨ Linux有沒有文件夾的復制,移動,重命名函數

跟文件一樣。

cp命令用於復制文件或目錄,格式為:「cp [選項] 源文件 目標文件」。

想必您一定對復制操作不是很陌生的,在Linux系統中的復制操作其實具體還分為3種情況,第一種情況是如果目標文件是個目錄,則會將源文件復制到該目錄中,第二種情況是如果目標文件也是個普通文件,則會提示是否要覆蓋它,最後是第三種的情況了,如果目標文件是不存在的,則會將源文件修改成目標文件的名稱,類似於是重命名的操作。

參數
作用

-p
保留原始文件的屬性

-d
若對象為"鏈接文件",則保留該"鏈接文件"的屬性

-r
遞歸持續復制(用於目錄)

-i
若目標文件存在則詢問是否覆蓋

-a
相當於-pdr(p,d,r為上述的參數)

首先創建一個名為install.log的文件,然後將其復制出來一份名為x.log的備份文件:

[root@linuxprobe ~]# touch install.log
[root@linuxprobe ~]# cp install.log x.log
[root@linuxprobe ~]# ls
install.log x.log

mv命令用於移動文件或改名,格式為:「mv [選項] 源文件 [目標路徑|目標文件名]」。

剪切操作不同於復制操作,因為它會默認將源文件刪除掉,用戶就只有剪切後的文件了,並且如果對一個文件在同一個目錄中進行剪切操作,其實也是重命名的作用:

[root@linuxprobe ~]# mv x.log linux.log

rm命令用於刪除文件或目錄,格式為:「rm [選項] 文件」。

在Linux系統中刪除文件時會默認再向您詢問是否要執行刪除操作,如果不想總看到這種反復的確認信息,您可以使用「-f」參數來直接強制刪除,另外還要刪除於目錄文件夾的話,必需追加一個「-r」參數才可以,否則是刪除不掉的,例如咱們來嘗試刪除下剛剛那兩個文件吧:
[root@linuxprobe ~]# ls
install.log linux.log
[root@linuxprobe ~]# rm install.log
rm: remove regular empty file 『install.log』? y
[root@linuxprobe ~]# rm -rf linux.log
[root@linuxprobe ~]# ls
[root@linuxprobe ~]#

可以看下http://www.linuxprobe.com/chapter-02.html

閱讀全文

與linux文件操作的函數相關的資料

熱點內容
伺服器磁碟滿了文件刪不掉該如何處理 瀏覽:847
壓縮彈簧展開長度 瀏覽:509
如何共享國外app 瀏覽:687
淘寶app如何掃描圖片 瀏覽:594
反編譯作業幫 瀏覽:856
釘釘打卡伺服器過什麼意思 瀏覽:139
鏤空加密隔斷牆效果圖 瀏覽:539
windows7怎麼安裝證書伺服器 瀏覽:952
證券業務的程序員 瀏覽:202
u點伺服器wifi密碼如何設置 瀏覽:864
寶馬x5大燈編程 瀏覽:673
python安裝和使用 瀏覽:381
加密的門禁卡復制了用不了 瀏覽:714
javacsv讀寫 瀏覽:806
ug編程教程pdf 瀏覽:763
latex編譯軟體安卓版 瀏覽:248
如何在信合app上交居民醫保 瀏覽:109
丑惡pdf 瀏覽:365
陝西定頻壓縮機銷售公司 瀏覽:795
安卓系統如何幫人打王者 瀏覽:427