可以使用bash直接与硬件通信吗?

时间:2016-03-23 09:43:14

标签: linux bash linux-kernel kernel linux-device-driver

我有兴趣用bash编写自己的工具代替我当前的网络控制器(wpa_supplicant),如果可能的话。例如,如果我想发布命令以便与路由器的外部注册器开始wps身份验证会话,是否可以在不使用任何预先构建的工具的情况下与内核通信以直接访问硬件?有人告诉我,我可以通过名为ctypes.sh的bash plugin实现我的目标,但我不太确定。

2 个答案:

答案 0 :(得分:0)

不,这通常是不可能的。 Shell脚本可能会在/ proc中乱七八糟,但它们无法执行任意IOCTL甚至多步交互式IO。这是工作的错误工具。

答案 1 :(得分:0)

一般来说,Linux内核可以通过以下机制与用户空间进行交互:

  • 系统调用
  • /dev
  • 中的设备
  • /sys
  • 中的条目
  • /proc
  • 中的条目

不能直接在Bash中使用Syscalls,但至少需要通过C程序进行绑定。

您可以创建一个Linux内核驱动程序或模块,在/proc/sys下的条目中读取/写入数据,然后使用bash程序与之交互。即使技术上可行,我个人认为它是一种矫枉过正,而/dev中通常的C / C ++用户级编程使用适当的条目要好得多。