在C ++中执行unix命令

时间:2012-02-26 04:43:49

标签: c++ unix

有没有办法在C ++中使用unix'time'命令并将其每个输出存储在一个变量中?

编辑:如果没有办法,那么在bash脚本中调用时间并以某种方式存储返回的值呢?

谢谢!

3 个答案:

答案 0 :(得分:1)

假设您在UNIX上,那么C ++标准std::system函数将表现为defined in POSIX,即执行与sh一样的命令。在执行此操作之前,您可以首先使用stdin创建stdoutdup的别名,然后{STDIN_FILENO,将您自己的STDOUT_FILENOclose连接到本地管道{1}}前面提到的文件描述符,然后pipe在新释放的描述符上打开一个管道。

然后,您可以与std::cinstd::cout进行互动。好吧,在开始之前刷新C ++接口是个好主意。

但这并不是一个好主意。使用POSIX C接口直接获取相关数据应该更简单。

答案 1 :(得分:1)

如果你可以使用Boost库,那么应该这样做http://www.boost.org/doc/libs/1_49_0/doc/html/date_time/examples.html#date_time.examples.seconds_since_epoch

好的部分是它还处理时区转换:)

答案 2 :(得分:0)

您可以使用system(3)popen(3),但几乎总是有更好,更便携和原生的解决方案,具体取决于您正在寻找的内容。在您的具体情况下,您似乎正在寻找getrusage(2)ftime(3)的组合。