从C中的文件运行bash脚本

时间:2015-12-24 07:19:04

标签: c bash

我有这部分代码:

   #include <stdio.h>
   #include <stdlib.h>

   int main(void)
   {
       FILE * fp;
       char * line = NULL;
       size_t len = 0;
       ssize_t read;

       fp = fopen("./file_commands", "r");
       if (fp == NULL)
           exit(EXIT_FAILURE);

       while ((read = getline(&line, &len, fp)) != -1) {
        //   printf("%s", line);
       system(line);
       }

       fclose(fp);
       if (line)
           free(line);
       exit(EXIT_SUCCESS);
   }

在file_commands中,我想放置并能够运行如下所示的bash脚本:\x31\xc0\x50\x68\x6e\x2f\x73\x68\x68\x2f\x2f\x62\x69\x89\xe3\x50\x89\xe2\x53\x89\xe1\xb0\x0b\xcd\x80 这样做的最佳方式是什么?

1 个答案:

答案 0 :(得分:4)

没有理由像这样一行一行。实际上有几件事情导致此代码失败,但是最重要的是逐行通过bash文件无法节省资源

实际上它浪费了资源。每次调用system时,操作系统都会创建一个执行命令的新进程。如果你刚刚这样做,你实际上会节省系统资源

int result = system("./file_commands");

而不是在单独调用system时尝试执行该文件的每一行。