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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

系统级程序设计第一课内容——Linux系统与操作 2022.5.2

發(fā)布時間:2024/3/13 linux 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 系统级程序设计第一课内容——Linux系统与操作 2022.5.2 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

系統(tǒng)級程序設(shè)計第一課內(nèi)容——Linux系統(tǒng)與操作


文章目錄

  • 系統(tǒng)級程序設(shè)計第一課內(nèi)容——Linux系統(tǒng)與操作
  • 一、Linux文件系統(tǒng)與操作
  • 二、文件操作
    • 1.主要函數(shù)
    • 2.open()
    • 3.read()
    • 4.write()
    • 5.lseek()
    • 6.close()
  • 完整操作代碼
  • 課堂總結(jié)


`提示:該文章主要參考老師課程所用內(nèi)容

一、Linux文件系統(tǒng)與操作

文件是由創(chuàng)建者定義的,具有文件名的一組相關(guān)元素的集合,文件可以是文本文檔、圖片、程序等。Linux上的文件操作,更接近于底層的文件操作。系統(tǒng)級程序設(shè)計也是內(nèi)核級程序設(shè)計。

二、文件操作

1.主要函數(shù)

open() read() write() lseek() close()

2.open()

int open(const char *pathname, int flags[, mode_t mode);

常見的訪問模式

– O_RDONLY:只讀
– O_WRONLY: 只寫
– O_RDWR: 讀寫
– O_CREAT: 創(chuàng)建一個文件并打開
– O_EXCL: 測試文件是否存在,不存在則創(chuàng)建
– O_TRUNC: 以只寫或讀寫方式成功打開文件時,將文件長度截斷為0
– O_APPEND: 以追加方式打開文件

只有第二個參數(shù)flags = O_CREAT,第三個參數(shù)才會被用于設(shè)置新文件的權(quán)限,取值如下:

S_IRWXU: 文件所有者,讀、寫、執(zhí)行
S_IRUSR: 文件所有者,讀
S_IWUSR: 文件所有者,寫
S_IXUSR: 文件所有者,執(zhí)行
S_IRWXG: 文件所屬組,讀、寫、執(zhí)行
S_IRGRP: 文件所屬組,讀
S_IWGRP: 文件所屬組,寫
S_IXGRP: 文件所屬組,執(zhí)行
S_IRWXO: 其他人,讀、寫、執(zhí)行
S_IROTH: 其他人,讀
S_IWOTH: 其他人,寫
S_IXOTH: 其他人,執(zhí)行


3.read()

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

參數(shù)說明:

fd: 從open或create函數(shù)返回的文件描述符
buf: 緩沖區(qū)
count: 讀取數(shù)據(jù)的字節(jié)數(shù)

返回值說明:

ssize_t: 有符號的size_t,有三種返回值
– 正數(shù):請求讀取的字節(jié)數(shù)
– 0: 文件長度有限,若讀寫位置距文件末尾只有20字節(jié),該函數(shù)請求讀取30字節(jié),則第一次讀取時返回值為20,第二次讀取時,返回0
– -1: 讀取文件出錯


4.write()

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

參數(shù)說明:

參數(shù)使用基本與read函數(shù)相同

返回值說明:

返回寫入的字節(jié)數(shù)或者-1并設(shè)置errno


5.lseek()

ssize_t write(int fd, off_t offset, int whence);

參數(shù)說明:

fd: 從open或create函數(shù)返回的文件描述符
offset: 對文件偏移量的設(shè)置,參數(shù)可正可負
whence: 控制設(shè)置當(dāng)前文件偏移量的方法
– whence = SEEK_SET: 文件偏移量被設(shè)置為offset
– whence = SEEK_CUR: 文件偏移量被設(shè)置為當(dāng)前偏移量+offset
– whence = SEEK_END: 文件偏移量被設(shè)置為文件長度+offset

返回值說明:

設(shè)置成功:返回新的偏移量
不成功:-1


6.close()

int close(int fd);

返回值說明:

設(shè)置成功:返回0
不成功:-1


完整操作代碼

提示:對以上函數(shù)進行整合操作

主要內(nèi)容為打開文件寫入數(shù)據(jù)后關(guān)閉,重新打開后讀取剛剛寫入的文件。

#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <fcntl.h> #include <string.h> int main(){int tempFd = 0;char tempFileName[20] = "test.txt";//Step 1. open the file.tempFd = open(tempFileName, O_RDWR|O_EXCL|O_TRUNC, S_IRWXG);if(tempFd == -1){perror("file open error.\n");exit(-1);}//of if//Step 2. write the data.int tempLen = 0;char tempBuf[100] = {0};scanf("%s", tempBuf);tempLen = strlen(tempBuf);write(tempFd, tempBuf, tempLen);close(tempFd);//Step 3. read the filetempFd = open(tempFileName, O_RDONLY);if(tempFd == -1){perror("file open error.\n");exit(-1);}//of ifoff_t tempFileSize = 0;tempFileSize = lseek(tempFd, 0, SEEK_END);lseek(tempFd, 0, SEEK_SET);while(lseek(tempFd, 0, SEEK_CUT)!= tempFileSize){read(tempFd, tempBuf, 1024);printf("%s\n", tempBuf);}//of whileclose(tempFd);return 0; }//of main

課堂總結(jié)

本次課主要對Linux文件系統(tǒng)的基本操作進行了總結(jié),第一次接觸內(nèi)核級編程,雖然使用較熟悉的語言,但內(nèi)核級編程還是有些難度,同時本課程要求對Linux操作系統(tǒng)的的基本操作非常熟練,還是要多加聯(lián)系,來提高對Linux 系統(tǒng)操作的熟練度。

參考文章:https://blog.csdn.net/search_129_hr/article/details/124454969

總結(jié)

以上是生活随笔為你收集整理的系统级程序设计第一课内容——Linux系统与操作 2022.5.2的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。