2010-08-30 2 views
2

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

+0

Что вы хотите, чтобы «избежать использования каких-либо API окон»? Для запуска процессов требуется использование API * some * kind ... вы говорите, что хотите использовать только стандартный C? –

+0

Да, стандартный ANSI C. Хотите избежать ShellExecute или чего-то еще –

+0

Это не было _ANSI_ C в течение длительного времени, ANSI только резиновые штампы ISO в настоящее время :-) – paxdiablo

ответ

1

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

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

3

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

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

+1

Visual C++ имеет '_execve' (с лидирующим подчеркиванием), но это, конечно, не ANSI C. –

+0

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

0

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

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

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

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