如何将系统(“日期+%s)输出存储到变量?c ++

如何将系统(“日期+%s)输出存储到变量?c ++

这是我的问题,当我尝试做

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

然后将“第二个”导出到我得到的文本文件,0而不是1403109...

每当第二个发生变化时,我怎样才能将此命令的输出导出到文本?

答案1

正如您所尝试的,输出system("date +%s")不能存储在变量中。

man system

int system(const char *command);

system通过调用 来执行 command 中指定的命令/bin/sh -c command,并在命令完成后返回。

system不返回执行命令的输出。0如果命令成功执行且 shell 不可用,则返回。否则返回某个整数退出状态。

如何将此命令的输出导出到文本文件

方法 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

要获取时间,您可以使用 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;
}

答案3

您可以使用重定向运算符直接将输出重定向到文件,>如下所示:

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

请记住,您需要转义%并替换filename为您希望输出重定向到的文件。

操作符通过用输出覆盖 的>内容(如果有)而不是将其打印到标准输出,将命令左侧的输出重定向到右侧的文件。如果要附加输出而不是覆盖以前的内容,可以使用而不是。filename>>>

相关内容