我有这部分代码:
#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
这样做的最佳方式是什么?
答案 0 :(得分:4)
没有理由像这样一行一行。实际上有几件事情导致此代码失败,但是最重要的是逐行通过bash文件无法节省资源。
实际上它浪费了资源。每次调用system
时,操作系统都会创建一个执行命令的新进程。如果你刚刚这样做,你实际上会节省系统资源
int result = system("./file_commands");
而不是在单独调用system
时尝试执行该文件的每一行。