欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語言在linux下編程詳解

 更新時間:2021年08月25日 14:33:15   作者:CTirst  
這篇文章主要介紹了linux下基于C語言的編程,實(shí)例分析了基本使用技巧與相關(guān)概念,具有一定參考借鑒價值,需要的朋友可以參考下

文件操作

#include <sys/unistd.h>		//含有close函數(shù)
#include <fcntl.h>			//含有open函數(shù)
int main(){
    int fd=open("text.txt",O_RDONLY); 
    close(fd);
}
//O_RDONLY是一個宏,代表這個文件只讀,常用的就是這三個
#define O_RDONLY	     00		//只讀
#define O_WRONLY	     01		//只寫
#define O_RDWR		     02		//讀寫都可以

上述的代碼打開了一個文件,隨即又關(guān)上了。那個int類型的變量fd叫做文件描述符(file descriptor)。用一個數(shù)字代表一個對象,這是C語言常見的設(shè)計(jì)模式,OpenGL的實(shí)現(xiàn)也是類似。

它的底層一般是這樣的:真正操作的對象是一個復(fù)雜的結(jié)構(gòu)體,這些對象存放在一個數(shù)組中,而數(shù)字代表真實(shí)對象在數(shù)組中的索引值。

在open和 close之間,當(dāng)然要進(jìn)行一些讀寫操作,示例如下:

#include <sys/unistd.h>
#include <fcntl.h>
int main(){		
    int fd=open("test.txt",O_WRONLY);
    write(fd,"hello world",11);		 //向文件中寫入了hello world
    close(fd);
}

看到這,你可能覺得不屑一顧,這和<stdio.h>不是差不多嘛。別急啊兄弟,這個fd可不僅僅代表通常意義的文件,Linux的其中一個設(shè)計(jì)哲學(xué)是:一切皆文件。讓我們列舉一下這個fd能代表什么:

1.文本文件和二進(jìn)制文件(這兩叫普通文件)
2.目錄文件(可以理解為文件夾)
3.字符設(shè)備和塊設(shè)備(例如網(wǎng)卡和硬盤)
4.套接字(實(shí)現(xiàn)網(wǎng)絡(luò)通信的接口,讀寫它相當(dāng)于網(wǎng)絡(luò)通信)
5.符號鏈接(類似于windows桌面上的快捷方式)
6.管道(用于進(jìn)程通信)

上面這個表你可能記不住,但是我相信你體會到了它的強(qiáng)大。下面是一個向控制臺打印字符串的例子。

#include <sys/unistd.h>
#include <fcntl.h>
int main(){
    write(STDOUT_FILENO,"hello world",11);
}
//上面的STDOUT_FILENO是一個宏,表示標(biāo)準(zhǔn)輸出,它們的定義是這樣的:
#define	STDIN_FILENO	0	/* Standard input.  */
#define	STDOUT_FILENO	1	/* Standard output.  */
#define	STDERR_FILENO	2	/* Standard error output.  */

因?yàn)?,1,2都已經(jīng)被占用了,所以我們的fd是從3開始的,如果出錯(如文件不存在)則會返回一個負(fù)數(shù)。維護(hù)fd的數(shù)組在表示進(jìn)程的結(jié)構(gòu)體中,所以fd只在它所在的進(jìn)程有意義。不同的進(jìn)程可以有相同的fd

雖然統(tǒng)一的fd設(shè)計(jì)的非常好,但是它并不能讓我們看到文件的容量、修改日期等信息。所以還有其他函數(shù)供我們使用。

