我正在從《從頭開始編程》一書中學習 x86 匯編 Linux,目前我正在學習如何打開檔案并對其進行讀取或寫入。我在打開檔案的選項時遇到問題,我知道 0 是只讀的,03101 是寫和截斷的,我在哪里可以獲得所有打開選項的完整檔案?
uj5u.com熱心網友回復:
這與 WSL 無關,與您選擇在 WSL 中安裝的 Linux 發行版有關。?不同的發行版會將內容放在檔案系統中的不同位置。
?是locate '*fcntl*.h'查找適當標頭的好方法。
您總是可以編譯一個包含檔案化頭檔案的 C 程式(這將拉入“真正的”頭檔案),并查看它的gcc -E -dM宏定義。甚至
gcc -E -dM /usr/include/fcntl.h | | grep ' O_'
只過濾 O_ 宏常量。(fcntl.h我認為這可能是在普通的 /usr/include 中,而不是埋在某個地方,但也許這只是我的 Arch GNU/Linux 發行版保持它的簡單性。它保留了 Linux 特定的 libc頭檔案<asm/unistd.h>,/usr/include/asm/如分別為 32 位和 64 位索書號。unistd_32.hunistd_64.h
或者撰寫代碼printf("%x, %x\n", O_CREAT, O_TRUNC)來列印出您感興趣的一些常量,無論它們來自什么標頭。(或列印出它們的按位或,如O_CREAT|O_TRUNC)。
像這樣的權限模式位常量
S_IRUSR是根據其他常量定義的,__S_IREAD所以它有點像老鼠窩;可能只是列印出來是個好主意。或者簡單地以八進制寫入權限位,例如mov edx, 0o666(NASM) 或mov $0666,
