2012-02-01 3 views
0

я м Ассинг имя файла динамически с помощью SetEnv в folows:setenv за процесс?

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

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

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

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

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

и процесс 2

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

бы я иметь какие-либо проблемы, делая это?

Спасибо.

ответ

2

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

+0

спасибо. рад видеть никаких тяжелых переживаний из последнего вопроса. – DarthVader

+0

Прошу прощения за это событие - ответ, который я дал, не подходит для ситуации. –

0

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

0

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

+0

Я вижу, что 'setenv()' является частью POSIX, но я не видел его на C или C++. –

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