//需包含<sys/stat.h>頭文件,其詳細(xì)內(nèi)容如下所示
int stat (const char *file_name,struct stat *buf);
struct stat
{
    dev_t     st_dev;     /* ID of device containing file */文件使用的設(shè)備號
    ino_t     st_ino;     /* inode number */    索引節(jié)點(diǎn)號 
    mode_t    st_mode;    /* protection */  文件對應(yīng)的模式,文件,目錄等
    nlink_t   st_nlink;   /* number of hard links */    文件的硬連接數(shù)  
    uid_t     st_uid;     /* user ID of owner */    所有者用戶識別號
    gid_t     st_gid;     /* group ID of owner */   組識別號  
    dev_t     st_rdev;    /* device ID (if special file) */ 設(shè)備文件的設(shè)備號
    off_t     st_size;    /* total size, in bytes */ 以字節(jié)為單位的文件容量   
    blksize_t st_blksize; /* blocksize for file system I/O */ 包含該文件的磁盤塊的大小   
    blkcnt_t  st_blocks;  /* number of 512B blocks allocated */ 該文件所占的磁盤塊  
    time_t    st_atime;   /* time of last access */ 最后一次訪問該文件的時間   
    time_t    st_mtime;   /* time of last modification */ /最后一次修改該文件的時間   
    time_t    st_ctime;   /* time of last status change */ 最后一次改變該文件狀態(tài)的時間   
};

總結(jié)

本篇文章就到這里了,希望能給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • 排序算法模板實(shí)現(xiàn)示例分享

    排序算法模板實(shí)現(xiàn)示例分享

    這篇文章主要介紹了排序算法模板實(shí)現(xiàn)示例,需要的朋友可以參考下
    2014-03-03
  • QT+ffmpeg實(shí)現(xiàn)視頻解析的示例詳解

    QT+ffmpeg實(shí)現(xiàn)視頻解析的示例詳解

    這篇文章主要為大家詳細(xì)介紹了如何利用QT+ffmpeg實(shí)現(xiàn)視頻解析功能,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)Qt有一定幫助,需要的可以參考一下
    2022-09-09
  • 使用C++制作簡單的web服務(wù)器

    使用C++制作簡單的web服務(wù)器

    本文給大家分享的是使用C++簡單實(shí)現(xiàn)web服務(wù)器的代碼,雖然非常的簡陋,功能也很少,主要是為了更好的理解WEB服務(wù)器的工作原理,推薦給大家,也希望對大家能夠有所幫助。
    2015-03-03
  • c語言中&的用法示例代碼

    c語言中&的用法示例代碼

    這篇文章主要給大家介紹了關(guān)于c語言中&的用法的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • C/C++語言宏定義使用實(shí)例詳解

    C/C++語言宏定義使用實(shí)例詳解

    這篇文章主要介紹了 C/C++語言宏定義使用實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • C++ 標(biāo)準(zhǔn)模板類詳解

    C++ 標(biāo)準(zhǔn)模板類詳解

    今天小編就為大家分享一篇關(guān)于C++標(biāo)準(zhǔn)模板類的介紹與使用講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2021-09-09
  • C語言中字符串的兩種定義方式詳解

    C語言中字符串的兩種定義方式詳解

    這篇文章主要為大家詳細(xì)介紹了C語言中字符串的兩種定義方式,小編覺得這篇文章寫的還不錯,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • C++中4種管理數(shù)據(jù)內(nèi)存的方式總結(jié)

    C++中4種管理數(shù)據(jù)內(nèi)存的方式總結(jié)

    根據(jù)用于分配內(nèi)存的方法,C++中有3中管理數(shù)據(jù)內(nèi)存的方式:自動存儲、靜態(tài)存儲和動態(tài)存儲。在存在時間的長短方面,以這三種方式分配的數(shù)據(jù)對象各不相同。下面簡要介紹這三種類型
    2022-09-09
  • C語言中操作sqlserver數(shù)據(jù)庫案例教程

    C語言中操作sqlserver數(shù)據(jù)庫案例教程

    這篇文章主要介紹了C語言中操作sqlserver數(shù)據(jù)庫案例教程,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • QT中窗口關(guān)閉自動銷毀的實(shí)現(xiàn)示例

    QT中窗口關(guān)閉自動銷毀的實(shí)現(xiàn)示例

    這篇文章主要介紹了QT中窗口關(guān)閉自動銷毀,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05

最新評論