перенаправление вывода в Unix и C - PullRequest
0 голосов
/ 12 апреля 2011

Я пытаюсь запустить скрипт внутри моей программы на C, используя команду system(). Внутри main() я запускаю скрипт, и он возвращает результаты. Как я могу поместить результат сценария в какую-то строку и проверить условия? Я знаю, что могу сделать это с файлами, но мне было интересно, можно ли поместить результат в строку.

Пример будет выглядеть так:

main()
{
  system("my_script_sh"); // How can I get the result of the my_script_sh
}

Ответы [ 3 ]

5 голосов
/ 12 апреля 2011

Вы не можете использовать системную команду для этого. Лучше всего использовать popen :

  FILE *stream;
  char buffer[150];    
  stream = popen("ls", "r");
  while ( fgets(buffer, 150, stream) != NULL ){
      // Copy the buffer to your output string etc.
  }

  pclose(stream);
0 голосов
/ 12 апреля 2011

Что ж, проще всего было бы взять system("my_script_sh") из вашей программы и вызвать программу из оболочки с помощью канала - например: my_script_sh | ./your_c_program, а затем ваша программа на C просто читает из stdin (дескриптор файла 0).

Если это невозможно, взгляните на man 3 popen.В основном, вы используете popen вместо system, и он дает вам дескриптор файла, из которого вы можете прочитать, чтобы получить выходные данные программы.

Вот несколько ссылок, которые могут быть полезны:

0 голосов
/ 12 апреля 2011

Используйте popen() и считывайте поток в буфер char *.

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