Beyond the Void
BYVoid
Linux下C程序啓動時的系統調用
本文正體字版由OpenCC轉換

寫程序跟蹤發現,在Linux i386中,一個程序體完全爲空的C語言程序啓動時要進行近100個系統調用,如下所示。 [ 1]syscall: 11 //execve [ 2]syscall: 45 //brk 改變進程的數據段邊界 [ 3]syscall: 45 //brk [ 4]syscall: 33 //access 確定文件的可存取性 [ 5]syscall: 33 //access [ 6]syscall: 192 //mmap2 映射虛擬內存頁 [ 7]syscall: 192 //mmap2 [ 8]syscall: 33 //access //access [ 9]syscall: 33 //access //access [10]syscall: 5 //open 打開文件 [11]syscall: 5 //open [12]syscall: 197 //fstat64 取文件系統信息 [13]syscall: 197 //fstat64 [14]syscall: 192 //mmap2 [15]syscall: 192 //mmap2 [16]syscall: 6 //close 關閉文件描述字 [17]syscall: 6 //close [18]syscall: 33 //access [19]syscall: 33 //access [20]syscall: 5 //open [21]syscall: 5 //open [22]syscall: 3 //read 讀文件 [23]syscall: 3 //read [24]syscall: 197 //fstat64 [25]syscall: 197 //fstat64 [26]syscall: 192 //mmap2 [27]syscall: 192 //mmap2 [28]syscall: 192 //mmap2 [29]syscall: 192 //mmap2 [30]syscall: 192 //mmap2 [31]syscall: 192 //mmap2 [32]syscall: 6 //close [33]syscall: 6 //close [34]syscall: 33 //access [35]syscall: 33 //access [36]syscall: 5 //open [37]syscall: 5 //open [38]syscall: 3 //read [39]syscall: 3 //read [40]syscall: 197 //fstat64 [41]syscall: 197 //fstat64 [42]syscall: 192 //mmap2 [43]syscall: 192 //mmap2 [44]syscall: 192 //mmap2 [45]syscall: 192 //mmap2 [46]syscall: 6 //close [47]syscall: 6 //close [48]syscall: 33 //access [49]syscall: 33 //access [50]syscall: 5 //open [51]syscall: 5 //open [52]syscall: 3 //read [53]syscall: 3 //read [54]syscall: 197 //fstat64 [55]syscall: 197 //fstat64 [56]syscall: 192 //mmap2 [57]syscall: 192 //mmap2 [58]syscall: 192 //mmap2 [59]syscall: 192 //mmap2 [60]syscall: 192 //mmap2 [61]syscall: 192 //mmap2 [62]syscall: 6 //close [63]syscall: 6 //close [64]syscall: 33 //access [65]syscall: 33 //access [66]syscall: 5 //open [67]syscall: 5 //open [68]syscall: 3 //read [69]syscall: 3 //read [70]syscall: 197 //fstat64 [71]syscall: 197 //fstat64 [72]syscall: 192 //mmap2 [73]syscall: 192 //mmap2 [74]syscall: 192 //mmap2 [75]syscall: 192 //mmap2 [76]syscall: 192 //mmap2 [77]syscall: 192 //mmap2 [78]syscall: 6 //close [79]syscall: 6 //close [80]syscall: 192 //mmap2 [81]syscall: 192 //mmap2 [82]syscall: 243 //set_thread_area 設置線程入口 [83]syscall: 243 //set_thread_area [84]syscall: 125 //mprotect 設置內存映像保護 [85]syscall: 125 //mprotect [86]syscall: 125 //mprotect [87]syscall: 125 //mprotect [88]syscall: 125 //mprotect [89]syscall: 125 //mprotect [90]syscall: 125 //mprotect [91]syscall: 125 //mprotect [92]syscall: 125 //mprotect [93]syscall: 125 //mprotect [94]syscall: 125 //mprotect [95]syscall: 125 //mprotect [96]syscall: 91 //munmap 去除內存頁映射 [97]syscall: 91 //munmap [98]syscall: 252 //exit_group 結束

程序很簡單

int main()
{
	return 0;
}

上次修改時間 2017-02-03

相關日誌