busybox命令映射之旅(原创)

什么是busybox

BusyBox 是一个集成了三百多个最常用Linux命令和工具的软件。它很小,只有1M+,却几乎可以运行所有的Linux命令,且易移植,是嵌入式开发的利器,它被称为Linux的瑞士军刀。

准备工作

下载busybox官网

运行方式

比如放到安卓手机上运行,我们都知道虽然安卓是基于linux内核的,但命令被阉割得少到可怜,如果安装上busybox,将为手机增加了三百多个linux命令,代价也小,因为它真的很小(但运行起来,受到限制,它必须依赖于busybox 这个命令),使用这个命令前先把这个busybox可执行文件配置到环境变量中,比如要运行linux的ls命令:busybox ls, 忘了说的是busybox还有一个特点,就是将busybox这个可执行文件重命名为对应的linux命令名称,运行它就会是这个命令的效果,比如将busybox可执行文件重命名为ls,我们在终端直接输入ls,便可以直接运行它,不用busybox ls这么麻烦了,而且也为其他程序提供了命令环境,但busybox总共有三百多个命令,如果每个命令都这样做,那么代价会很大,从一M增大到了三百多M的存储空间。ps:busybox是C语言写的,busybox通过不同的文件名运行不同命令的原理其实很简单,int main(int argc,char*argv)这个程序入口的第一个参数是终端传递过来的参数个数,第二个参数就是终端传递过来的内容,argv[0]就是当前被执行的文件名本身,busybox就是根据这个来实现不同文件名执行不同的命令。

busybox命令映射

将以下代码编译为可执行文件,并将它重命名为busybox的各种命令的名称,我们将它统一放到bin/目录下,方便我们配置环境变量,这时bin目录下的文件总共有三百多个了,其实就两个文件,busybox本身和下面程序的可执行文件,只是文件名不同罢了,文件名就是busybox的命令名称。通过命令映射就可以降低代价,实现相同的效果

#include
#include
int main(int argc,char *argv[]){
       char *busybox=(char*)malloc(sizeof(8));
       strcpy(busybox,"busybox");
       for(int i=0;i

完结

第一次写,排版布局不熟练,描述的也不是很清晰。希望大家多多支持

你可能感兴趣的:(busybox命令映射之旅(原创))