что такое system pause в с

вот вопрос, который я не совсем понял:

команды system(«pause»); преподается новым программистам как способ приостановить программу и дождаться продолжения ввода с клавиатуры. Однако, похоже, многие опытные программисты неодобрительно относятся к этому как к чему-то, что не следует делать в той или иной степени.

Я, сам новый программист без формального обучения программированию. Я использую его, потому что меня научили им пользоваться. Чего я не понимаю, так это того, что если это не то, что можно использовать, тогда почему меня учили использовать это? Или, с другой стороны, все не так уж плохо?

что вы думаете по этому поводу?

12 ответов

Он нахмурился, потому что это специфичный для платформы хак, который не имеет ничего общего с фактическим обучением программированию, но вместо этого, чтобы обойти функцию IDE/OS-окно консоли, запущенное из Visual Studio, закрывается, когда программа закончила выполнение, и поэтому новый пользователь не может видеть выход своей новой программы.

Bodging in System («pause») запускает программу командной строки Windows «pause» и ждет ее завершения, прежде чем продолжить выполнение программа-окно консоли остается открытым, поэтому вы можете прочитать вывод.

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

это медленно. Это зависит от платформы. Это небезопасно.

Что делать, если программа под названием «пауза» была помещена в путь пользователя? Просто вызов системы («пауза») гарантирует только выполнение программы под названием «пауза «(надеюсь, что у вас нет ваш исполняемый файл с именем «пауза»!)

в основном: зачем вводить так много потенциальных проблем, когда вы можете просто добавить две строки кода и один включить и получить много более гибкий механизм?

простой getchar () должен делать все в порядке.

