#include<stdio.h>
#include<stdlib.h>
main()
{
int i;
char commandBuffer[3][10]={"ls -l","ll","top"};
for(i=0 ; i<1 ; i++)
{
system("> gksudo cd /home/phoenix | command[i]");
system("\n");
printf("%d\n",i);
}
printf("The end\n");
}
我有一个程序,我希望使用system()
动态运行命令,但这里出现的问题是command[i]
中包含的字符串不被视为管道的输入..但是如果我手动输入system("> gksudo cd /home/phoenix | ls -l");
答案 0 :(得分:1)
system("> gksudo cd /home/phoenix | command[i]");
这里“command [i]”被认为是字符串文字。因此,command[i]
的值不已被替换。你需要这样的东西:
char cmd_buff[MAX_BUF];
strcpy (cmd_buff, "> gksudo cd /home/phoenix |");
strcat (cmd_buff, command[i]);
请注意,command[i]
不在双引号内。请阅读C中的字符串常量和标识符以了解这一点。