Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Блок конфигурации 
V
    Опции темы
TGrey
Дата 1.2.2011, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 294
Регистрация: 1.12.2007

Репутация: 1
Всего: 1



Добрый день, такой не большой вопрос, имеется функция создание потока
Код

CreateProcess( NULL, // Нет имени модуля (используется командная строка).
"MyChildProcess",     // Командная строка.
NULL,                 // Дескриптор процесса не наследуемый.
NULL,                 // Дескриптор потока не наследуемый.
FALSE,                // Установим наследование дескриптора в FALSE.
0,                    // Флажков создания нет.
NULL,                 // Используйте блок конфигурации родителя.
NULL,                 // Используйте стартовый каталог родителя.
&si,                  // Указатель на структуру STARTUPINFO.
&pi )                 // Указатель на структуру PROCESS_INFORMATION.
)


Что такое блок конфигурации, как его установить и для чего он? Написано, что он представлен в виде name=value, но как, где и зачем я ничего не нашел.
PM MAIL   Вверх
GremlinProg
Дата 1.2.2011, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 99
Всего: 106



Цитата(TGrey @  1.2.2011,  16:17 Найти цитируемый пост)
Что такое блок конфигурации, как его установить и для чего он? Написано, что он представлен в виде name=value, но как, где и зачем я ничего не нашел.

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

из программы эти параметры можно получить с помощью getenv или третим параметром функции main

Это сообщение отредактировал(а) GremlinProg - 1.2.2011, 14:25


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
xvr
Дата 1.2.2011, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 40
Всего: 223



Цитата(TGrey @  1.2.2011,  14:17 Найти цитируемый пост)
Что такое блок конфигурации,
Так 'Environment Variables Block' еще никто не называл  smile 
Это набор переменных окружения для создаваемого процесса (то, что выводится по команде set в консоли cmd)
Если этот параметр задан как NULL, то в создаваемый процесс передается копия всех переменных окружения з текущего процесса

Из MSDN:
Цитата

lpEnvironment [in, optional]

    A pointer to the environment block for the new process. If this parameter is NULL, the new process uses the environment of the calling process.

    An environment block consists of a null-terminated block of null-terminated strings. Each string is in the following form:

    name=value\0

    Because the equal sign is used as a separator, it must not be used in the name of an environment variable.

    An environment block can contain either Unicode or ANSI characters. If the environment block pointed to by lpEnvironment contains Unicode characters, be sure that dwCreationFlags includes CREATE_UNICODE_ENVIRONMENT. If this parameter is NULL and the environment block of the parent process contains Unicode characters, you must also ensure that dwCreationFlags includes CREATE_UNICODE_ENVIRONMENT.

    The ANSI version of this function, CreateProcessA fails if the total size of the environment block for the process exceeds 32,767 characters.

    Note that an ANSI environment block is terminated by two zero bytes: one for the last string, one more to terminate the block. A Unicode environment block is terminated by four zero bytes: two for the last string, two more to terminate the block.



PM MAIL   Вверх
TGrey
Дата 1.2.2011, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 294
Регистрация: 1.12.2007

Репутация: 1
Всего: 1



Я вставил строку, как нашел на русском) Не сам придумывал.
Хорошо, а как(для чего) они используются? Я не разу не встречался с заданием этих параметров, я так понимаю, все просто используют командную строку, если нужно что-то передать в процесс?
PM MAIL   Вверх
xvr
Дата 1.2.2011, 21:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 40
Всего: 223



Цитата(TGrey @  1.2.2011,  16:17 Найти цитируемый пост)
все просто используют командную строку, если нужно что-то передать в процесс? 

В основном да, но бывают особые нужды  smile В основном переменные окружения используются для модификации поведения программы. Например имя (login) текущего пользователя можно узнать из переменной USERNAME, а путь к его профилю (папке) - из USERPROFILE
Какое нибудь приложение может включить свой отладочный режим, если найдет определенную переменную в окружении, и т.д. и т.п.

PM MAIL   Вверх
GremlinProg
Дата 2.2.2011, 09:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 99
Всего: 106



Цитата(TGrey @  1.2.2011,  18:17 Найти цитируемый пост)
Я не разу не встречался с заданием этих параметров, я так понимаю, все просто используют командную строку

приложения CGI, например, только этим окружением и пользуются для обмена данными: http://www.firststeps.ru/cgi/r.php?2


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
TGrey
Дата 2.2.2011, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 294
Регистрация: 1.12.2007

Репутация: 1
Всего: 1



Спасибо за ответы. Сегодня еще преподаватель растолковал, я изначально не понял, что они работают, по типу глобальных переменных в системе, подумал, что они должны указываться для каждого ЕХЕ отдельно.
PM MAIL   Вверх
xvr
Дата 2.2.2011, 22:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 40
Всего: 223



Цитата(TGrey @  2.2.2011,  16:28 Найти цитируемый пост)
что они работают, по типу глобальных переменных в системе, 
Ну это не совсем так. Они существуют как раз для каждого exe. Когда один exe запускает другой (а все exe именно так и запускаются), он (родитель) передает потомку копию своих переменных (в общем случае). В процессе работы exe может читать свои переменные и писать в них. Соответственно при запуске им другого exe это 'другое' exe получит измененную копию переменных окружения. 
Все процессы в системе в конце концов стартуют из одного корневого exe.

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

Ну и еще те, которые при старте обнуляют все переменные окружения и заполняют из заново.


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0489 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.