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

Можно узнать результат выполнения system()? - C++

Восстановить пароль Регистрация
 
devenge
 Аватар для devenge
8 / 8 / 0
Регистрация: 11.11.2011
Сообщений: 208
25.12.2012, 19:52     Можно узнать результат выполнения system()? #1
Можно узнать результат выполнения system()?
Например, system("abc") вернёт, что код не выполнился, т.к. нет такой команды, а system("MD folder") вернёт что код выполился.

То есть мне надо при нажатии на кнопке выводить ответ команды OK или Произошла ошибка.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Avazart
 Аватар для Avazart
6906 / 5146 / 253
Регистрация: 10.12.2010
Сообщений: 22,646
Записей в блоге: 17
25.12.2012, 19:56     Можно узнать результат выполнения system()? #2
Первое что приходит в голову результат выводи в файл, а затем парсь его
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
25.12.2012, 19:59     Можно узнать результат выполнения system()? #3
Функция возвращает 0 - успешно, -1 (или 1?) - ошибка. Соответственно результат можно присвоить переменной целого типа. В гугле есть информация.
Avazart
 Аватар для Avazart
6906 / 5146 / 253
Регистрация: 10.12.2010
Сообщений: 22,646
Записей в блоге: 17
25.12.2012, 20:27     Можно узнать результат выполнения system()? #4
http://www.cplusplus.com/reference/cstdlib/system/
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
25.12.2012, 20:39     Можно узнать результат выполнения system()? #5
Цитата Сообщение от BumerangSP Посмотреть сообщение
-1 (или 1?) - ошибка.
Да неужели?!

Добавлено через 1 минуту
devenge, смотрите ошибку в errno
Avazart
 Аватар для Avazart
6906 / 5146 / 253
Регистрация: 10.12.2010
Сообщений: 22,646
Записей в блоге: 17
25.12.2012, 20:42     Можно узнать результат выполнения system()? #6
От туда
If command is not a null pointer, the value returned depends on the system and library implementations, but it is generally expected to be the status code returned by the called command, if supported.
Добавлено через 1 минуту
Только я не понял что надо именно узнать ? запустилась ли прога? или результат её выполнения?
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
25.12.2012, 20:47     Можно узнать результат выполнения system()? #7
go, что Вас удивляет?
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
25.12.2012, 20:52     Можно узнать результат выполнения system()? #8
Цитата Сообщение от BumerangSP Посмотреть сообщение
go, что Вас удивляет?
Я эту часть процитировал.
Цитата Сообщение от BumerangSP Посмотреть сообщение
-1 (или 1?) - ошибка.
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
25.12.2012, 20:58     Можно узнать результат выполнения system()? #9
см. вложение
Миниатюры
Можно узнать результат выполнения system()?  
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
25.12.2012, 21:11     Можно узнать результат выполнения system()? #10
BumerangSP,
If command is a null pointer, the function returns a non-zero value in case a command processor is available and a zero value if it is not.

If command is not a null pointer, the value returned depends on the system and library implementations, but it is generally expected to be the status code returned by the called command, if supported.
devenge
 Аватар для devenge
8 / 8 / 0
Регистрация: 11.11.2011
Сообщений: 208
25.12.2012, 21:16  [ТС]     Можно узнать результат выполнения system()? #11
Всем спасибо! Решил таким способом.

C++
1
2
3
4
5
6
7
// Windows Forms Application
int cmd = system("convert");
 
if( cmd == 0 )
    label1->Text = L"Код выполнен";
else
    label1->Text = L"Произошла ошибка";
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
25.12.2012, 21:17     Можно узнать результат выполнения system()? #12
Цитата Сообщение от devenge Посмотреть сообщение
Всем спасибо! Решил таким способом.
Поздравляю. Все правильно.
BumerangSP
25.12.2012, 21:20
  #13

Не по теме:

go, ну, разве что на разных компиляторах. Это да. Оно ж и в некоторых сишных библиотеках код возвращает.

Avazart
 Аватар для Avazart
6906 / 5146 / 253
Регистрация: 10.12.2010
Сообщений: 22,646
Записей в блоге: 17
25.12.2012, 21:33     Можно узнать результат выполнения system()? #14
Если речь про успешность запуска, то можно ShеllExecute() запускать и не парится, а потом GetLastError() если ошибка...
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
25.12.2012, 21:41     Можно узнать результат выполнения system()? #15
Цитата Сообщение от Avazart Посмотреть сообщение
Если речь про успешность запуска,
WinExec
А лучше CreateProcess
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.12.2012, 22:05     Можно узнать результат выполнения system()?
Еще ссылки по теме:

C++ Стоит ли проверять результат выполнения new?
C++ Каков будет результат выполнения следующего кода?
C++ Опишите результат выполнения указанного кода

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

Или воспользуйтесь поиском по форуму:
Avazart
 Аватар для Avazart
6906 / 5146 / 253
Регистрация: 10.12.2010
Сообщений: 22,646
Записей в блоге: 17
25.12.2012, 22:05     Можно узнать результат выполнения system()? #16
Цитата Сообщение от go Посмотреть сообщение
WinExec
А лучше CreateProcess
А это от того что нужно... если речь только про запуск то ShellExecute спарвится,
If the function succeeds, it returns a value greater than 32. If the function fails, it returns an error value that indicates the cause of the failure. The return value is cast as an HINSTANCE for backward compatibility with 16-bit Windows applications. It is not a true HINSTANCE, however. It can be cast only to an int and compared to either 32 or the following error codes below.
http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx

а если нужно ждать окончание выполнения программы то CreateProcess() с ф-циями ожидания ( WinExec() устарела )
Yandex
Объявления
25.12.2012, 22:05     Можно узнать результат выполнения system()?
Ответ Создать тему
Опции темы

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