如何创建位于dev目录子目录下的裸设备文件

如何创建位于dev目录子目录下的裸设备文件,第1张

mknod命令用于创建一个设备文件,即特殊文件 *** 作系统与外部设备 (例如:磁盘驱动器,打印机,modern,终端 等等)都是 通过设备文件来进行通信 的,在Unix/Linux系统与外部设备通讯之前,这个设备必须首先要有一个设备文件

dev是设备(device)的英文缩写。/dev这个目录对所有的用户都十分重要。因为在这个目录中包含了所有Linux系统中使用的外部设备。但是这里并不是放的外部设备的驱动程序,这一点和windows,dos *** 作系统不一样。它实际上是一个访问这些外部设备的端口。我们可以非常方便地去访问这些外部设备,和访问一个文件,一个目录没有任何区别。
Linux沿袭Unix的风格,将所有设备认成是一个文件。
关于一些特殊设备,我曾经总结过一些:
/dev/null和/dev/zero:>int main(int argc,charargv){ INFO("reading config file\n"); parse_config_file("/initrc"); / pull the kernel commandline and ramdisk properties file in / qemu_init(); import_kernel_cmdline(0); get_hardware_name(); snprintf(tmp,sizeof(tmp),"/init%src", hardware); parse_config_file(tmp);// 需要在on early-init加入device// 这样下面的device_init();创建节点动作// 才会根据这里的对device设备的描述创建出相应权限的节点[luthergliet>

在Android中,由于没有mdev和udev,所以它没有办法动态的生成设备节点,那么它是如何做的呢?

我们可以在system/core/init/下的initc和devicesc中找到答案:

initc中

我们看看get_device_perm如下实现:

在Android中,没有独立的类似于udev或者mdev的用户程序,这个功能集成到了init中做了。代码见:system/core/init/initc文件,如下:

if (ufds[0]revents == POLLIN)

handle_device_fd(device_fd);

其中handle_device_fd(device_fd)函数在system/core/init/devicesc中实现,参数device_fd 由函数device_init()->open_uevent_socket()->socket(PF_NETLINK, SOCK_DGRAM, NETLINK_KOBJECT_UEVENT)函数调用返回。

函数handle_device_fd(device_fd)中,根据传进来的device_fd参数,调用recv(fd, msg, UEVENT_MSG_LEN, 0)函数,将内核探测到的设备并通过NETLINK机制传过来的socket描述符转化成消息。接着调用parse_event(msg, &uevent);函数将消息翻译成uevent事件,并将改事件传递给handle_device_event(&uevent)函数。

handle_device_event(&uevent)函数中,依据参数uevent->subsystem类型创建dev下的相应目录,如:/dev/graphics。紧接着根据uevent->action是"add"还是"remove"来实现设备节点的创建与删除。如果uevent->action是"add",则调用make_device(devpath, block, uevent->major, uevent->minor)函数生成设备节点。如果uevent->action是"remove",则调用unlink(devpath)对设备节点进行删除。

我们一般用Visual Studio创建Windows窗体应用,那么如何用Dev C++创建窗体应用呢?下面我给大家分享一下。

工具/材料

Dev C++

01

首先打开Dev C++软件,点击顶部的文件菜单,选择新建下面的项目选项,如下图所示

02

接下来在d出的新建项目界面选择Windows Application选项,然后勾选C++选项,如下图所示

03

然后会d出另存为界面,我们给项目起一个名字,选择类型为dev,如下图所示

04

接着我们就会在Dev C++中看到如下图所示的目录,这个代表Windows窗体应用基本结构已经创建好,如下图所示

05

然后我们打开maincpp文件,如下图所示,在44行的位置修改窗体的名称

06

接下来点击顶部的运行菜单,然后在下拉菜单中选择编译选项,如下图所示

07

编译完毕以后,再次点击运行菜单,接着选择下拉菜单中的运行选项,如下图所示

08

最后我们就可以看到一个Windows窗体d出来了,如下图所示,如果还想往窗体中添加其他内容则继续在maincpp文件中添加即可


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12726010.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-27
下一篇 2023-05-27

发表评论

登录后才能评论

评论列表(0条)

保存