国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

Linux系統(tǒng)編程學(xué)習(xí)01

2019-11-14 12:27:34
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

1.GCC使用

gcc -E hello.c -o hello.i gcc -c hello.i -o hello.o gcc -

2.GDB使用

常用命令:

1. list(l) 顯示附近代碼 2. next(n) 執(zhí)行下一條命令 3. PRint(p) 打印變量或語(yǔ)句 4. backtrace(bt) 顯示函數(shù)棧 5. finish 退出函數(shù) 6. break 添加斷點(diǎn) 7. info break 查看斷點(diǎn)信息 8. enable break-num 使斷點(diǎn)可用 9. enable 使所有斷點(diǎn)可用 10. delete 刪除所有斷點(diǎn) 10. delete break-num 刪除一個(gè)斷點(diǎn) 11. enable delete num 使該斷點(diǎn)在命中一次后刪除 12. enable count hit-times break-num 使該斷點(diǎn)在命中hit-times次后刪除 13. local 打印當(dāng)前函數(shù)的局部變量

3.MakeFile

概念:將編譯和鏈接要執(zhí)行的命令按照一定的順序?qū)戇M(jìn)一個(gè)文件里 執(zhí)行make的時(shí)候會(huì)以最終生成的目標(biāo)文件為根節(jié)點(diǎn)遍歷執(zhí)行所有的編譯命令

4.文件IO

1.基本API

1. `int open(const str * filepath, int oflag, [...,mode_t mode])` (sys/types.h sys/stat.h fcntl.h) filepath--文件路徑 oflag--打開方式 O_WRONLY 只寫方式 O_RDWR 讀寫方式 O_APPEND 追加方式 O_CREAT 不存在就創(chuàng)建,需要添加第三個(gè)參數(shù),指明訪問(wèn)權(quán)限 O_EXCL 如果同時(shí)指定O_CREATE ,則文件存在時(shí)報(bào)錯(cuò),可用于測(cè)試文件是否存在 mode--訪問(wèn)權(quán)限2.`ssize_t read(int fd, void *buf, size_t count)`(unistd.h) fd--需要讀取的文件的文件描述符 buf--得到的數(shù)據(jù)存儲(chǔ)的位置 count--讀取的大小 返回讀取的數(shù)據(jù)的大小,出錯(cuò)返回-13.`write(int fd, const void * buf, size_t count)`(unistd.h) fd--需要寫入的穩(wěn)健 buf--需要寫入的數(shù)據(jù) count--寫入的數(shù)據(jù)的大小 返回寫入的數(shù)據(jù)的大小,出錯(cuò)返回-14.`close(int fd)`(unistd.h)5.`lseek(int fd, int offset, int whence)`(sys/types.h unistd.h) fd--操作的文件 offset--偏移量 whence--相對(duì)哪個(gè)位置的偏移量 SEEK_SET SEEK_CUR SEEK_END6.`int select(int maxfd, fdset *read_set, fdset *write_set, fdset *excep_set, struct timeval *timeout)`(sys/select.h) 失敗返回-1,成功返回所有有變化的描述符的個(gè)數(shù),超時(shí)返回0 maxfd--檢測(cè)個(gè)數(shù) read_set--輸入描述符個(gè)數(shù) write_set--輸出描述符個(gè)數(shù) excep_set--異常描述符個(gè)數(shù) timeout--超時(shí)時(shí)間,NULL表示無(wú)限長(zhǎng)直到檢測(cè)到消息 **配套函數(shù)(調(diào)用之前所有監(jiān)控的描述符都要置1,返回時(shí)就緒的會(huì)被置1,否則清0)** FD_SET(fd, fdset *) 置1 FD_ISSET(fd, fd_set *) 是否置1 FD_ZERO(fdset *) 清0 FD_CLR(fd, fdset *) 置07.`int stat(const char * filepath, struct stat * buf);`(sys/types.h sys/stat.h unistd.h)成功返回0,失敗返回-1 struct stat { dev_t st_dev; ino_t st_ino;//節(jié)點(diǎn)號(hào) mode_t st_mode;//文件類型 nlink_t st_nlink;//硬鏈接數(shù)([linux的硬鏈接和軟鏈接](http://www.survivalescaperooms.com/itech/archive/2009/04/10/1433052.html)) uid_t st_uid;//屬主用戶 gid_t st_gid;//所屬組 dev_t st_rdev; off_t st_size;//大小 blksize_t st_blksize; blkcnt_t st_blocks; time_t st_atime;//最后訪問(wèn)時(shí)間 time_t st_mtime;//最后修改的時(shí)間 time_t st_ctime;//創(chuàng)建時(shí)間 }8. `struct dirent* readdir(DIR * dir)`成功返回dirent結(jié)構(gòu)體,失敗返回NULL struct dirent { ino_t d_ino; off_t d_off; unsigned short d_reclen; unsigned char d_type; char d_name[256]; };9. `int closedir(DIR * dir)`成功返回0, 失敗返回 -1

5. 多進(jìn)程編程

1、Linux進(jìn)程狀態(tài) R S D T Z X2、Linux下C進(jìn)程內(nèi)存布局 text initialized data malloc stack3、`int exec(const char * pathname, const char * arg0...)`exec:傳入一個(gè)參數(shù),用新的程序來(lái)替代原來(lái)子進(jìn)程中的正文、數(shù)據(jù)、堆和棧,失敗返回-1,成功永不返回4、fork:調(diào)用一次返回兩次,子進(jìn)程返回0,父進(jìn)程返回子進(jìn)程的進(jìn)程id,失敗返回-1,子進(jìn)程會(huì)復(fù)制父進(jìn)程的正文、數(shù)據(jù)、堆、棧。5、多進(jìn)程的調(diào)試: 1. 在子進(jìn)程開始的地方加上sleep(20) 2. 查看子進(jìn)程的pid,使用gdb pid再開一個(gè)調(diào)試程序 3. 用break添加斷點(diǎn) 4. 用continue繼續(xù) 5. 等待睡眠結(jié)束6、Exit Handler 處理進(jìn)程退出后的事宜,注冊(cè)方式有兩種 atexit(void (*func) (void)) on_exit(void (*func)(int, void*))
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 昌黎县| 施甸县| 海丰县| 阿荣旗| 襄城县| 莒南县| 卫辉市| 大足县| 日照市| 会昌县| 洛隆县| 奉化市| 勐海县| 大兴区| 嘉荫县| 桂东县| 平昌县| 教育| 彰化县| 安平县| 青川县| 四川省| 泗阳县| 西丰县| 杭州市| 金沙县| 双城市| 施秉县| 图木舒克市| 郑州市| 巴楚县| 大足县| 防城港市| 通道| 嘉荫县| 虎林市| 遂昌县| 保定市| 吉林省| 科尔| 建德市|