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

首頁 > 學院 > 開發設計 > 正文

Linux系統編程學習01

2019-11-14 13:06:29
字體:
來源:轉載
供稿:網友

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) 執行下一條命令 3. PRint(p) 打印變量或語句 4. backtrace(bt) 顯示函數棧 5. finish 退出函數 6. break 添加斷點 7. info break 查看斷點信息 8. enable break-num 使斷點可用 9. enable 使所有斷點可用 10. delete 刪除所有斷點 10. delete break-num 刪除一個斷點 11. enable delete num 使該斷點在命中一次后刪除 12. enable count hit-times break-num 使該斷點在命中hit-times次后刪除 13. local 打印當前函數的局部變量

3.MakeFile

概念:將編譯和鏈接要執行的命令按照一定的順序寫進一個文件里 執行make的時候會以最終生成的目標文件為根節點遍歷執行所有的編譯命令

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 不存在就創建,需要添加第三個參數,指明訪問權限 O_EXCL 如果同時指定O_CREATE ,則文件存在時報錯,可用于測試文件是否存在 mode--訪問權限2.`ssize_t read(int fd, void *buf, size_t count)`(unistd.h) fd--需要讀取的文件的文件描述符 buf--得到的數據存儲的位置 count--讀取的大小 返回讀取的數據的大小,出錯返回-13.`write(int fd, const void * buf, size_t count)`(unistd.h) fd--需要寫入的穩健 buf--需要寫入的數據 count--寫入的數據的大小 返回寫入的數據的大小,出錯返回-14.`close(int fd)`(unistd.h)5.`lseek(int fd, int offset, int whence)`(sys/types.h unistd.h) fd--操作的文件 offset--偏移量 whence--相對哪個位置的偏移量 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,成功返回所有有變化的描述符的個數,超時返回0 maxfd--檢測個數 read_set--輸入描述符個數 write_set--輸出描述符個數 excep_set--異常描述符個數 timeout--超時時間,NULL表示無限長直到檢測到消息 **配套函數(調用之前所有監控的描述符都要置1,返回時就緒的會被置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;//節點號 mode_t st_mode;//文件類型 nlink_t st_nlink;//硬鏈接數([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;//最后訪問時間 time_t st_mtime;//最后修改的時間 time_t st_ctime;//創建時間 }8. `struct dirent* readdir(DIR * dir)`成功返回dirent結構體,失敗返回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. 多進程編程

1、Linux進程狀態 R S D T Z X2、Linux下C進程內存布局 text initialized data malloc stack3、`int exec(const char * pathname, const char * arg0...)`exec:傳入一個參數,用新的程序來替代原來子進程中的正文、數據、堆和棧,失敗返回-1,成功永不返回4、fork:調用一次返回兩次,子進程返回0,父進程返回子進程的進程id,失敗返回-1,子進程會復制父進程的正文、數據、堆、棧。5、多進程的調試: 1. 在子進程開始的地方加上sleep(20) 2. 查看子進程的pid,使用gdb pid再開一個調試程序 3. 用break添加斷點 4. 用continue繼續 5. 等待睡眠結束6、Exit Handler 處理進程退出后的事宜,注冊方式有兩種 atexit(void (*func) (void)) on_exit(void (*func)(int, void*))
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 正阳县| 九寨沟县| 宜丰县| 公主岭市| 东阳市| 漯河市| 禄丰县| 连山| 聂拉木县| 林西县| 沽源县| 九江市| 丹江口市| 遂昌县| 元江| 阿鲁科尔沁旗| 绥中县| 乌恰县| 买车| 加查县| 闽侯县| 鸡西市| 丰台区| 阿鲁科尔沁旗| 玉山县| 延川县| 武安市| 会同县| 南平市| 麻江县| 柯坪县| 乌恰县| 阿拉尔市| 延寿县| 崇州市| 柘城县| 额济纳旗| 高青县| 高青县| 苏州市| 秦皇岛市|