Форум программистов, компьютерный форум CyberForum.ru

Как получить результат выполнение system()? - C++

Восстановить пароль Регистрация
 
SoulRoot
0 / 0 / 0
Регистрация: 13.01.2014
Сообщений: 19
23.01.2014, 16:36     Как получить результат выполнение system()? #1
Добрый день. Как мне получить результат выполнения команды system() в какую, нибудь переменную?

Добавлено через 24 секунды
К примеру получить вывод system("dir");

OS: Windows
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.01.2014, 16:36     Как получить результат выполнение system()?
Посмотрите здесь:

необходимо получить результат 6 имея следующие данные C++
C++ Как спровоцировать выполнение события?
C++ Получить вывод команды оболочки - функция, обратная system()
C++ Объяснить результат и вывести на экран результат логического выражения
C++ Можно узнать результат выполнения system()?
Как в C++ получить результат исполнения внешней команды C++
Расставить среди цифр знаки арифметических операций и скобки, чтобы получить необходимый результат C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Esecman
38 / 26 / 6
Регистрация: 31.12.2013
Сообщений: 329
23.01.2014, 16:42     Как получить результат выполнение system()? #2
C++
1
2
3
4
5
6
#include <iostream>
using namespace std;
int main() {
system("dir");
system("pause");
}
SoulRoot
0 / 0 / 0
Регистрация: 13.01.2014
Сообщений: 19
23.01.2014, 16:49  [ТС]     Как получить результат выполнение system()? #3
Цитата Сообщение от Esecman Посмотреть сообщение
C++
1
2
3
4
5
6
#include <iostream>
using namespace std;
int main() {
system("dir");
system("pause");
}
Прошу прощения. Не консольное приложение.
Esecman
38 / 26 / 6
Регистрация: 31.12.2013
Сообщений: 329
23.01.2014, 16:58     Как получить результат выполнение system()? #4
а какой сорс? Пример кидайте ))
просто добавьте
C++
1
2
system("dir");
system("pause"); // для задержки.
SoulRoot
0 / 0 / 0
Регистрация: 13.01.2014
Сообщений: 19
23.01.2014, 17:00  [ТС]     Как получить результат выполнение system()? #5
Задача стоит по роботе программы с телнетом или ССШ.
Вот мне нужно знать как сервер отвечает на мои запросы.
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
5662 / 3141 / 356
Регистрация: 29.11.2010
Сообщений: 8,416
23.01.2014, 17:17     Как получить результат выполнение system()? #6
Использовать перенаправление результата в текстовый файл и считывать с него.

Добавлено через 1 минуту
C++
1
system("dir >> info.txt");
каждый раз будет перезаписывать
C++
1
system("dir > info.txt");
дозапись в конец
SoulRoot
0 / 0 / 0
Регистрация: 13.01.2014
Сообщений: 19
23.01.2014, 17:18  [ТС]     Как получить результат выполнение system()? #7
Спасибо. Я думал есть лучше варианты.
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
5662 / 3141 / 356
Регистрация: 29.11.2010
Сообщений: 8,416
23.01.2014, 17:19     Как получить результат выполнение system()? #8
Чем этот вариант плох?
Обычное считывание информации или логирование.
timm_s
5 / 5 / 3
Регистрация: 17.11.2014
Сообщений: 50
22.03.2016, 18:36     Как получить результат выполнение system()? #9
Может не быть доступа на создание файла в директории.
Вот рабочий вариант:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
#include <stdlib.h>
 
 
main( )
{
        char *cmd = "ls -l";
        char buf[BUFSIZ];
        FILE *ptr;
 
        if ((ptr = popen(cmd, "r")) != NULL)
                while (fgets(buf, BUFSIZ, ptr) != NULL)
                        (void) printf("%s", buf);
                (void) pclose(ptr);
        return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.03.2016, 18:45     Как получить результат выполнение system()?
Еще ссылки по теме:

не могу получить желаемый результат в программе C++
C++ Как вывести результат из system()?
C++ Задачу создать 2-мя способами:1) передавать результат работы подпрограммы через результат, возвращаемый функци
на С++ получить результат аналогичный команде start %1 в cmd C++
Как продолжить выполнение программы? C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
avgoor
562 / 352 / 83
Регистрация: 05.12.2015
Сообщений: 1,137
22.03.2016, 18:45     Как получить результат выполнение system()? #10
SoulRoot
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
HANDLE hCin[2];
HANDLE hCout[2];
 
SECURITY_ATTRIBUTES sa;
sa.nLength = sizeof(sa);
sa.lpSecurityDescriptor = NULL;
sa.bInheritHandle = TRUE;
 
CreatePipe(&hCin[0], &hCin[1], &sa, 0);
SetHandleInformation(hCin[1], HANDLE_FLAG_INHERIT, 0);
CreatePipe(&hCout[0], &hCout[1], &sa, 0);
SetHandleInformation(hCout[0], HANDLE_FLAG_INHERIT, 0);
 
PROCESS_INFORMATION pi;
 
STARTUPINFO si;
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
si.dwFlags = STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW;
si.hStdError = hCout[1];
si.hStdOutput = hCout[1];
si.hStdInput = hCin[0];
si.wShowWindow = SW_HIDE;
 
BOOL bProc = CreateProcess(NULL, L"solution.exe", NULL, NULL, TRUE, CREATE_UNICODE_ENVIRONMENT, NULL, NULL, &si, &pi);
// если bProc==false - процесс не запустился.
CloseHandle(hCout[1]);
CloseHandle(hCin[0]);
 
 
//Здесь пишем то, что хотим отправить дочернему процессу WriteFile(hCin[1]...
 
 
DWORD dwExit = STILL_ACTIVE;
do
{
    GetExitCodeProcess(pi.hProcess, &dwExit);
} while (dwExit == STILL_ACTIVE);
 
CloseHandle(pi.hThread);
CloseHandle(pi.hProcess);
 
//Здесь читаем из дочернего процесса ReadFilr(hCout[0]
 
CloseHandle(hCout[0]);
CloseHandle(hCin[1]);
Yandex
Объявления
22.03.2016, 18:45     Как получить результат выполнение system()?
Ответ Создать тему
Опции темы

Текущее время: 06:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru