Как мне динамически передать команды, используя строковый буфер? - PullRequest
0 голосов
/ 28 июля 2011
#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 Ответ

1 голос
/ 28 июля 2011

system("> gksudo cd /home/phoenix | command[i]");

Здесь «команда [i]» рассматривается как строковый литерал. Таким образом, значение command[i] равно , а не . вам нужно что-то вроде:

char cmd_buff[MAX_BUF];

strcpy (cmd_buff, "> gksudo cd /home/phoenix |");
strcat (cmd_buff, command[i]);

Обратите внимание, что command[i] не находится в двойных кавычках. Пожалуйста, прочитайте о строковых константах и ​​идентификаторах в C, чтобы понять это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...