字符设备open的次数有限制吗
答案:1 悬赏:0 手机版
解决时间 2021-01-30 11:59
- 提问者网友:谁的错
- 2021-01-30 02:13
是不是一个字符设备不需要open和close一一对应的?能有实例说明就更好了
最佳答案
- 五星知识达人网友:末日狂欢
- 2021-01-30 03:08
您好,应用层的open函数是一个系统调用,它最终会调用驱动层中的open函数,应用层的open打开成功返回一个文件描述符而不是零,这点你可能弄错了,你查查吧!
以下是我在网上搜的:
open 函数用于打开和创建文件。以下是 open 函数的简单描述:
#include <fcntl.h>
int open(const char *pathname, int oflag, ... );
返回值:成功则返回文件描述符,否则返回 -1
1.驱动程序中的open函数即你说的int(*open)(struct inode *inode, struct file *filp)
在执行 testdev = open ("/dev/test",O_RDWR)语句时被调用,并且open ("/dev/test",O_RDWR)的返回值就是文件描述符;
2.驱动中的open函数一般用于设备专有数据的初始化,申请相关资源及进行设备的初始化等工作,对于简单的设备而言,open函数可以不做具体的工作,你在应用层通过系统调用open打开设备时,如果打开正常,就会得到该设备的文件描述符,之后,你可以通过该描述符对设备进行read和write等操作;
3.在你的程序里testdev就是文件描述符,一般定义为 int fd;
以下是我在网上搜的:
open 函数用于打开和创建文件。以下是 open 函数的简单描述:
#include <fcntl.h>
int open(const char *pathname, int oflag, ... );
返回值:成功则返回文件描述符,否则返回 -1
1.驱动程序中的open函数即你说的int(*open)(struct inode *inode, struct file *filp)
在执行 testdev = open ("/dev/test",O_RDWR)语句时被调用,并且open ("/dev/test",O_RDWR)的返回值就是文件描述符;
2.驱动中的open函数一般用于设备专有数据的初始化,申请相关资源及进行设备的初始化等工作,对于简单的设备而言,open函数可以不做具体的工作,你在应用层通过系统调用open打开设备时,如果打开正常,就会得到该设备的文件描述符,之后,你可以通过该描述符对设备进行read和write等操作;
3.在你的程序里testdev就是文件描述符,一般定义为 int fd;
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