如何使用字符串缓冲区动态管道命令?

时间:2011-07-28 16:26:14

标签: c

#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");

等每个命令,这都可以正常工作

1 个答案:

答案 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中的字符串常量和标识符以了解这一点。