用于在没有 /bin 目录的目标上执行'echo'的 C 程序



假设我从主机Linux系统为ARM交叉编译此代码:

#include <stdio.h>
#include <unistd.h>
#include <dirent.h>
int main (void) {
   return execl ("/bin/echo", "echo", NULL);
}

我收到了来自C 的二进制回波

问题出在我的目标上,这个二进制文件将在那里运行,没有/bin、/usr等。所以它不会执行命令。

所以我希望最终的二进制文件应该包含执行"echo"所需的所有内容。它不应该寻找/bin/echo(因为它不在那里)。

我该怎么做?

实际上我必须实现:

bash> echo 240 > /sys/class/gpio/export
bash> echo out > /sys/class/gpio/gpio240/direction
bash> echo 1 > /sys/class/gpio/gpio240/value

在c程序中

您可以在C中实现那些echo函数,例如,要实现echo 240 > /sys/class/gpio/export,您可以执行类似的操作

FILE *fh;
fh = open("/sys/class/gpio/export", "w+");
if (fh == NULL) { /* fopen failed */ }
fwrite("240n", 1, 4, fh);
fclose(fh);

最新更新