[英]Which is syscall, sys_open or open?
我認為sys_open
是規范的系統調用,
即以sys_
為前綴的。
但是應該記錄所有系統調用的strace
,輸出作為系統調用open
(非前綴版本),我很困惑...
哪個是syscall?
引自“ UNIX編程環境”,第44頁的Brian W. Kernighan和Rob Pike:
程序通過稱為
read
的系統調用(內核中的子例程)檢索文件中的數據。
系統調用稱為read
,為了使程序員更簡單,C標准庫中的相應函數具有相同的名稱。
另一方面,名稱sys_read
僅對少數人(即那些入侵內核的人)有用。 它的名稱僅被視為操作系統的實現細節。
我假設您在這里談論的是C或C ++。 任何相關語言標准都沒有將sys_open()
和open()
都強制為“系統調用”。 但是,在大多數(全部?)* NIX(包括Linux,Mac OS X,BSD等)上, open()
是系統調用。
據我所知, sys_open()
是Linux獨有的,並實現為open()
之上的一層。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.