您将需要创建一个字符串,其中包含您要运行的完整脚本,或者您需要创建一个可以简单运行的脚本,然后安排使用popen()
读取该脚本的输出。两种都是可能的;这更容易取决于你的脚本技能水平与你的C编程技能。
char command[4096];
strcpy(command, "TOTAL=$(free | grep Mem| awk '{print $2}')\n");
strcat(command, "grep -v procs $1 | grep -v free |\n");
strcat(command, "awk '{USED=TOTAL-$4-$5-$6;print USED}' TOTAL=$TOTAL\n");
FILE *in = popen(command, "r");
...read the results, etc...
的字符串操作简化第一外壳脚本,然后通过计算出awk
总数的值。
其他的方式做这将是读free | grep Mem | awk '{print $2}'
输出 - 这是总价值 - 从一个使用popen()
,然后建立一个值到第二个命令:
char command[4096];
strcpy(command, "free | grep Mem| awk '{print $2}'");
char total[20];
FILE *in1 = popen(command, "r");
...read TOTAL into total...
strcpy(command, "grep -v procs $1 | grep -v free |\n");
strcat(command, "awk '{USED=TOTAL-$4-$5-$6;print USED}' TOTAL=");
strcat(command, total);
FILE *in2 = popen(command, "r");
那么如何做一个做到这一点?我想要一个shell命令返回的值,并在稍后阶段使用它! – 2010-10-09 07:07:48
通过使用'popen'来运行命令而不是'system'。 – 2010-10-09 07:45:38