14
A
回答
21
從setenv()
手動輸入:
概要
#include <stdlib.h> int setenv(const char *envname, const char *envval, int overwrite);
說明
的SETENV()函數將更新或在調用進程的環境中添加的變量。 envname參數指向一個字符串,其中包含一個環境變量的名稱 被添加或更改。環境變量應設置爲envval指向的值。如果envname指向包含'='字符的字符串,該函數將失敗。如果 由envname命名的環境變量已經存在,並且覆蓋的值爲非零,則函數應返回成功並更新環境。如果由envname命名的環境變量 已經存在,並且覆蓋值爲零,則函數將返回成功,環境保持不變。如果應用程序修改了environ或它指向的指針,setenv()的行爲是未定義的。 setenv()函數將更新指向environ 指向的列表。
由envname和envval描述的字符串被該函數複製。
setenv()函數不需要是可重入的。不需要重入的函數不需要是線程安全的。
返回值
成功完成後,返回零。否則,返回-1,錯誤設置爲錯誤,環境不變。
所以,你應該叫
setenv("ROS_HOSTNAME","xxx",1); // does overwrite
或
setenv("ROS_HOSTNAME","xxx",0); // does not overwrite
爲你的情況。取決於,如果你想覆蓋一個可能存在的定義。
注:
不能使用setenv()
從你的過程導出變量調用進程(殼)! 使用fork創建的子進程將繼承當前進程環境定義,因此也會繼承您的更改和添加。
0
此處可用於SETENV函數簽名
#include <stdlib.h>
INT SETENV(常量字符* ENVNAME,常量字符* envval,INT改寫);
鏈接:http://pubs.opengroup.org/onlinepubs/009695399/functions/setenv.html
你的情況,你怎麼稱呼它是這樣的:
setenv("ROS_HOSTNAME", "xxx", true);
最後一個boolean參數表明,如果要覆蓋環境變量的值,如果它已經存在。
0
做這樣:
setenv("ROS_HOSTNAME", "xxx", true);
注意它的簡介,以及:
#include <stdlib.h>
int setenv(const char *envname, const char *envval, int overwrite);
見this link,詳細瞭解setenv()
。
相關問題
- 1. 如何在apache中使用setEnv變量?
- 2. 如何使用setenv在bash中設置環境變量?
- 3. 如何使用SetEnv讀取Apache中的變量?
- 4. matlab是否保留並導出由setenv()設置的變量?
- 5. 使用Angular在JavaScript中導出變量?
- 6. 如何在node.js中導出env變量
- 7. 如何在生成文件中使用導出的變量?
- 8. 如何在asp:HyperLinkField中使用C#變量?
- 9. setenv變量與launchd.conf中的空格?
- 10. 在makefile中使用setenv
- 11. CloudFormation如何導出變量
- 12. 如何在C++中的變量中使用變量?
- 13. systemd-run在使用時未設置環境變量--setenv
- 14. 在shell中導出變量
- 15. 如何使用變量在C#中標識另一個變量?
- 16. 如何使用一個變量,在C++中另一個變量
- 17. 如何使用變量但從未在C中定義變量?
- 18. 如何在變量中使用變量?
- 19. 如何將整數值導出到環境變量中c
- 20. C++標準庫 - std :: setenv vs setenv
- 21. setenv()更新PATH環境變量
- 22. 變量Errno :: EINVAL:無效的參數 - SETENV
- 23. 二進制環境變量和setenv()
- 24. 如何在Windows中導出和導入環境變量?
- 25. 使用SetEnv或php.ini存儲數據庫變量的安全性如何?
- 26. 如何在導出新變量時組合變量名稱?
- 27. 導出變量?
- 28. 如何通過URL參數使用SetEnv
- 29. 使用BabelJS導出默認變量
- 30. 使用casperjs將變量導出到csv
爲什麼你在問題的上下文中提到了[tag:command-line]標籤?你需要'出口'_在哪裏?請詳細說明一下! –
在什麼情況下,這些環境變量需要可見?如果他們只需要在調用'setenv'的程序中可見,就沒關係。如果你需要它們在運行程序後在你的shell中可見*請說出來;有(間接的)方法可以做到這一點,但除非你提出這個問題,否則我不會回答這個問題。 –
「導出」是* shell功能*。 'setenv()'總是「導出」'environ' /'envp',除非分叉的孩子通過自定義的'envp',即'execle()'。 – Barry