当前位置: 技术问答>linux和unix
如何用C代码实现这几个命令?
来源: 互联网 发布时间:2016-11-11
本文导语: 由于系统使用busybox, 而rmmod,mknod,insmod,rm命令被裁剪掉了,用C代码实现这些功能,去加载或卸载自己的驱动,该怎么做?有相关的系统调用吗? 谢谢回复! | mknod 有对应的C API,同名 int mkno...
由于系统使用busybox, 而rmmod,mknod,insmod,rm命令被裁剪掉了,用C代码实现这些功能,去加载或卸载自己的驱动,该怎么做?有相关的系统调用吗?
谢谢回复!
谢谢回复!
|
mknod 有对应的C API,同名
int mknod(const char *pathname, mode_t mode, dev_t dev);
rm 可以调用int unlink(const char *pathname);
其它两个不知道
int mknod(const char *pathname, mode_t mode, dev_t dev);
rm 可以调用int unlink(const char *pathname);
其它两个不知道
|
1, rm 删除文件
remove(删除文件)
相关函数 link,rename,unlink
表头文件 #include
定义函数 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库函数
remove(删除文件)
相关函数 link,rename,unlink
表头文件 #include
定义函数 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库函数
|
+1
|
rmmod insmod看源码吧
|
源码是想当复杂呀。
|
建议还是用busybox的,占的空间很小,自己写不见得就能省空间
如果非要自己写,建议直接看busybox代码吧,超短的代码。
如果非要自己写,建议直接看busybox代码吧,超短的代码。
|
man create_module
NAME
create_module - create a loadable module entry
SYNOPSIS
#include
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.
|
最后回复这个帖子一次,busybox代码真的很难看吗?你觉得busybox是用什么完成insmod的呢?
最好的例子就是busybox。
自己的话被别人当白板,好无语呀,看来我还是少说话的好,说多错多,最主要的都是耳边风。
|
自己移植一个busybox替代原来的busybox啊,比你自己写代码容易多了。