Как прочитать использование диска (du) в переменной C

#c

#c

Вопрос:

Я хотел бы сделать следующее в программе на «c».

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

 du -sb /home/mann | awk '{print$1}'
  

Я хотел бы выполнить вышеуказанное в программе C и скопировать выходные данные в переменную. Мне нужно сделать это только для этого каталога, а не для «/» или «/home».

Комментарии:

1. Звучит как домашнее задание по системному программированию.

2. Чтобы получить правильные ответы, вам придется уточнить свой вопрос. Вы сказали, что не можете использовать system (и, предположительно, также не popen / pclose), поэтому звучит так, как будто вы не хотите запускать du в программе C, а скорее написать что-то самостоятельно, что делает то, что она делает? Есть ли у вас другие ограничения? Есть идеи для начала?

Ответ №1:

  • Передайте выходные данные вашей команды в файл на диске. Запустите вашу команду, используя system
  • Прочитайте файл, используя стандартные функции C
  • Обновите свою переменную

Другой вариант — использовать popen / pclose для запуска вашей команды. Это вернет файловый дескриптор, из которого вы можете читать.

Еще одним вариантом является поиск в вашей системе любой библиотечной функции, которая предоставляет нужную вам информацию

Комментарии:

1. Мне нужно сделать это внутри кода C. Как мне это сделать? Я не могу использовать «системный» вызов.