这是我的问题,当我尝试做
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
>>
>