0 / 0 / 0
Регистрация: 29.04.2014
Сообщений: 185
|
|
Не понимаю, зачем нужны переменные среды и командная строка12.07.2015, 12:16. Показов 4610. Ответов 6
Метки нет Все метки)
(
Объясните, пожалуйста на пальцах какой прок от командной строки и переменных окружения. Я читаю Рихтера и тут описано что они есть и как ими манипулировать, но какой практический толк от этой информации?
Спасибо! Добавлено через 15 часов 24 минуты Возможно, у меня были галлюцинации в 3 часу ночи, после просмотра СайлентХил. Но тут были 2 ответа в которых содержались ссылки на схожие темы в которых в пылу дискуссий излагали ответы на мои вопросы. Удалили?
0
|
12.07.2015, 12:16 | |
Ответы с готовыми решениями:
6
Не понимаю в чем дело, сильно тупит командная строка в windows 10 Зачем нужны массивы, если есть обычные переменные? Переменные среды - II |
![]() 71 / 71 / 58
Регистрация: 12.12.2013
Сообщений: 420
|
|
15.07.2015, 15:44 | |
Командная строка. Вслушайтесь! "Командная", то есть, выполняет команды. Допустим, вы решили скомпилировать исходники, ваши действия: Открыть командную строку, найти исходник, ввести команду "cl example.cpp", и если компилятор установлен, прописан в переменные среду, то операционная система выполнит нужную операцию. Переменные среды для того и нужны, чтобы система знала где искать ту или иную программу.
0
|
![]() ![]() |
|
15.07.2015, 15:51 | |
А также переменные среды могут использоваться при выполнении команды и влиять на её результат.
По поводу СайлентХилла - для незалогинившихся и новичков форум выглядит немного иначе:
1
|
![]() ![]() ![]() |
|||||||||||||||||||||||||||||||||||||
20.07.2015, 22:29 | |||||||||||||||||||||||||||||||||||||
![]() Решение
MMt, заходите к нам в раздел: https://www.cyberforum.ru/cmd-bat/
Там можно потрогать и руками, и ногами, и посмотреть, и пощупать -)) Скажем так, командная строка - это как один из вариантов связующего звена между процессами*. *Говоря о процессах, подразумеваются, что они еще не запущены, а только будут. Вариантов ее использования чаще всего 2: 1) ввод команд непосредственно в интерпретатор cmd (Win + R, cmd, каждую команду подтвержать клавишей ENTER). 2) написание пакетного файла (батника (Windows Batch)). Это простой текстовый файл (обычно, в ANSI или OEM) с расширением .cmd или .bat). Каждая команда пишется с новой строки (как правило). Как образуется связь? 1) передачей потока данных через канал или перенаправление из файла. Пример:
example.cpp - переданный аргумент. Соответственно в C++, argv[1], будет содержать тот самый аргумент, а argc - их общее кол-во. 3) Через переменные окружения. Поговорим далее... 4) Прочие примитивные способы, такие как запись во внешний файл, а затем считывание его другим процессом (синхронность естественно обязательна). Ком. строка позволяет реализовать ожидание завершения процесса например, так:
Но возможности ком. строки не ограничиваются вызовом готовых программ. В ней есть также несколько встроенных команд, простейшая математика, а в папке c:\windows\system32 достаточно консольных утилит на разный вкус, откуда можно получить доступ как к файловой системе, так и к реестру, WMI... Но это тянет на большую отдельную тему. Частично пытались объять ее здесь. На счет переменных окружения. Они есть у любого процесса. Environment variables Block. Если внимательно почитаете на MSDN о функции CreateProcess, то узнаете про их наследование, а также возможность задать процессу свой набор переменных окружения. Связь с командной строкой здесь вот какая. Она умеет напрямую манипулировать переменными окружения процесса (в данном случае, cmd.exe). Соответственно все процессы, которые из-под нее будут стартовать, также наследуют этот блок (если не блокировать спец. ключами). Введите в интерпретаторе команду set и увидите эти переменные. На счет - зачем нужны переменные среды? Целей их использования довольно много. Из тех, что скажу сразу навскидку: - есть специальные переменные, такие как "Path". Она задает список путей, по которым будет происходить поиск исполняемого файла, если в командной строке опустить (не указывать) полный путь к нему. TEMP - используется многими программами как путь к папке, где можно складировать временные файлы. Вообщем введите команду set, дальше поймете. - Есть множество переменных, указывающий на путь к специальным папкам. Разработчики часто используют их, что не есть правильно, т.к. легко позволит осуществить атаку на приложение. Верным способом является использование функции SHGetFolderPath / SHGetKnownFolderPath и прочих особых, как GetWindowsDirectory. - управление слоями совместимости (app compatibility layers). Ну а в самом интерпретаторе cmd - эти переменные является чем то вроде аналога глобальных переменных ЯВУ. Тем не менее существуют механизмы виртуализации, которые позволяют очистить измененный блок переменных процесса cmd.exe Добавлено через 7 часов 6 минут Про самое главное забыл сказать - связь в обратную сторону. Пункт 1. После завершения работы программа может устанавливать код возврата, например: 1) через указание числа, возвращаемого главной функцией (main):
Этот код затем легко получить из командной строки:
консольный архиватор вернул код неудачного завершения (все что не равно 0 считается неудачей, обычно), тогда мы можем закодить пакетный файл прервать дальнейшие действия, а если УСПЕХ сборки, то к примеру, отправить наш собранный бинарник на проверку в VirusTotal (очередной скрипт). В пакетном файле будет выглядеть очень просто:
|| - выполнить команду справа, если код возврата слева НЕУДАЧА (не 0). Пункт 2. CMD умеет делать разбор консольного вывода программы. Если у Вас тип приложения консольное, то посредством:
1) на экран консоли 2) для синтаксического разбора циклу FOR батника, который в зависимости от текста предпримет те или иные действия (по завершению работы программы, т.е. неинтерактивно). На счет переменных окружения можете еще почитать статью от Вадима Стеркина и spe******t: Переменные среды в командной строке (но там больше общие понятия, не связанные с ЯП). Вспомнил также, что переменные процесса также иногда используют для передачи данных от потока к родительскому процессу при синхронном подходе. Это не очень хорошая практика тем не менее имеет право на существование, если автор понимает все риски и знает, как это использовать правильно.
2
|
0 / 0 / 0
Регистрация: 29.04.2014
Сообщений: 185
|
|
21.07.2015, 22:21 [ТС] | |
ух, мне на неделю материала спасибо пошел пробовать)))
0
|
21.07.2015, 22:21 | |
Помогаю со студенческими работами здесь
7
Переменные среды Переменные среды переменные среды Переменные среды Переменные среды Windows Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Опции темы | |
|
Новые блоги и статьи
![]() |
||||
Unity 4D
GameUnited 13.06.2025
Четырехмерное пространство. . . Звучит как что-то из научной фантастики, правда? Однако для меня, как разработчика со стажем в игровой индустрии, четвертое измерение давно перестало быть абстракцией из. . .
|
SSE (Server-Sent Events) в ASP.NET Core и .NET 10
UnmanagedCoder 13.06.2025
Кажется, Microsoft снова подкинула нам интересную фичу в новой версии фреймворка. Работая с превью . NET 10, я наткнулся на нативную поддержку Server-Sent Events (SSE) в ASP. NET Core Minimal APIs. Эта. . .
|
С днём независимости России!
Hrethgir 13.06.2025
Решил побеседовать, с утра праздничного дня, с LM о завоеваниях. То что она написала о народе, представителем которого я являюсь сам сначала возмутило меня, но дальше только смешило. Это чисто. . .
|
Лето вокруг.
kumehtar 13.06.2025
Лето вокруг.
Наполненное бурями и ураганами событий. На фоне магии Жизни, священной и вечной, неумелой рукой человека рисуется панорама душевного непокоя.
Странные серые краски проникают и. . .
|
Популярные LM модели ориентированы на увеличение затрат ресурсов пользователями сгенерированного кода (грязь -заслуги чистоплюев).
Hrethgir 12.06.2025
Вообще обратил внимание, что они генерируют код (впрочем так-же ориентированы разработчики чипов даже), чтобы пользователь их использующий уходил в тот или иной убыток. Это достаточно опытные модели,. . .
|
Топ10 библиотек C для квантовых вычислений
bytestream 12.06.2025
Квантовые вычисления - это та область, где теория встречается с практикой на границе наших знаний о физике. Пока большая часть шума вокруг квантовых компьютеров крутится вокруг языков высокого уровня. . .
|
Dispose и Finalize в C#
stackOverflow 12.06.2025
Работая с C# больше десяти лет, я снова и снова наблюдаю одну и ту же историю: разработчики наивно полагаются на сборщик мусора, как на волшебную палочку, которая решит все проблемы с памятью. Да,. . .
|
Повышаем производительность игры на Unity 6 с GPU Resident Drawer
GameUnited 11.06.2025
Недавно копался в новых фичах Unity 6 и наткнулся на GPU Resident Drawer - штуку, которая заставила меня присвистнуть от удивления. По сути, это внутренний механизм рендеринга, который автоматически. . .
|
Множества в Python
py-thonny 11.06.2025
В Python существует множество структур данных, но иногда я сталкиваюсь с задачами, где ни списки, ни словари не дают оптимального решения. Часто это происходит, когда мне нужно быстро проверять. . .
|
Работа с ccache/sccache в рамках C++
Loafer 11.06.2025
Утилиты ccache и sccache занимаются тем, что кешируют промежуточные результаты компиляции, таким образом ускоряя последующие компиляции проекта. Это означает, что если проект будет компилироваться. . .
|