22 使用mkdirat()函數時,與mkdir()函數最大的差別在於?
(A) 建立多層目錄的能力
(B) 權限設定的方式
(C) 相對路徑的處理方式
(D) 錯誤處理機制

答案:登入後查看
統計: A(2), B(3), C(3), D(0), E(0) #3399869

詳解 (共 2 筆)

#7318856

【第一步:找關鍵字】

關鍵字:

  • mkdir() vs mkdirat()

  • at(關鍵!)

  • 相對路徑(考點)

? 題目核心在 at 這個字
? 代表「在某個目錄之下操作

【第二步:白話翻譯】

這題在問:

? 「mkdir 跟 mkdirat 有什麼最大差別?」

【第三步:解題思路】

這題在考什麼觀念?

? *系統呼叫中的「at 系列函數」設計概念

解題步驟

  1. 先理解 mkdir()
    → 用「路徑字串」直接建立資料夾

  2. 再理解 mkdirat()
    → 可以指定「某個目錄當基準」

  3. 比較差異
    相對路徑的解析方式不同

原理與規則(生活比喻)

想像你在找地址:

  • mkdir()
    直接給完整地址(台北市XXX路)

  • mkdirat()
    先說「在某棟大樓裡」
    再說「第幾間房」

? mkdirat() = 「在某個目錄(fd)底下操作」

【第四步:選項分析】

(A) 為什麼錯?

✘ 錯

多層目錄(例如 mkdir -p):

? 不是這兩個函數的差別

(B) 為什麼錯?

✘ 錯

兩者權限設定方式:

? 一樣(mode 參數)

(C) 為什麼對?

✔ 正確(本題答案)

? 最大差別:

相對路徑的處理方式

  • mkdir():
    相對於「目前工作目錄」

  • mkdirat():
    相對於「指定的目錄描述符(dirfd)」

(D) 為什麼錯?

✘ 錯

錯誤處理方式:

? 並沒有本質差異

【觀念補充與延伸】

核心觀念定位

? 系統程式 / POSIX 系統呼叫
? 中高階考點

法條或定義

  • mkdir(path, mode)
    在指定路徑建立目錄

  • mkdirat(dirfd, path, mode)
    在「dirfd 指定的目錄」下建立目錄

*為什麼要有 at 系列?

? 為了避免 race condition(競爭條件)
? 提升安全性(例如避免路徑被偷換)

*常見 at 系列

函數 功能
openat 開檔案
mkdirat 建目錄
unlinkat 刪檔

觸類旁通(舉一反三)

對比概念

  • 相對路徑 vs 絕對路徑

  • cwd(current working directory)

變化題型

  • 問:dirfd = AT_FDCWD 代表什麼?
    ? 使用目前工作目錄(等同 mkdir)

【記憶口訣】

? 「at = 在某個目錄底下」

【常見陷阱】

學生最容易搞混的地方

以為功能完全不同

心理盲點

看到新函數就以為是新功能

避坑指南

? 看到 *at:

直接聯想
→ 路徑基準點不同

0
0
#6786501
1. 題目解析 在這道題目中,我們需要...
(共 904 字,隱藏中)
前往觀看
0
0