Как установить переменную env и запустить процесс в C? - PullRequest
2 голосов
/ 30 августа 2010

Как установить переменную среды и запустить процесс в ANSI C для Windows? Если возможно, я хочу избегать использования любого Windows API для этого.

Ответы [ 4 ]

3 голосов
/ 30 августа 2010

В чистом ANSI C это невозможно.Здесь нет ни функций setenv, ни putenv, и даже отсутствует семейство функций execv*.

Вместо этого я предлагаю вам написать небольшой интерфейс вкак вы хотите (что, возможно, выглядит как execve) и зависит от системы.Таким образом, вы можете легко изменить оболочку при переносе программы в среду, отличную от Windows.

1 голос
/ 30 августа 2010

Предполагая, что переносимость является вашей причиной для указания ANSI C, вы можете делать именно то, что вы хотите, с помощью функции POSIX _execve:

Это переносимая функция, которая порождает новый дочерний процесс и позволяет вам предоставлять массив настроек среды.

0 голосов
/ 30 августа 2010

Чтобы запустить процесс с помощью Win32 API, используйте функцию CreateProcess , как указано в kayrick.

Для установки среды вы можете использовать SetEnvironmentVariable .Это оба Win32 API.

Вы также можете взглянуть на GetEnvironmentVariable .

Надеюсь, это поможет.

0 голосов
/ 30 августа 2010

Вы можете использовать функцию CreateProcess из WInAPI, чтобы начать новый процесс

...