Сетенв за процесс? - PullRequest
       11

Сетенв за процесс?

0 голосов
/ 02 февраля 2012

Я задаю имя файла динамически, используя setenv в качестве следующего:

setenv("file.name",filename.c_str,1);

Мне любопытно, если это на процесс?

Если у меня несколько процессов, выполняющих этот код, но с разными именами файлов, будут ли какие-либо конфликты?

Допустим, у меня есть процесс 1

setenv("file.name",filename1.c_str,1);  

и процесс 2

setenv("file.name",filename1.c_str,1);  

Будут ли у меня проблемы с этим?

Спасибо.

Ответы [ 3 ]

2 голосов
/ 02 февраля 2012

Среда, которую вы устанавливаете с помощью setenv(), относится к процессу. По сути, это просто область памяти в вашем процессе. По крайней мере, это то, что делает в системах UNIX. В отличие от getenv() он не является частью стандарта C или C ++, но является частью POSIX. То, что он делает в не-POSIX системах, если оно существует, может быть чем-то другим.

0 голосов
/ 02 февраля 2012

Насколько мне известно, во всех современных операционных системах каждый процесс имеет отдельный блок среды, который обычно создается при создании процесса.(например, во время NtCreateProcess() в системе Windows) или эквивалент для Linux / Unix / Other._putenv() будет работать на Windows, тогда как setenv() будет работать на Linux / Unix.

0 голосов
/ 02 февраля 2012

Переменные среды зависят от платформы. Я не думаю, что setenv () работает с Windows, поэтому, если вы говорите о программе, работающей в Linux, у вас все будет хорошо. setenv () устанавливает переменные окружения с областью действия процесса (и, конечно, совместно используемой для разветвленных потоков).

...