1. 程式人生 > >系統呼叫:write、open、read

系統呼叫:write、open、read

一、open

     簡單來說,open建立了一條到檔案或裝置的訪問路徑。如果呼叫成功,它則返回一個可以被read、write和其他系統呼叫使用的檔案描述符。這個檔案描述符是惟一的,它不會與其他任何執行中的程序共享,如果兩個程式同時開啟同一個檔案,他們會分別得到兩個不同的檔案描述符。如果他們都對檔案進行寫操作,那麼它們會各寫各的,它們分別接著上次離開的位置繼續往下寫。它們的資料不會交織在一起,而是彼此互相覆蓋。兩個程式對檔案的讀寫位置(偏移量)不同。可以通過使用檔案鎖功能來防止衝突。

       open系統呼叫執行成功是返回一個檔案描述符,呼叫失敗返回-1

   open系統呼叫的原型:

# include <fcntl.h>
# include <sys/types.h>
# include <sys/stat.h>

/*
path:要訪問的檔案路徑
oflags:訪問方式
mode:當訪問方式為O_CREAT時,通過mode來設定檔案許可權
*/
int open(const char *path, int oflags);
int open(const char *path, int oflags, mode_t mode);

示例:

# include <stdio.h>
# include <unistd.h>
# include <fcntl.h>
# include <stdlib.h>

int main()
{
    int fd = open("/home/FUJIA/cy1706/practice/text",O_RDONLY);
    if(fd != -1)
    {
        printf("open success");
        }
        else
        {
            printf("open error");
            }
    exit(0);
    }

二、write

      系統呼叫write的作用是把緩衝區buf的前nbytes個位元組寫入與檔案描述符fildes關聯的檔案中。它返回實際寫入的位元組數。如果檔案描述符有錯或者底層的裝置驅動程式對資料塊長度比較敏感,改返回值可能小於nbytes。如果返回值為0,則表示未寫入資料;如果返回值是-1,就表示在write呼叫過程中出現了錯誤。

    write系統呼叫的原型:

# include <unistd.h>

size_t write(int fildes, const void *buf, size_t nbytes);

示例:

# include <stdio.h>
# include <unistd.h>
# include <fcntl.h>


int main()
{
    int fd = open("/home/FUJIA/cy1706/practice/text",O_WRONLY);
    char buf[] = "hello";

    write(fd, buf, 5);
    close(fd);
    return 0;
    }

三、read

    系統呼叫read的作用是:從與檔案描述符fildes相關的檔案裡讀入nbytes個位元組資料,並把它們放在資料區buf中,它返回實際讀入的位元組數,這可能會小於請求的位元組數。如果read呼叫返回0,表示未讀入任何資料,如果返回-1,則調用出錯。

read系統呼叫原型:

# include <unistd.h>

size_t read(int fildes, void *buf, size_t nbytes);

示例:

# include <stdio.h>
# include <unistd.h>
# include <fcntl.h>


int main()
{
    int fd = open("/home/FUJIA/cy1706/practice/text",O_RDONLY);
    char buf[20] = {0};

    read(fd, buf, 6);
    printf("%s",buf);
    close(fd);
    return 0;
    }

相關推薦

系統呼叫writeopenread

一、open      簡單來說,open建立了一條到檔案或裝置的訪問路徑。如果呼叫成功,它則返回一個可以被read、write和其他系統呼叫使用的檔案描述符。這個檔案描述符是惟一的,它不會與其他任何執行中的程序共享,如果兩個程式同時開啟同一個檔案,他們會分別得到兩個不同的

圖書管理系統(一)出版社列表增加刪除和編輯

size middle mono NPU manage 準備工作 增加 mysql put 步驟一:前提準備 步驟二:創建出版社列表 步驟三:增加出版社 步驟四:刪除出版社 步驟五:編輯出版社 步驟一:前提準備 1.安裝django:

零基礎學python-2.17 文件open()file()

data 文本 tails 並且 處理 detail track 減少 == 今天我們來說說文件,以及跟文件有關的內建函數open和file 首先我們在python的根文件夾下建一個名為“123”的txt文本文件 文件中面我們輸入一些文本 我們把新建文

呼叫"系統呼叫函式write"的兩種實現

我們知道呼叫“系統呼叫”有兩種方式。 ( 1) 將系統呼叫指令封裝為 c庫函式,通過庫函式進行系統呼叫,操作簡單。 (2)不依賴任何庫函式,直接通過彙編指令 int與作業系統通訊。 我們平常寫的C語言用的就是第一種系統呼叫,通過函式呼叫write函式,我們下面用匯編語言來重寫一下,利用我

linux系統呼叫openwritecloseread以及stat函式詳解

學習筆記 參考連結1 、參考連結2以及百度百科 在進行C語言學習的時候我們瞭解到了C語言相關的一些IO操作,如fopen,fwrite,fread,fprintf,fclose等相關函式,他們都是由C庫函式提供的一些函式,是將作業系

