Как сохранить вывод system("date +%s) в переменную? c++ [закрыто]

Вот моя проблема, когда я пытаюсь выполнить

long int second;
second=system("date +%s);

и затем экспортировать "секунду" в текстовый файл, я получаю 0 вместо 1403109...

Как я могу экспортировать вывод этой команды в текстовый файл при изменении секунды?

3
задан 18 June 2014 в 20:51

3 ответа

вывод system("date +%s") не может быть сохранен в переменной, когда Вы попробовали.

От man system

int system(const char *command);

system выполняет команду, определенную в команде путем вызова /bin/sh -c command, и возвращается после того, как команда была завершена.

system не возвращает вывод выполняемой команды. Это возвращается 0, если команда успешно выполняется, и оболочка не доступна. Иначе возвраты некоторый целочисленный статус выхода.

, Как может, я экспортирую вывод этой команды к текстовому файлу

Метод 1: Перенаправление (уже упомянутый @Jobin): назовите систему как,

system("date +\%s >> text.txt");

Метод 2: Использование popen, Это возвратится FILE*, который можно использовать для чтения вывода команды.

#include <stdlib.h>
#include <stdio.h>

int main()
{
  FILE *fp,*outputfile;
  char var[40];

  fp = popen("date +%s", "r");
  while (fgets(var, sizeof(var), fp) != NULL) 
    {
      printf("%s", var);
    }
  pclose(fp);

  outputfile = fopen("text.txt", "a");
  fprintf(outputfile,"%s\n",var);
  fclose(outputfile);

  return 0;
}
2
ответ дан 18 June 2014 в 20:51

Для получения времени, Вы могли использовать функции в time.h возвратах Системной функции только код возврата вместо вывода.

#include <iostream>
#include <stdio.h>

int main()
{
    FILE* outputfile = popen(REPLACE_WITH_COMMAND, "r");
    // Now, in the variable outputfile, is output as pointer
    //   to FILE object. Operate with this as file
    return 0;
}
0
ответ дан 18 June 2014 в 20:51

Вы могли непосредственно перенаправить вывод в файл с помощью оператора > перенаправления следующим образом:

system("date +\%s > filename");

Помнят, что необходимо выйти % и замена filename файлом, к которому Вы хотите, чтобы вывод перенаправил.

> оператор перенаправляет вывод команды к левой стороне в файл на правой стороне путем перезаписи содержания filename (если таковые имеются) с выводом, вместо того, чтобы печатать его к стандартному выводу. Если Вы хотите добавить вывод вместо того, чтобы перезаписать предыдущее содержание, Вы могли бы использовать >> вместо >.

0
ответ дан 18 June 2014 в 20:51

Другие вопросы по тегам:

Похожие вопросы: