2015-02-16 2 views
1

CreateProcess содержит структуру PROCESS_INFORMATION, которая определяет, какой идентификатор процесса был выбран для созданного процесса.C++ указывает идентификатор процесса при создании процесса

Как указать, какой идентификатор процесса для процесса использовать при его создании?

+0

Зачем вам это нужно? Озадаченный. –

ответ

6

Вы просто не можете указать идентификатор процесса. Он выбирается операционной системой.

Представьте, что вам разрешено указывать идентификатор процесса. Os должен заблокировать структуру внутреннего списка процессов, чтобы узнать, есть ли идентификатор процесса. А если нет, то для предотвращения создания другого процесса с тем же идентификатором. Это, конечно, увеличивает сложность ядра без реального выигрыша для программиста.

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

-1

В функции CreateProcess PROCESS_INFORMATION не является входным параметром. Это параметр вывода функции. Таким образом, независимо от идентификатора процесса, который вы пытаетесь назначить, этот параметр будет переопределен ядром. Проверьте пример использования в https://msdn.microsoft.com/en-us/library/windows/desktop/ms682512(v=vs.85).aspx.

Смежные вопросы