首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与linux内核模块的用户空间交互

问与linux内核模块的用户空间交互
EN

Stack Overflow用户
提问于 2017-01-24 19:32:31
回答 1查看 1.4K关注 0票数 1

我正在开发一个与我的linux内核模块交互的用户空间程序。我知道实现这一目标的方法之一是使用netlink套接字。但是,netlink套接字不被shell命令(例如'ls‘)用于与内核的交互。

那么,各种shell命令如何与内核交互呢?我试着浏览ls命令(ls.c)的代码,但无法理解这一点。

EN

回答 1

Stack Overflow用户

发布于 2017-01-25 03:57:19

我认为“Ondriy”和“twalberg”已经给出了答案。但我还是要补充一些解释。

我们可以通过不同的方式与内核空间进行交互。

Linux :Linux内核中的每个系统调用都分配一个唯一的syscall号。像open() -> __NR_open,close() -> __NR_exit,read() -> __NR_read。

IOCTL:内核中已经预定义了ictl数。因此,通过使用这些数字,您可以与内核空间进行交互。例如ioctl(/dev/i2c-0,I2C_SMBUS,地址);

Netlink套接字:通过netlink,您可以将消息从内核空间传递到用户空间。例如socket()、bind()、sendmsg()。

Sysfs/procfs:可以通过sysfs和proc与内核进行通信。(查看/sys/*文件夹)。

但是,如果您只查看ls命令,那么我认为您可以遵循下面的链接。

How does the 'ls' command work in Linux/Unix?

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

https://stackoverflow.com/questions/41837420

复制
相关文章

相似问题

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