Выполнение команд cmd и получение результатов для строковой переменной [duplicate]

0

Как запустить команду cmd и получить вывод в строковой переменной? Пример:

string result = ExecuteFunction("ipconfig");

Теперь "результат" содержит:

Windows IP Configuration
Ethernet adapter Local Area Connection:
Connection-specific DNS Suffix  . :
......

Это происходит, не показывая никакого экрана cmd, все из программы. Конечно, платформа Windows.

  • 0
    Является ли тег C ++ правильным? Это больше похоже на C #. Контекст помог бы.
Теги:
cmd

2 ответа

1

Вы можете построить трубу:

В Linux:

#include <cstdio>
#include <iostream>
#include <vector>

int main() {
    FILE* fp = popen("ifconfig", "r");
    if(fp) {
        std::vector<char> buffer(4096);
        std::size_t n = fread(buffer.data(), 1, buffer.size(), fp);
        if(n && n < buffer.size()) {
            buffer.data()[n] = 0;
            std::cout << buffer.data() << '\n';
        }
        pclose(fp);
    }
}

Для Windows вы можете использовать "_popen" и изменить "ifconfig" на "ipconfig"

0

Стандартным решением этой проблемы с незапамятных времен является использование перенаправления командной строки для отправки стандартного вывода в текстовый файл, а затем чтение файла в строку.

Вы не предоставили достаточный контекст для ответа на код. В C/C++ вы можете использовать _popen(). В.NET этот ответ может помочь. Перенаправить вывод консоли в текстовое поле в отдельной программе

  • 0
    Вряд ли стандартное решение. Стандартным решением будет отправить стандартный вывод в канал и прочитать его. Не нужно попадать в файловую систему.
  • 0
    Нет, это решение применяется только в ветке истории Unix / C. В MSDOS / Windows 3 / VB / Access ответвления не были доступны, но перенаправление командной строки было. Я думаю, что это проблема с ответами на вопросы, которые не обеспечивают достаточного контекста.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню