Где я могу узнать, как заставить программу на C ++ взаимодействовать с операционной системой (Linux) - PullRequest
7 голосов
/ 25 июля 2010

Я новичок в C ++.

Я хотел бы создать небольшие программы, которые взаимодействуют с операционной системой (используя Kubuntu Linux).До сих пор я не смог найти ни одного учебника или руководства, чтобы заставить C ++ взаимодействовать с ОС.

В PHP я могу использовать команду exec () или оператор backtick для запуска команд, обычно выполняемыхконсоль.Как я могу делать подобные вещи в C ++?Как мне заставить мою программу на C ++ выполнить любую другую команду?Как я могу получить вывод таких команд?

Спасибо.

Ответы [ 3 ]

7 голосов
/ 25 июля 2010

Вы можете использовать system() для выполнения произвольных команд, но, если вы хотите легко управлять вводом и выводом с помощью программы, вам следует заглянуть в popen().

Для даже большего управления вы можете изучить, что именно может делать оболочка, создать несколько дополнительных файловых дескрипторов, отменить запуск другого процесса, настроить дескрипторы файлов 0, 1 и 2вход, выход и ошибка) в этом процессе, чтобы соединить их с исходными дескрипторами файла процесса, а затем выполнить программу, которой вы хотите управлять.Это не для слабонервных: -)

6 голосов
/ 25 июля 2010

Вы можете использовать команду system() в stdlib для выполнения системных команд:

#include <stdlib.h>
int main() {
    system("ls -l");
}

system() возвращает int какего возвращаемое значение, но значение int зависит от системы.Если вы попытаетесь использовать команду, которая не существует, вы получите стандартный вывод типа «нет такой команды» и, как правило, ненулевое возвращаемое значение.(Например, запуск system("ls -l"); на моей машине с Windows XP возвращает значение 1.

2 голосов
/ 25 июля 2010

Вы можете использовать system(), как указано ранее, или вы можете использовать библиотеки, которые предоставляют доступ к стандартному API POSIX. unistd.h и Библиотека GNU C включает в себя множество функций для взаимодействия с ОС.Возможности этих библиотек бесконечны, так как вы можете реализовать их самостоятельно.Простой пример: отсканируйте каталог на наличие текстовых файлов с помощью scandir() и распечатайте содержимое файлов.

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