Выполнение команд Unix в C ++ - PullRequest
0 голосов
/ 26 февраля 2012

Есть ли способ использовать команду unix 'time' в C ++ и сохранить каждый из ее выходных данных в переменной?

EDIT: если способа нет, то как насчет вызова времени вbash скрипт и как-то хранить возвращенные значения?

Спасибо!

Ответы [ 3 ]

1 голос
/ 26 февраля 2012

Если вы работаете в UNIX, тогда стандартная функция C ++ std::system будет вести себя как , определенная в POSIX , то есть выполнять команду как sh. Перед этим вы можете подключить свои собственные stdin и stdout к локальному каналу, сначала используя dup для создания псевдонимов STDIN_FILENO и STDOUT_FILENO, затем close вышеупомянутых файловых дескрипторов, затем pipe открыть канал на недавно освобожденные дескрипторы.

Тогда вы можете взаимодействовать с std::cin и std::cout. Что ж, было бы неплохо очистить интерфейс C ++ перед началом.

Хотя это не совсем хорошая идея. Должно быть проще использовать интерфейс POSIX C для непосредственного получения соответствующих данных.

1 голос
/ 26 февраля 2012

Если вы в порядке с использованием библиотек Boost, то это должно сделать это http://www.boost.org/doc/libs/1_49_0/doc/html/date_time/examples.html#date_time.examples.seconds_since_epoch

хорошая часть - он также обрабатывает преобразования часовых поясов:)

0 голосов
/ 26 февраля 2012

Вы можете использовать system(3) или popen(3), но почти всегда есть лучшее, более портативное и нативное решение, в зависимости от того, что именно вы ищете. В вашем конкретном случае кажется, что вы действительно ищете комбинацию getrusage(2) и ftime(3).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...