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

歡迎訪問 生活随笔!

生活随笔

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

linux

Linux编程手册读书笔记第四章(20140407)

發布時間:2023/11/30 linux 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux编程手册读书笔记第四章(20140407) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  • 標準文件描述符定義在<unistd.h>中,STDIN_FILENO,? STDOUT_FILENO,? STDERR_FILENO
  • 打開一個文件:open()
  • ? ? ? include<sys/stat.h>

    ? ? ? #include<fcntl.h>

    ? ? ? int open(const char *pathname, int flags, …/* mode_t mode*/);

    ? ? ? 1)調用發生錯誤,open返回-1,并將errno設置為相應的錯誤標志。

    ? ? ? 2flags為位掩碼,用于指定文件的訪問模式,O_CREATE O_RDONLY, O_WRONLY,? O_RDWRO_APPEND; ? 注:因是位掩碼,O_RDWR不等同于O_RDONLYO_WRONLY

    ? ? ? 3mode為位掩碼,用于指定文件的訪問權限。如果open? flags參數并沒有指定O_CREATE標志,則可以省略mode參數。

  • O_EXCL,此標志與O_CREATE標志結合使用表明如果文件已經存在,則不會打開文件,且open()調用失敗,返回錯誤,errnoEEXIST。換言之,此標志確保了調用者(open()的調用進程)就是創建文件的進程。
  • 讀取文件內容:read()
  • ? ? ? include<unistd.h>

    ? ? ? ssize_t read(int fd, void * buffer, size_t count);

    ? ? ? 1)如果read()調用成功,將返回實際讀取的字節數,如遇到文件結束(EOF)則返回0

    ? ? ? 2)從終端讀取字符,一遇到換行符(\n),read()調用就會結束。

  • 數據寫入文件:write()
  • ? ? ? include<unistd.h>

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

    ? ? ? write()調用成功,將返回實際寫入文件的字節數

  • 關閉文件:close()
  • ? ? ? include<unistd.h>

    ? ? ? int close(int fd);

    ?? ? close()可能執行失敗:企圖關閉一個未打開的文件描述符;或者兩次關閉同一個文件描述符。

  • size_t: 無符號整數類型;? ? ? ? ? ssize_t:有符號的整數類型;?
  • 改變文件偏移量:lseek()
  • ? ? ? #include<unistd.h>

    ? ? ? off_t lseek(int fd, off_t offset, int whence);

    ?? ? 1)文件第一個字節的偏移量為0

    ?? ? 2offset:指定一個以字節為單位的數值, off_t:有符號整形數

    ?? ? 3whence:表明應參照哪個基點來解釋offset參數。

    ? ? ? ? ? ? SEEK_SET: 將文件偏移量設置為從文件頭部起始點開始的offset個字節

    ? ? ? ? ? ? SEEK_CUR: 相對于當前文件偏移量,將文件偏移量調整offset個字節

    ? ? ? ? ? ? SEEK_END: 將文件偏移量設置為起始于文件尾部的offset個字節,也就是說,offset參數應該從文件最后一個字節之后的下一個字節算起

    ?? ? 4lseek()調用成功會返回新的文件偏移量。

    ?? ? 5lseek()并不適用于所有類型的文件。不允許將lseek()應用于管道、FIFOsocket或者終端,一旦如此,errno返回ESPIPE

  • 通用I/O模型以外的操作:ioctl()
  • ? ? ? #include<sys/ioctl.h>

    ? ? ? int ioctl(int fd, int request, …/*argp*/);

    ? ? ? (1) request: 指定了將在fd上執行的控制操作。具體設備的頭文件定義了可傳遞給request參數的常量。

    ? ? 2ioctl根據request的參數值來確定argp所期望的類型。通常情況下,argp是指向整數或結構的指針。有些情況,不需要使用argp

    ? ? 3ioctl5350上用于對于芯片的管腳進行I/O設置。常規使用場景是open-->ioctl-->close


    總結

    以上是生活随笔為你收集整理的Linux编程手册读书笔记第四章(20140407)的全部內容,希望文章能夠幫你解決所遇到的問題。

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