首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么使read()成为syscall?

什么使read()成为syscall?
EN

Stack Overflow用户
提问于 2015-11-02 01:50:11
回答 2查看 367关注 0票数 1

下面的链接显示read是一个syscall:What is the difference between read() and fread()?

现在,我正在努力理解是什么使得读取一个系统调用。

,例如

我使用Nuttx并通过打开、关闭和ioctl方法注册了一个设备结构flash_dev (path‘/dev/ use 0’)。这是作为一个inode在pesudo文件系统中添加的信号量支持互斥。

现在,在应用程序中,我打开(‘/dev/ from 0’)并读取& ioctls。

现在,在上述过程中的哪一部分使读取一个syscall?

EN

回答 2

Stack Overflow用户

发布于 2015-11-02 03:29:23

read()函数是用来调用系统IOW以进行系统调用所需的任何指令的薄包装器。当您调用read() ( fread()也调用它)时,将调用相关的内核/驱动程序代码,并执行从文件读取所需的任何操作。

票数 2
EN

Stack Overflow用户

发布于 2015-11-10 19:09:45

系统调用是一种调用,其功能几乎完全存在于内核中,而不是用户空间中。传统上,open()、read()、write()等都在内核中,而fread()、fwrite()等则有在用户空间中运行的代码,根据需要调用内核。

例如,在Linux中,当您调用read()时,您的应用程序链接的标准库可能会执行以下操作:

代码语言:javascript
复制
   mov eax, 3          ;3 -> read
   mov ebx, 2          ;file id
   mov ecx, buffer  
   mov edx, 5          ;5 bytes 
   int 80h

就是这样-它只是接受您传入的参数,并通过int 80h (中断)指令调用内核。作为一个应用程序程序员,无论调用是在用户空间中运行,还是在内核中运行,或者两者都运行,这并不重要。对于调试或性能方面的原因,它可能很重要,但是对于简单的应用程序来说,这并不重要。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33469535

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档