如何用C代码实现这几个命令?

手机写程序 2011-03-04 10:52:36
由于系统使用busybox, 而rmmod,mknod,insmod,rm命令被裁剪掉了,用C代码实现这些功能,去加载或卸载自己的驱动,该怎么做?有相关的系统调用吗?

谢谢回复!
...全文
167 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
手机写程序 2011-03-07
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 wzzww 的回复:]
引用 10 楼 eyey1 的回复:

有create_module的例子吗?

最后回复这个帖子一次,busybox代码真的很难看吗?你觉得busybox是用什么完成insmod的呢?
最好的例子就是busybox。
自己的话被别人当白板,好无语呀,看来我还是少说话的好,说多错多,最主要的都是耳边风。
[/Quote]
兄台教训的极是,不要生气,其实我手头没有busybox的代码,翻网上的代码不容易啊。
犇犇犇程序猿 2011-03-07
  • 打赏
  • 举报
回复
自己移植一个busybox替代原来的busybox啊,比你自己写代码容易多了。
无知者无谓 2011-03-07
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 eyey1 的回复:]

有create_module的例子吗?
[/Quote]
最后回复这个帖子一次,busybox代码真的很难看吗?你觉得busybox是用什么完成insmod的呢?
最好的例子就是busybox。
自己的话被别人当白板,好无语呀,看来我还是少说话的好,说多错多,最主要的都是耳边风。
手机写程序 2011-03-07
  • 打赏
  • 举报
回复
有create_module的例子吗?
李亚超 2011-03-04
  • 打赏
  • 举报
回复
+1
[Quote=引用 1 楼 justkk 的回复:]

mknod 有对应的C API,同名
int mknod(const char *pathname, mode_t mode, dev_t dev);

rm 可以调用int unlink(const char *pathname);

其它两个不知道
[/Quote]
jerry409 2011-03-04
  • 打赏
  • 举报
回复
1, rm 删除文件
remove(删除文件)

相关函数 link,rename,unlink
表头文件 #include<stdio.h>
定义函数 int remove(const char * pathname);
函数说明 remove()会删除参数pathname指定的文件。如果参数pathname为一文件,则调用unlink()处理,若参数pathname为一目录,则调用rmdir()来处理。请参考unlink()与rmdir()。
返回值 成功则返回0,失败则返回-1,错误原因存于errno
错误代码 EROFS 欲写入的文件存在于只读文件系统内
EFAULT 参数pathname指针超出可存取内存空间。
ENAMETOOLONG 参数pathname太长
ENOMEM 核心内存不足
ELOOP 参数pathname有过多符号连接问题
EIO I/O存取错误。

2,rmmod mkmod insmod没有C库函数
justkk 2011-03-04
  • 打赏
  • 举报
回复
mknod 有对应的C API,同名
int mknod(const char *pathname, mode_t mode, dev_t dev);

rm 可以调用int unlink(const char *pathname);

其它两个不知道
手机写程序 2011-03-04
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 justkk 的回复:]
man create_module

HTML code
NAME
create_module - create a loadable module entry

SYNOPSIS
#include <linux/module.h>

caddr_t create_module(const char *name, size_t size)……
[/Quote]
size_t size这个参数好像指的是模块的大小,从何而来?
justkk 2011-03-04
  • 打赏
  • 举报
回复
man create_module
NAME
create_module - create a loadable module entry

SYNOPSIS
#include <linux/module.h>

caddr_t create_module(const char *name, size_t size);

DESCRIPTION
create_module() attempts to create a loadable module entry and reserve the kernel memory that will be needed to hold the module. This system call requires
privilege.

RETURN VALUE
On success, returns the kernel address at which the module will reside. On error -1 is returned and errno is set appropriately.
无知者无谓 2011-03-04
  • 打赏
  • 举报
回复
建议还是用busybox的,占的空间很小,自己写不见得就能省空间
如果非要自己写,建议直接看busybox代码吧,超短的代码。
手机写程序 2011-03-04
  • 打赏
  • 举报
回复
谢谢各位回复。

rmmod insmod对应delete_module,create_module。
delete_module知道如何调用了,各位大大帮看看create_module怎么用。谢谢了!
Rain208 2011-03-04
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 playmud 的回复:]
rmmod insmod看源码吧
[/Quote]

源码是想当复杂呀。
playmud 2011-03-04
  • 打赏
  • 举报
回复
rmmod insmod看源码吧

23,169

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