Вот моя проблема, когда я пытаюсь выполнить
long int second;
second=system("date +%s);
и затем экспортировать "секунду" в текстовый файл, я получаю 0
вместо 1403109...
Как я могу экспортировать вывод этой команды в текстовый файл при изменении секунды?
вывод 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;
}
Для получения времени, Вы могли использовать функции в 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;
}
Вы могли непосредственно перенаправить вывод в файл с помощью оператора >
перенаправления следующим образом:
system("date +\%s > filename");
Помнят, что необходимо выйти %
и замена filename
файлом, к которому Вы хотите, чтобы вывод перенаправил.
>
оператор перенаправляет вывод команды к левой стороне в файл на правой стороне путем перезаписи содержания filename
(если таковые имеются) с выводом, вместо того, чтобы печатать его к стандартному выводу. Если Вы хотите добавить вывод вместо того, чтобы перезаписать предыдущее содержание, Вы могли бы использовать >>
вместо >
.