簡體   English   中英

syscall,sys_open或open是哪個?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM