10
在POSIX,爲什麼在fcntl.h宣佈開放的系統調用,而close系統調用在unistd.h中聲明?我認爲這是一件歷史性的神器,但是這一雙讓我覺得特別奇怪,因爲你經常需要在打開後關閉。爲什麼open在fcntl.h中聲明,而close在unistd.h中聲明?
在POSIX,爲什麼在fcntl.h宣佈開放的系統調用,而close系統調用在unistd.h中聲明?我認爲這是一件歷史性的神器,但是這一雙讓我覺得特別奇怪,因爲你經常需要在打開後關閉。爲什麼open在fcntl.h中聲明,而close在unistd.h中聲明?
正如前面所指出的,插座和管道也獲得通過關閉。但可能最初的原因是open需要象fcntl.h中定義的O_RDONLY這樣的標誌,所以你不妨把原型放在那個文件中。
可能會或可能不相關,但它可能是有用的注意,有比'打開其他相當多的程序()'應該最終傳遞給'接近,回報的東西()'。所以在這個意義上,'close()'比'open()'有更廣泛的應用... – twalberg
這很有道理。也許在UNIX的早期,當所有東西都是文件時(我想知道這是否是真的),也許它們在同一個頭文件中。再經過其他基於描述符的API到來的時候(例如,插座)它使更多的意義有一般的文件描述符程序(讀/寫/關閉)在unistd.h中與創建散落的各種描述符類型的API。 –
'unistd.h頭文件比'fcntl.h'更新。我不認爲在POSIX之前有一個unistd.h。它曾經是一個真正的熊,以確定在哪裏(如果?)事情被宣佈。我無法確定。很久以前了。 –