系統呼叫——openwriteread和close

一、檔案描述符 每一個程序都有一個與之相關的檔案描述符,它們是一些小值整數,我們可以通過這些檔案描述符來訪問開啟的檔案。 一般地,一個程式開始執行時,會自動開啟3個檔案描述符: 0——–標準輸入———-stdin 1——–標準輸出———-stdout

四種讀寫檔案的方式系統呼叫open/read/write),C語言(fopen,fgets, fputs),C++(ifstream, ofstream getline,)泛型演算法

第一種方法是系統呼叫 (1)open系統呼叫    原型:        #include <sys/types.h>        #include <sys/stat.h>        #include <fcntl.h>     

Node.js中的fs.openfs.readfs.writefs.close方法;

    fs.open(path, flags[, mode], callback);     path:被開啟的檔案的名字;     flags:開啟檔案的方式;          "r"

基礎IO學習筆記(open系統呼叫inode檔案理解)

一.系統呼叫介面open、close、write、read 1.open 引數解析: pathname:要開啟或要建立的目標檔案 flags:下面的一個或多個常量進行"或"運算 O_RDONLY

openwriteread函式及應用

#include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include<stdio.h> #include<unistd.h> #include<stdli

關於document的三個方法openwriteclose

document.open會開啟一個新文件,清除已載入的文件;document.write在HTML載入後呼叫會導致open方法呼叫一次;document.close會關閉開啟的文件。 直接看程式碼和效果圖: <!DOCTYPE html> &l

檔案操作程式設計一(openclosereadwritelseek函式的使用)

一、open()函式用於開啟或建立檔案,在開啟或建立檔案時可以指定檔案的屬性及使用者的許可權等各種引數 所需標頭檔案:#include <sys/types.h> /* 提供型別pid_t 的定義 */ #include <sys/stat.h> #

open/read/write/close等檔案系統呼叫介面以及fd與FILE的比較

在Linux系統下,檔案是一個很重要的概念,接下來就介紹一下其相關的介面函式 一、熟悉open/read/write/close等檔案相關係統呼叫介面 1、open函式 註釋: (1)函式說明:用來開啟一個已經存在的檔案或者建立一個普通檔案 (

十五1檔案的相關操作開啟檔案的方法關閉檔案write()read()】檔案備份的流程小例子readlinesreadline

一、開啟方式 在python,使用open函式,可以開啟一個已經存在的檔案,或者建立一個新檔案。 open(檔名,訪問模式)         ——以只讀的方式開啟test.txt檔案 在面向物件oop語言中把【函式名()】這種形式我們叫做【方法】。 (1)文字檔

檔案 I/O操作openlseekreadwriteclose詳解

一,檔案描述符、套接字和管道        對於核心而言,所有開啟的開啟的檔案都通過檔案描述符引用。檔案描述符是一個非負整數。        核心為每個程序維護一個結構體struct task_struct,可稱為程序控制塊(PCB: Process Control Bloc

Linux的系統呼叫openwriteread,close,及相關總結

在進行C語言學習的時候我們瞭解到了C語言相關的一些IO操作,如fopen,fwrite,fread,fprintf,fclose等相關函式,他們都是由C庫函式提供的一些函式,是將作業系統的系統呼叫加以封裝,雖說Linux是由C語言實現的,但為了使我們更加的瞭解Linux,就需

Linux 7個運行級別(0關機,停機模式1單用戶模式2多用戶模式3完整的多用戶文本模式4系統未使用,保留一般不用5圖形化模式6重啟模式)重置root密碼方法

oca alt 開機重啟 正常 說明 特殊情況 其中 ice root權限 init是Linux系統操作中不可缺少的程序之一。init進程,它是一個由內核啟動的用戶級進程。內核會在過去曾使用過init的幾個地方查找它,它的正確位置(對Linux系統來說)是/

openread操作文件

文件描述符 argv buffer erro 打印 模式 操作 失敗 div #include <stdio.h> #include <string.h> #include <stdlib.h> #include <fcntl.h

聊聊系統設計有狀態無狀態

公司 bre 就會 信息 時代 www. quest tolerance 呵呵 網站登錄校驗,很普通的一個功能 對於這個功能我們要如何實現? 先分析一下登錄校驗是個啥意思 舉個栗子,比如我們在登陸頁輸入用戶名密碼,登錄了社交網站 這時候想去看自己的新鮮事,卻告訴我請先輸入用

閱讀《大型網站技術架構核心原理與案例分析》第五七章,結合《河北省重大技術需求征集系統》,列舉實例分析采用的可用性和可修改性戰術

定時 並不會 表現 做出 span class 硬件 進行 情況   網站的可用性描述網站可有效訪問的特性,網站的頁面能完整呈現在用戶面前,需要經過很多個環節,任何一個環節出了問題,都可能導致網站頁面不可訪問。可用性指標是網站架構設計的重要指標,對外是服務承諾,對內是考核指