系統程式期中考(筆試部分)
計分方式:每題七分,最後一題二分。
1. 使用gcc編譯時有多個選項可以選擇,例如:gcc xxx.c -o exec就是將xxx.c(內含main function)編譯以
後產生的執行檔檔名為exec。請列出至少四種編譯選項,及這些選項的含義。
2. 使用gdb除錯的時候,有多個除錯選項可以選用,例如b main表示將一個中斷點設定在main函數的地方。
請列出至少四種除錯指令,並說明含義。
3. 請問在一般的GNU/Linux中/proc這個目錄是否存在於磁碟上?/proc目錄中以數字命名的資料夾代表什麼
意思?
4. 請問要追蹤一個程式的系統呼叫及函數庫呼叫各可用什麼系統程式?(hint: ?trace)
5. 請寫一小段程式碼:建立一個新檔案名為「file」,並在檔案的開頭位置留下4MB的「洞」,在「洞」之
後寫入「hello」。(hint:open(“./file”, O_WRONLY | O_CREAT, S_IRUSR| S_IWUSR))
6. 在 GNU/Linux 上 lseek(int fd, off_t offset, int whence)中的 whence 共有五種選項,其中三
種分別為,SEEK_SET:絕對位置,SEEK_CUR:從現在位置起算,SEEK_END:從結束位置起算。請
列出另外二種及其意義。
7. int flock(int fd, int operation);中 operation 可以使用三種參數,其中二種是 LOCK_SH(分享
鎖)和 LOCK_EX(互斥鎖),請解釋 LOCK_SH 和 LOCK_EX 的不同。
8. 請解釋 fsync(int fd)和 fdatasync(int fd)的不同
9. int setvbuf(FILE *stream, char *buf, int mode, size_t size);中 mode 有三個選項
评论0