版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、linux的c編程技巧1. 獲取文件的信息:stat(char* filename, struct stat* buf);struct stat dev_t st_dev; /* 設(shè)備 */ino_t st_ino; /* 節(jié)點(diǎn) */mode_t st_mode; /* 模式 */nlink_t st_nlink; /* 硬連接 */uid_t st_uid; /* 用戶id */gid_t st_gid; /* 組id */dev_t st_rdev; /* 設(shè)備類型 */off_t st_off; /* 文件字節(jié)數(shù) */unsigned long st_blksize; /* 塊大小 */
2、unsigned long st_blocks; /* 塊數(shù) */time_t st_atime; /* 最后一次訪問時(shí)間 */time_t st_mtime; /* 最后一次修改時(shí)間 */time_t st_ctime; /* 最后一次改變時(shí)間(指屬性) */;struct statfslong f_type; /* 文件系統(tǒng)類型 */long f_bsize; /* 塊大小*/long f_blocks; /* 塊多少*/long f_bfree; /* 空閑的塊()*/long f_bavail; /* 可用塊 */long f_files; /* 總文件節(jié)點(diǎn) */long f_ffre
3、e; /* 空閑文件節(jié)點(diǎn) */fsid_t f_fsid; /* 文件系統(tǒng)id */long f_namelen; /* 文件名的最大長(zhǎng)度 */long f_spare6; /* spare for later */;2. 獲取文件訪問權(quán)限或者判斷文件是否存在:int access(char* filename, int mode);3. 獲取當(dāng)前時(shí)間:time_t t;char* asctime(localtime(&t);或者time(&t);char* ctime(&t);得到的字符串形式為:wed mar 12 10:07:53 20034. 計(jì)算兩個(gè)時(shí)刻之間的時(shí)間差double di
4、fftime(time_t time2, time_t time1);5. 刪除某文件:int unlink(char* pathname);int remove(char* pathname);6. 刪除某目錄:int rmdir(const char* pathname);7. 獲得當(dāng)前所在目錄名:char * getcwd(char *buf,size_t size); buf將會(huì)返回目前路徑名稱。8. 獲取目錄信息:dir * opendir(const char * pathname);int closedir(dir *dir);struct dirent * readdir(di
5、r *dir);struct direntlong d_ino; /* inode number */off_t d_off; /* offset to this dirent */unsigned short d_reclen; /* length of this d_name */char d_name name_max+1; /* file name (null-terminated) */;array. strerror(errno);函數(shù)會(huì)返回一個(gè)指定的錯(cuò)誤號(hào)的錯(cuò)誤信息的字符串.10.得到當(dāng)前路徑下面所有的文件(包含目錄)的個(gè)數(shù)struct dirent *namelist;int
6、num = scandir(.,&namelist,0,alphasort)11./etc/ld.so.conf:包含共享庫的搜索位置查看執(zhí)行文件調(diào)用了哪些共享庫shellldd a.out共享庫管理工具,一般在更新了共享庫之后要運(yùn)行該命令shellldconfig12.查看文件執(zhí)行的速度shelltime ./a.out13.改變文件訪問權(quán)限int chmod(const char* path, mode_t mode);14.改變文件大小int chsize(int handle, long size);15.把一個(gè)浮點(diǎn)數(shù)轉(zhuǎn)換為字符串char ecvt(double value, int
7、ndigit, int *decpt, int *sign);16.檢測(cè)文件結(jié)束int eof(int *handle);17.檢測(cè)流上的文件結(jié)束符int feof(file *stream);18.檢測(cè)流上的錯(cuò)誤int ferror(file *stream);1array.裝入并運(yùn)行其它程序的函數(shù)int execl(char *pathname, char *arg0, arg1, ., argn, null);int execle(char *pathname, char *arg0, arg1, ., argn, null,char *envp);int execlp(char *pa
8、thname, char *arg0, arg1, ., null);int execple(char *pathname, char *arg0, arg1, ., null,char *envp);int execv(char *pathname, char *argv);int execve(char *pathname, char *argv, char *envp);int execvp(char *pathname, char *argv);int execvpe(char *pathname, char *argv, char *envp);20.指數(shù)函數(shù)double exp(d
9、ouble x);21. struct sockaddrunsigned short sa_family; /* address family, af_xxx */char sa_data14; /* 14 bytes of protocol address */;struct sockaddr_inshort int sin_family; /* address family */unsigned short int sin_port; /* port number */struct in_addr sin_addr; /* internet address */unsigned char
10、sin_zero8; /* same size as struct sockaddr */;struct in_addrunsigned long s_addr;s_addr按照網(wǎng)絡(luò)字節(jié)順序存儲(chǔ)ip地址sin_zero是為了讓sockaddr與sockaddr_in兩個(gè)數(shù)據(jù)結(jié)構(gòu)保持大小相同而保留的空字節(jié)。使用的例子:struct sockaddr_in sa;sa.sin_family = af_inet;sa.sin_port = htons(34array0);sa.sin_addr.s_addr = inet_addr(132.241.5.10);bzero(&(sa.sin_zero)
11、, 8);注意:如果sa.sin_addr.s_addr inaddr_any,則不指定ip地址(用于server程序)22. #define unix_path_max 108struct sockaddr_unsa_family_t sun_family; /* af_unix */char sun_pathunix_path_max; /* 路徑名 */;23. ip地址轉(zhuǎn)換函數(shù):unsigned long inet_addr (const char *cp);inet_addr將一個(gè)點(diǎn)分十進(jìn)制ip地址字符串轉(zhuǎn)換成32位數(shù)字表示的ip地址(網(wǎng)絡(luò)字節(jié)順序)char* inet_ntoa (
12、struct in_addr in);inet_ntoa將一個(gè)32位數(shù)字表示的ip地址轉(zhuǎn)換成點(diǎn)分十進(jìn)制ip地址字符串。這兩個(gè)函數(shù)互為反函數(shù)字節(jié)順序轉(zhuǎn)換:htons()-host to network shorthtonl()-host to network longntohs()-network to host shortntohl()-network to host long24. 獲取當(dāng)前機(jī)器的cpu、內(nèi)存使用情況getrusage25. open的使用中常用的flag和mode參數(shù)int file_flag = o_wronly|o_append|o_creat; int file_mo
13、de = s_irusr|s_iwusr|s_irgrp|s_iroth; 26. makefile中常用的符號(hào):預(yù)定義變量 含義$* 不包含擴(kuò)展名的目標(biāo)文件名稱。$ 目標(biāo)的完整名稱$% 如果目標(biāo)是歸檔成員,則該變量表示目標(biāo)的歸檔成員名稱。例如,如果目標(biāo)名稱為 mytarget.so(image.o),則 $ 為 mytarget.so,而 $% 為 image.o。$+ 所有的依賴文件,以空格分開,并以出現(xiàn)的先后為序,可能包含重復(fù)的依賴文件。$ 第一個(gè)依賴文件的名稱。$? 所有的依賴文件,以空格分開,這些依賴文件的修改日期比目標(biāo)的創(chuàng)建日期晚$ 所有的依賴文件,以空格分開,不包含重復(fù)的依賴文件
14、。ar 歸檔維護(hù)程序的名稱,默認(rèn)值為 ar。arflags 歸檔維護(hù)程序的選項(xiàng)。as 匯編程序的名稱,默認(rèn)值為 as。asflags 匯編程序的選項(xiàng)。cc c 編譯器的名稱,默認(rèn)值為 cc。ccflags c 編譯器的選項(xiàng)。cpp c 預(yù)編譯器的名稱,默認(rèn)值為 $(cc) -e。cppflags c 預(yù)編譯的選項(xiàng)。cxx c+ 編譯器的名稱,默認(rèn)值為 g+。cxxflags c+ 編譯器的選項(xiàng)。fc fortran 編譯器的名稱,默認(rèn)值為 f77。fflags fortran 編譯器的選項(xiàng)。用變量object表示所有的.o文件:objects := $(wildcard *.o)make -n
15、或者-just-print表示只是顯示命令,但不會(huì)執(zhí)行命令make -s或者-slient表示全面禁止命令的顯示make -i或者-ignore-errors表示makefile中所有命令都會(huì)忽略錯(cuò)誤make -k或者-keep-going表示如果某規(guī)則中的命令出錯(cuò)了,那么就終止該規(guī)則的執(zhí)行,但繼續(xù)執(zhí)行其它規(guī)則在makefile中直接利用shell獲取變量plat使用make中的一種用變量來定義變量的方法。這種方法使用的是“:=”操作符plat := $(shell uname -a)我們要定義一個(gè)變量,其值是一個(gè)空格,那么我們可以這樣來:nullstring :=space := $(nullstring) # end of the linefoo ?= bar含義是:如果foo沒有被定義過,那么變量foo的值就是“bar”,如果foo先前被定義過,那么這條語將什么也不做,其等價(jià)于:ifeq ($(origin foo), undefined)foo = barendiffoo := a.o b.o c.obar := $(foo:.o=.c)我們先定義了一個(gè)“$(foo)”變量,而第二行的意思是把“$(foo)”中所有以“.o”字串“結(jié)尾”全部替換成“.c”,所以我們的“$(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 購(gòu)銷合同的范本(2篇)
- 股東項(xiàng)目風(fēng)險(xiǎn)劃分合同(2篇)
- 南京工業(yè)大學(xué)浦江學(xué)院《稅法二》2023-2024學(xué)年第一學(xué)期期末試卷
- ××機(jī)械有限責(zé)任公司高效礦井重型刮板輸送機(jī)成套設(shè)備安全驗(yàn)收?qǐng)?bào)告(機(jī)械)
- 芳香烴說課稿
- 渭塘劉玨路組織設(shè)計(jì)
- 《中 國(guó)石拱橋》第課時(shí)說課稿
- 《乙醇》的說課稿
- 南京工業(yè)大學(xué)浦江學(xué)院《公共事業(yè)管理概論》2023-2024學(xué)年第一學(xué)期期末試卷
- 簡(jiǎn)單兩人散伙協(xié)議書(2篇)
- 《競(jìng)爭(zhēng)法學(xué)》課程教學(xué)大綱
- 疼痛的評(píng)估方法課件
- 修剪指甲培智五年級(jí)上冊(cè)生活適應(yīng)教案
- 煙花爆竹安全管理?xiàng)l例課件
- 一些液體的導(dǎo)熱系數(shù)
- 高毒力肺炎克雷伯菌感染
- 篆刻學(xué)ppt精品課件
- 茶多酚的保健功能及在食品中的應(yīng)用
- 小學(xué)科學(xué)實(shí)驗(yàn)說課探究斜面的作用市公開課金獎(jiǎng)市賽課一等獎(jiǎng)?wù)n件
- 中職教師技能大賽 建筑CAD 試題
- 寫作指導(dǎo)高考語文作文點(diǎn)津商業(yè)廣告副本市公開課獲獎(jiǎng)?wù)n件
評(píng)論
0/150
提交評(píng)論