Как использовать вывод команды терминала в моей программе? - PullRequest
2 голосов
/ 05 марта 2011

Я хочу проанализировать вывод команды w для использования в моей программе. Я знаю, что могу выполнить w, используя execlp, но есть ли способ получить вывод w в мою программу напрямую?Я думаю, что мог бы использовать канал или что-то еще, но я не очень много знаю об этом или о том, как каналы работают в команде execlp.

Спасибо за помощь

Ответы [ 3 ]

2 голосов
/ 05 марта 2011

Посмотрите на popen для простого способа сделать это, хотя он имеет различные слабые стороны (например, обращение к оболочке). libslack также имеет замену popen (функции сопроцесса); это под GPL.

1 голос
/ 05 марта 2011

Использование popen (3) :

#include <stdio.h>
main()
{
 char *command="w";
 FILE *fpipe = (FILE*)popen(command,"r")) );
 char line[256];
 while ( fgets( line, sizeof(line), fpipe))
 {
  printf("%s", line);
 }
 pclose(fpipe);
}
0 голосов
/ 05 марта 2011

man popen

(некоторые другие случайные символы, чтобы пройти фильтр lame)

...