Мне нужно экспортировать несколько переменных, чтобы они выглядели следующим образом в командной строке
export ROS_HOSTNAME=xxx
Как мне использовать setenv () в C ++ для достижения этой цели?
Благодарю.
От setenv()
ручной ввод:
СИНТАКСИС
#include <stdlib.h> int setenv(const char *envname, const char *envval, int overwrite);
ОПИСАНИЕ
Функция setenv () должна обновить или добавить переменную в среде вызывающего процесса. Аргумент envname указывает на строку, содержащую имя переменной среды, для
быть добавлен или изменен. Переменная окружения должна быть установлена на значение, на которое указывает envval. Функция должна завершиться ошибкой, если envname указывает на строку, которая содержит символ ‘=’. Если
переменная окружения с именем envname уже существует, и значение overwrite не равно нулю, функция должна возвращать успех, и среда должна обновляться. Если среда
переменная с именем envname уже существует, а значение overwrite равно нулю, функция должна возвращать успех, а среда должна оставаться неизменной.Если приложение изменяет окружение или указатели, на которые оно указывает, поведение setenv () не определено. Функция setenv () должна обновить список указателей, к которым
точки.Строки, описанные envname и envval, копируются этой функцией.
Функция setenv () не обязательно должна быть реентерабельной. Функция, которая не требует повторного входа, не обязательно должна быть поточно-ориентированной.
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
После успешного завершения возвращается ноль. В противном случае должно быть возвращено -1, ошибочно установлено, чтобы указать ошибку, и среда должна быть неизменной.
Так что вы должны позвонить
setenv("ROS_HOSTNAME","xxx",1); // does overwrite
или же
setenv("ROS_HOSTNAME","xxx",0); // does not overwrite
для вашего случая. Зависит, если вы хотите перезаписать возможно существующее определение.
НОТА:
Вы не можете использовать setenv()
экспортировать переменные из вашего процесса в вызывающий процесс (оболочку)!
Дочерние процессы, созданные с помощью fork, будут наследовать определения среды текущих процессов, а также ваши изменения и дополнения.
Здесь подпись для функции setenv
#include <stdlib.h>
int setenv (const char * envname, const char * envval, int overwrite);
Ссылка на сайт : http://pubs.opengroup.org/onlinepubs/009695399/functions/setenv.html
В вашем случае вы называете это так:
setenv("ROS_HOSTNAME", "xxx", true);
последний логический аргумент указывает, хотите ли вы перезаписать значение переменных среды, если оно уже существует.
Делай так:
setenv("ROS_HOSTNAME", "xxx", true);
Обратите внимание, что это также краткий обзор:
#include <stdlib.h>
int setenv(const char *envname, const char *envval, int overwrite);
Увидеть эта ссылка для более подробной информации о setenv()
,