控制代碼(handle)和檔案識別符號(PID)

2021-10-10 04:18:51 字數 573 閱讀 7519

今天有朋友問到,什麼是控制代碼,什麼是handle,什麼是程序識別符號,什麼又是pid?

控制代碼就是handle,而程序識別符號就是pid,即processid,

那麼控制代碼和識別符號又分別是什麼?他們之間又有何聯絡?

控制代碼的宣告typedef void *handle

它控制代碼的本質就是乙個指標,但是它的作用又不同於指標,它又不是真正意義上的指標,或者說說控制代碼是乙個受限的指標。

給你乙個指標,你可以拿這個指標做幾乎任何事情,給你乙個控制代碼,你只能幹一些windows允許你幹的事情。

我們知道windows是乙個以虛擬記憶體為基礎的作業系統。在這種環境下,windows記憶體管理器經常在記憶體中來回移動物件,依此來滿足各種應用程式的記憶體需要。而物件的位址經常變化,那麼我們該如何找到這個物件呢?

windows作業系統核心區維護著一張全域性控制代碼表,全域性控制代碼表裡面存放著所有程序核心物件,這張全域性控制代碼表儲存單元的位置本身是不變的,而全域性控制代碼表的索引就是pid。

如此我們通過控制代碼就可以間接地知道物件的位址。

這個位址是在物件裝載(load)時由系統分配給的,當系統解除安裝時(unload)又釋放給系統。

控制代碼和檔案描述符

控制代碼是windows下的概念。控制代碼是windows下各種物件的識別符號,比如檔案 也許叫文件比較合適一點 資源 選單 游標 點陣圖等。檔案控制代碼和檔案描述符類似,它也是乙個非負整數,也用於定位檔案資料在記憶體中的位置。由於linux下所有東西都被看成是檔案,比如檔案 也許叫文件比較合適一點...

P4合法C識別符號

給定乙個不包含空白符的字串,請判斷是否是c語言合法的識別符號號 注 題目保證這些字串一定不是c語言的保留字 c語言識別符號要求 1.非保留字 2.只包含字母 數字及下劃線 3.不以數字開頭。輸入格式 一行,包含乙個字串,字串中不包含任何空白字元,且長度不大於20。輸出格式 一行,如果它是c語言的合法...

C語言之檔案開啟識別符號

示例程式 file fp fp fopen text test.txt w if fp printf file open failed n exit 0 標頭檔案是stdlib.h 函式原型 file fopen const char path,const char mode mode r 開啟檔案...