在C++中执行unix命令

Executing unix commands in C++

本文关键字:unix 命令 执行 C++      更新时间:2023-10-16

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

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

谢谢!

假设您在UNIX上,那么C++标准std::system函数的行为将与POSIX中定义的一样,即执行与sh一样的命令。在此之前,您可以将自己的stdinstdout连接到本地管道,方法是首先使用dup创建STDIN_FILENOSTDOUT_FILENO的别名,然后使用close创建上述文件描述符,再使用pipe在新释放的描述符上打开管道。

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

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

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

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

您可以使用system(3)popen(3),但几乎总是有一个更好、更可移植和本机的解决方案,这取决于您正在寻找什么。在您的特定情况下,它似乎是您真正想要的getrusage(2)ftime(3)的组合。