Краткий обзор того, что я пытаюсь сделать:
Эмулировать программу оболочки, которая выполняет команды, когда пользователь вводит их в свой собственный процесс, и после завершения каждого процесса выводит общее время, которое всеДочерние процессы и оболочка израсходовали на ЦП, а также максимальный объем памяти, использованный одним процессом.
Создание оболочки и выполнение команд не проблема, но когда дело доходит до отслеживаниястатистика о процессах - вот что меня застряло.
Для отслеживания времени процессора я собирался использовать системный вызов time и передавать команду пользователя через оболочку и во время, чтобы процесс могзакончить бег, и в конце исполнения у меня будет доступная мне информация о времени.Но когда дело доходит до получения времени, которое оболочка (текущая программа) потратила на процессор, я не совсем уверен, что делать, потому что каждая реализация времени, которое я видел или встречал, использует вышеупомянутый метод передачикоманды и аргументы во времени, и я не могу сделать это с оболочкой.Единственная идея, которая у меня есть на данный момент, состоит в том, чтобы сделать оболочку дочерним процессом, запустить его во времени, а когда оболочка завершит выполнение дочернего процесса, перезагрузить оболочку, извлечь информацию из времени и перезагрузить оболочку.Это кажется очень округлым, но я не могу найти какие-либо системные вызовы, чтобы делать то, что я хочу.
Что касается использования памяти, я думал об использовании top и затем извлекал информацию, но только iirc topотслеживает текущее использование памяти, а не общее.Единственное, о чем я мог подумать, - это зайти в / proc // и попытаться извлечь информацию откуда-то там.Что, опять же, кажется очень окольным.
Любой толчок в правильном направлении был бы потрясающим.Все это делается в C, если это имеет значение.