您將需要創建一個字符串,其中包含您要運行的完整腳本,或者您需要創建一個可以簡單運行的腳本,然後安排使用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