В общем, он должен приостановить выполнение программ и сделать системный вызов и выделить ненужные ресурсы, когда вы можете использовать что-то простое, как cin.получить.)( Люди используют System («пауза»), потому что они хотят, чтобы программа ждала, пока они не нажмут enter, чтобы они могли видеть свой вывод. Если вы хотите, чтобы программа ждала ввода, есть встроенные функции для того, что также кросс-платформенные и менее требовательные.

дальнейшее объяснение в этой статья.

используя system(«pause»); Это плохая практика™, потому что

это проблематично и раздражает
при запуске программы из командной строки. Для интерактивного выполнения вы должны нажать клавишу в конце без какой-либо цели. И для использования в автоматизации какой-то задачи, что pause очень нежелательно!

на внутренний cmd.exe команда и не может быть переопределенным, как ошибочно утверждается по крайней мере в одном другом ответе. Т. е. это не риск для безопасности, и утверждение, что AV-программы диагностируют его как таковое, столь же сомнительно, как и утверждение о переопределении команды (в конце концов, программа c++ вызывает system в состоянии сделать все, что может сделать интерпретатор команд, и многое другое). Кроме того, хотя этот способ приостановки чрезвычайно неэффективен по обычным стандартам программирования на C++, это не имеет никакого значения в конце новичка программа.

можно использовать std::cin.get() С iostream :

потому что это не портативный.

как указано в других ответах, есть много причин, которые вы можете найти, чтобы избежать этого. Все сводится к одной причине, которая делает остальное спорным. The System() функция по своей сути небезопасна / ненадежна и не должна вводиться в программу без необходимости.

для задания студента это условие никогда не выполнялось, и по этой причине я бы провалил задание, даже не запустив программу, если бы присутствовал вызов этого метода. (Это было ясно из начать.)

для меня вообще не имеет смысла ждать, прежде чем выходить без причины. Программа, которая сделала свою работу, должна просто закончить и передать свои ресурсы обратно своему создателю.

также не стоит молча ждать в темном углу после рабочего дня, ожидая, когда кто-то наклонит плечо.

вот одна из причин, по которой вы не должны использовать его: это будет раздражать большинство антивирусных программ, работающих на Windows, Если вы передаете программу на другую машину, потому что это угроза безопасности. Даже если ваша программа состоит только из простого cout Это тяжелый ресурс, и программа получает доступ к команде cmd, которую антивирусы рассматривают как угрозу.

профессионал в использовании системы («пауза»); при создании небольших частей вашей программы для отладки ее самостоятельно. если вы используете его для получения результатов переменных до и после каждого процесса, чтобы убедиться, что они работают правильно.

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

ни в коем случае вы не хотите использовать это в приложении после того, как вы протестировали его и заверили, что он работает правильно. Однако это позволяет отслеживать все, что происходит, как это происходит. Не используйте его для приложений конечного пользователя вообще.

все дело в стиле. Это полезно для отладки, но в противном случае он не должен использоваться в окончательной версии программы. Это действительно не имеет значения в вопросе памяти, потому что я уверен, что те ребята, которые изобрели систему(«пауза»), ожидали, что она будет использоваться часто. С другой стороны, компьютеры регулируют свою память для всего остального, что мы используем на компьютере, и это не представляет прямой угрозы, такой как динамическое распределение памяти, поэтому я бы рекомендовал его для отладка кода, но ничего больше.

Источник

Вот вопрос, который я не совсем понимаю:

Команда system(«pause»); преподается новым программистам как способ приостановить программу и дождаться продолжения ввода с клавиатуры. Однако многие опытные программисты, похоже, не одобряют это, как то, что не следует делать в той или иной степени.

Некоторые говорят, что это нормально. Некоторые говорят, что его можно использовать только тогда, когда вы заперты в своей комнате и никто не смотрит. Некоторые говорят, что они лично придут к вам домой и убьют вас, если вы им воспользуетесь.

Я сам новый программист без формального обучения программированию. Я использую его, потому что меня научили этим пользоваться. Я не понимаю, что если это не то, что нужно использовать, то почему меня учили этим пользоваться? Или, с другой стороны, все-таки не так уж и плохо?

Что вы думаете по этому поводу?

13 ответов

Лучшей идеей было бы поставить точку останова в конце и отладить ее, но здесь снова есть проблемы.

Простой getchar () подойдет.

Это проблемно и раздражает
при запуске программы из командной строки. Для интерактивного выполнения вы должны нажимать клавишу в конце без какой-либо цели. И для использования в автоматизации некоторых задач, которые pause очень нежелательны!

Таким образом, он должен приостанавливать выполнение программ и выполнять системный вызов и выделять ненужные ресурсы, когда вы могли бы использовать что-то столь же простое, как cin.get (). Люди используют Систему («ПАУЗА»), потому что они хотят, чтобы программа ждала, пока они не нажмут Enter, чтобы они могли увидеть свой вывод. Если вы хотите, чтобы программа ожидала ввода, для этого есть встроенные функции, которые также являются кроссплатформенными и менее требовательными.

Дальнейшее объяснение см. В этой статье.

Вы можете использовать std::cin.get() из iostream :

Потому что он не переносится.

Как указано в других ответах, есть много причин, по которым вы можете избежать этого. Все сводится к одной причине, которая делает остальное спорным. Функция System() по своей природе небезопасна / ненадежна, и ее не следует вводить в программу без необходимости.

Для студенческого задания это условие никогда не выполнялось, и по этой причине я бы провалил задание, даже не запустив программу, если бы присутствовал вызов этого метода. (Это было ясно с самого начала.)

Для меня вообще нет смысла ждать перед выходом без причины. Программа, которая выполнила свою работу, должна просто завершить работу и передать свои ресурсы ее создателю.

Также не стоит молча ждать в темном углу после рабочего дня, ожидая, что кто-то опрокинет плечо.

Неверно, потому что это часть Windows API и поэтому не будет работать в других операционных системах.

Вам следует попробовать использовать только объекты из стандартной библиотеки C ++. Лучшим решением будет написать:

Вот одна из причин, по которой вы не должны его использовать: это вызовет раздражение у большинства антивирусных программ, работающих в Windows, если вы передадите программу другому компьютеру, потому что это угроза безопасности. Даже если ваша программа состоит только из простого cout Это ресурсоемкий процесс, и программа получает доступ к команде cmd, которую антивирусы считают угрозой.

Все дело в стиле. Это полезно для отладки, но в остальном его не следует использовать в окончательной версии программы. На самом деле это не имеет значения по поводу памяти, потому что я уверен, что те ребята, которые изобрели систему («пауза»), ожидали, что она будет часто использоваться. С другой стороны, компьютеры в любом случае ограничивают свою память для всего остального, что мы используем на компьютере, и это не представляет прямой угрозы, такой как динамическое выделение памяти, поэтому я бы рекомендовал его для отладки кода, но не более того.

Это медленно. Это зависит от платформы. Это небезопасно.

Во-первых: что он делает. Вызов «system» буквально похож на ввод команды в командной строке Windows. Чтобы ваше приложение совершило такой вызов, требуется множество настроек и разборок, а накладные расходы просто смехотворны.

Что, если программа под названием «пауза» была помещена в пользовательский PATH? Просто вызов системы («пауза») гарантирует только выполнение программы с именем «пауза» (надеюсь, что у вас нет исполняемого файла с именем «пауза»!)

По сути: зачем вводить столько потенциальных проблем, если можно просто добавить две строки кода и одну включить и получить гораздо более гибкий механизм?

Плюсы к использованию системы («ПАУЗА»); в то время как создание небольших частей вашей программы предназначено для ее самостоятельной отладки. если вы используете его для получения результатов переменных до и после каждого используемого вами процесса, чтобы убедиться, что они работают правильно.

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

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

Источник

Here’s a question that I don’t quite understand:

The command, system(«pause»); is taught to new programmers as a way to pause a program and wait for a keyboard input to continue. However, it seems to be frowned on by many veteran programmers as something that should not be done in varying degrees.

Some people say it is fine to use. Some say it is only to be used when you are locked in your room and no one is watching. Some say that they will personally come to your house and kill you if you use it.

I, myself am a new programmer with no formal programming training. I use it because I was taught to use it. What I don’t understand is that if it is not something to be used, then why was I taught to use it? Or, on the flip side, is it really not that bad after all?

What are your thoughts on this subject?

что такое system pause в с. Смотреть фото что такое system pause в с. Смотреть картинку что такое system pause в с. Картинка про что такое system pause в с. Фото что такое system pause в с

13 Answers 13

A better idea would be to put a breakpoint at the end and debug it, but that again has problems.

It’s slow. It’s platform dependent. It’s insecure.

What if a program called «pause» was placed into the user’s PATH? Just calling system(«pause») only guarantees that a program called «pause» is executed (hope that you don’t have your executable named «pause»!)

Basically: why introduce so many potential problems when you can simply add two lines of code and one include and get a much more flexible mechanism?

что такое system pause в с. Смотреть фото что такое system pause в с. Смотреть картинку что такое system pause в с. Картинка про что такое system pause в с. Фото что такое system pause в с

a simple getchar() should do just fine.

Using system(«pause»); is Ungood Practice™ because

It’s problematic & annoying
when you run the program from the command line. For interactive execution you have to press a key at the end to no purpose whatsoever. And for use in automation of some task that pause is very much undesired!

It’s not portable.
Unix-land has no standard pause command.

The pause command is an internal cmd.exe command and can’t be overridden, as is erroneously claimed in at least one other answer. I.e. it’s not a security risk, and the claim that AV programs diagnose it as such is as dubious as the claim of overriding the command (after all, a C++ program invoking system is in position to do itself all that the command interpreter can do, and more). Also, while this way of pausing is extremely inefficient by the usual standards of C++ programming, that doesn’t matter at all at the end of a novice’s program.

Источник

Using the system(“pause”) command in C++

что такое system pause в с. Смотреть фото что такое system pause в с. Смотреть картинку что такое system pause в с. Картинка про что такое system pause в с. Фото что такое system pause в с

In this article, we’ll take a look at using the system(“pause”) command in C++.

Before going through this article, note this the system(«pause») command is only available in Windows Systems.

This means that you cannot use this from any Linux / Mac machine.

The system() command

Before going through the system(“pause”) command, let’s understand what system() does.

The system() function performs a call to the Operating System to run a particular command.

Note that we must include the header file.

This is very similar to opening a terminal and executing that command by hand.

If you are having any Linux/Mac machine, you can try the below code.

Possible Output

Now that we’re a bit clear on what system() can do, let’s look at the system(“pause”) command.

Using system(“pause”) command in C++

This is a Windows-specific command, which tells the OS to run the pause program.

This program waits to be terminated, and halts the exceution of the parent C++ program. Only after the pause program is terminated, will the original program continue.

If you’re using a Windows machine, you can run the below code:

Output – From Windows System

As you can observe, the pause command was indeed executed when our if condition i = 5.

After we hit enter, we terminated the pause program, and resumed our loop in C++ program!

Disadvantages of using the system(“pause”) command

The main pitfall of system(“pause”) is that this is platform specific. This does not work on Linux/Mac systems, and is not portable.

While this works as a kind of a hack for Windows systems, this approach may easily cause errors, when you try to run the code on other systems!

Therefore, I would suggest some other alternative ways to pause and resume a program, such as using signal handlers.

Conclusion

In this article, we learned how we could use the system(“pause”) command in C++. For similar content, do go through our tutorial section on C++ programming!

Источник

system () в C / C ++

system () используется для вызова команды операционной системы из программы на C / C ++.

Примечание: для вызова системы необходимо включить stdlib.h или cstdlib.

Используя system (), мы можем выполнить любую команду, которая может быть запущена на терминале, если операционная система позволяет. Например, мы можем вызвать system («dir») в Windows и system («ls»), чтобы вывести список содержимого каталога.

Написание программы на C / C ++, которая компилирует и запускает другую программу?
Мы можем вызвать gcc из нашей программы, используя system (). Ниже приведен код, написанный для Linux. Мы можем легко изменить код для запуска в Windows.

// Программа на C ++, которая компилирует и запускает другой C ++
// программа
#include

using namespace std;

cout «Enter file name to compile » ;

// Создать команду для выполнения. Например, если вход

// Преобразовать строку в const char *, как того требует система

// параметр типа const char *

const char *command = str.c_str();

cout «Compiling file using «

cout «\nRunning file » ;

system () против использования библиотечных функций:
Некоторые общие применения system () в ОС Windows: system («пауза»), которая используется для выполнения команды pause и заставляет экран / терминал ждать нажатия клавиши, и system («cls»), которая используется для экран / терминал чист.

Однако следует избегать вызова системной команды по следующим причинам:

Давайте возьмем простой код C ++ для вывода Hello World, используя систему («пауза») :

// Программа на C ++, которая останавливает экран в конце в ОС Windows
#include

using namespace std;

Вывод вышеуказанной программы в ОС Windows:

Эта программа зависит от ОС и использует следующие тяжелые шаги.

Вместо использования системы («пауза») мы также можем использовать функции, которые изначально определены в C / C ++.

Давайте возьмем простой пример для вывода Hello World с помощью cin.get ():

// Замена system () библиотечной функцией
#include
#include

using namespace std;

cin.get(); // или getchar ()

Таким образом, мы видим, что как system («pause»), так и cin.get () фактически выполняют ожидание нажатия клавиши, но cin.get () не зависит от ОС и не выполняет вышеуказанные действия. приостановить программу.
Аналогично, на языке C getchar () может использоваться для приостановки программы без вывода сообщения «Нажмите любую клавишу для продолжения…».

Распространенный способ проверить, можем ли мы запускать команды, используя system () в ОС?
Если мы передаем нулевой указатель вместо строки для параметра команды, система возвращает ненулевое значение, если командный процессор существует (или система может работать). В противном случае возвращает 0.

// C ++ программа для проверки, можем ли мы запускать команды, используя
// system ()
#include
#include

using namespace std;

cout «Command processor exists» ;

cout «Command processor doesn’t exists» ;

Эта статья предоставлена Subhankar Das. Если вам нравится GeeksforGeeks и вы хотите внести свой вклад, вы также можете написать статью и отправить ее по почте на contrib@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.

Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *