Где я могу изучить, как заставить программу C++ взаимодействовать с Операционной системой (Linux)

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

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

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

Спасибо.

7
задан paxdiablo 25 July 2010 в 12:58
поделиться

3 ответа

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

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

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

6
ответ дан 6 December 2019 в 14:00
поделиться

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

2
ответ дан 6 December 2019 в 14:00
поделиться

You can use system() to execute arbitrary commands but, if you want to easily control the input and output with the program, you should look into popen().

For even more control, you can look into doing exactly what a shell might do, creating some extra file descriptors, forking to start another process, setting up file descriptors 0, 1 and 2 (input, output and error) in that process to connect them to your original process file descriptors then exec'ing the program you want to control. This isn't for the faint of heart :-)

7
ответ дан 6 December 2019 в 14:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: