Я застрял на этом несколько дней, и это очень расстраивает.
Я использую popen()
, чтобы вызвать процесс командной строки, получить его вывод и сохранить его в C-строке. Я использовал fgets()
, но, похоже, разрывается после новой строки, поэтому я использую fread()
. Единственная проблема заключается в том, что возвращаемая строка C иногда испорчена.
Вот мой код:
const char *cmd = "date";//This the shell command
char buf[BUFSIZ];//Output of the command
FILE *ptr;
int c;
if ((ptr = popen(cmd, "r")) != NULL)
while(fread(buf, sizeof(buf),1, ptr))
while ((c = getchar()) != EOF)
printf("output = %s", buf);
(void) pclose(ptr);
В последней строке C иногда содержатся странные символы, которых там быть не должно, а иногда нет даже строки, доступной. Кто-нибудь может помочь? ):
Edit: вот что я делал, когда использовал fgets (). Команда Shell может быть чем угодно, что выводит текст. Не просто «свидание».
if ((ptr = popen(cmd, "r")) != NULL)<br/>while (fgets(buf, BUFSIZ, ptr) != NULL)<br/>printf("output = %s", buf);<br/>(void) pclose(ptr);