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

Использование std::system() - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.67
GBIT
 Аватар для GBIT
11 / 11 / 1
Регистрация: 05.10.2011
Сообщений: 219
10.04.2012, 23:30     Использование std::system() #1
компилирую в студии 2010. система win7.

C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <Windows.h>
 
int main()
{
    int i=0;
    while(i<1)
    {
        system("cls");
        system("arp -a");       // если эту строчку убрать то все ОК.
        Sleep(5000);
    }
}
все нормально работает. проверяю скомпилированный .exe на winXP - не работает. там просто программа в бесконечном цикле вешается.
если убрать строчку из while. то все работает на XP. ПОЧЕМУ?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
11.04.2012, 00:01     Использование std::system() #2
Нормальная работа в чем заключается?
GBIT
 Аватар для GBIT
11 / 11 / 1
Регистрация: 05.10.2011
Сообщений: 219
11.04.2012, 00:31  [ТС]     Использование std::system() #3
очевидно, что программа должна выводить ARP таблицу и обновлять ее каждые 5 сек.
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
11.04.2012, 04:15     Использование std::system() #4
std::system находится в cstdlib. И нужно так и писать std::system( "cls" );
Попробуйте так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <cstdlib>
 
int main()
{
    int i=0;
    while(i<1)
    {
        std::system("cls");
        std::system("arp -a");       // если эту строчку убрать то все ОК.
        Sleep(5000);
    }
}
Добавлено через 1 час 8 минут
Вообще можно код сократить вот так:
C++
1
2
3
4
5
6
#include <cstdlib>
 
int main() {
    while ( true )
        std::system( "cls && arp -a && sleep 5" );
}
Добавлено через 1 час 10 минут
Единственно последний код будет не правильно работать в XP, так как там по умолчанию не установлена программа sleep.exe. Ее можно получить установив пакет Windows Server 2003 Resource Kit Tools. Если нет желания/возможности это сделать, то прекрасно будет работать код
C++
1
2
3
4
5
6
7
8
9
#include <cstdlib>
#include <windows.h>
 
int main() {
   while ( true ) {
      std::system( "cls && arp -a" );
      Sleep( 5000 );
   }
}
Проверил только что сам на XP.
GBIT
 Аватар для GBIT
11 / 11 / 1
Регистрация: 05.10.2011
Сообщений: 219
11.04.2012, 23:44  [ТС]     Использование std::system() #5
Toshkarik,
по поводу std. Сейчас перепроверил, если честно, то я сам удивился как у меня без него компилировался код..
но тем не менее - проверил, а у меня оказывается и на 7ке тоже код не рабочий. такая же картина. Единственный вариант когда все работает - это я нажимаю ctrl+f5 и вываливается консолька, проверка админских прав, и еще одна консолька в которой все работало.

а библиотека <cstdlib> как-то даже не понадобилась.

все перечисленные вами варианты работают одинаково. одинаково плохо. так же как у меня и было
Gepar
 Аватар для Gepar
1173 / 529 / 20
Регистрация: 01.07.2009
Сообщений: 3,512
11.04.2012, 23:48     Использование std::system() #6
Цитата Сообщение от GBIT Посмотреть сообщение
а библиотека <cstdlib> как-то даже не понадобилась.
Не не понадобилась, а использовалась. Windows.h за вас её подключил.
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
12.04.2012, 00:02     Использование std::system() #7
GBIT, у меня почему то все прекрасно работает, что на 7, что на XP на virtualbox`e. Попробуйте exe, который я скомпилировал в GCC.
Вложения
Тип файла: 7z mytemplate.7z (82.6 Кб, 3 просмотров)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.04.2012, 17:19     Использование std::system()
Еще ссылки по теме:

Использование std::is_nothrow_default_constructible C++
C++ Разобраться почему не компилируется код (использование std::bitset)
Использование std::array внутри пользовательского класса C++

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

Или воспользуйтесь поиском по форуму:
GBIT
 Аватар для GBIT
11 / 11 / 1
Регистрация: 05.10.2011
Сообщений: 219
14.04.2012, 17:19  [ТС]     Использование std::system() #8
Toshkarik,
спасибо, файл и правда работает ровно. неужели дело в компиляторе?
Yandex
Объявления
14.04.2012, 17:19     Использование std::system()
Ответ Создать тему
Опции темы

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