[解決済み] c++で変数をエクスポートするには、setenv()を使用するにはどうすればよいですか?
質問内容
いくつかの変数をエクスポートして、コマンドラインで次のように表示させる必要があります。
export ROS_HOSTNAME=xxx
c++でsetenv()を使って実現するにはどうしたらいいですか?
ありがとうございます。
解決方法は?
からの
setenv()
のマニュアル記載。
シノプシス
#include <stdlib.h> int setenv(const char *envname, const char *envval, int overwrite);
説明
setenv()関数は、呼び出し元プロセスの環境変数を更新または追加するものである。envname 引数は、更新する環境変数の名前を含む文字列を指す。 追加または変更される。環境変数には envval が指す値が設定される。envname が '=' 文字を含む文字列を指している場合、この関数は失敗する。また envname で指定された環境変数が既に存在し、かつ overwrite の値が 0 以外であれば、この関数は成功を返し、環境は更新される。環境変数 envname で指定された変数が既に存在し、overwrite の値が 0 である場合、この関数は成功を返し、環境は変更されないものとする。アプリケーションが environ やそのポインタを変更した場合の setenv()の動作は未定義である。setenv()関数は、environが指すポインタのリストを更新しなければならない。 を指している。
envnameとenvvalで記述された文字列は、この関数によってコピーされます。
setenv()関数はリエントラントである必要はありません。リエントラントである必要がない関数は、スレッドセーフである必要はありません。
戻り値
正常に終了した場合は、0が返される。それ以外の場合は、-1 が返され、エラーを示す errno が設定され、環境は変更されないものとする。
だから、あなたは
setenv("ROS_HOSTNAME","xxx",1); // does overwrite
または
setenv("ROS_HOSTNAME","xxx",0); // does not overwrite
をご覧ください。既存の定義を上書きするかどうかによります。
注意
を使用することはできません。
setenv()
を使って、自分のプロセスから呼び出し元のプロセス(シェル)に変数をエクスポートすることができます!
fork で作成された子プロセスは、現在のプロセスの環境定義を引き継ぐので、あなたの変更と追加も同様に行われます。
関連
-
[解決済み】C-stringを使用すると警告が表示される。"ローカル変数に関連するスタックメモリのアドレスが返される"
-
[解決済み】cc1plus:エラー:g++で認識されないコマンドラインオプション"-std=c++11"
-
[解決済み] scpを使ってリモートからローカルにフォルダをコピーするにはどうしたらいいですか?
-
[解決済み] MySQLでコマンドラインを使用してSQLファイルをインポートするにはどうすればよいですか?
-
[解決済み] Bashでコマンドの出力に変数を設定するにはどうすればよいですか?
-
[解決済み] C++11では、標準化されたメモリモデルが導入されました。その意味するところは?そして、C++プログラミングにどのような影響を与えるのでしょうか?
-
[解決済み] なぜC++はPythonよりもstdinからの行の読み込みが遅いのですか?
-
[解決済み] MySQLでコマンドラインを使用してユーザーアカウントのリストを取得するにはどうすればよいですか?
-
[解決済み] コマンドラインから .bash_profile を再読み込みする方法は?
-
[解決済み】rakeタスクにコマンドライン引数を渡す方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Visual Studio 2015で「非標準の構文; '&'を使用してメンバーへのポインターを作成します」エラー
-
[解決済み】C-stringを使用すると警告が表示される。"ローカル変数に関連するスタックメモリのアドレスが返される"
-
[解決済み】関数名の前に期待されるイニシャライザー
-
[解決済み】'cout'は型名ではない
-
[解決済み】cc1plus:エラー:g++で認識されないコマンドラインオプション"-std=c++11"
-
[解決済み】「std::operator」で「operator<<」にマッチするものがない。
-
[解決済み】Visual Studio 2013および2015でC++コンパイラーエラーC2280「削除された関数を参照しようとした」が発生する
-
[解決済み] [Solved] インクルードファイルが開けません。'stdio.h' - Visual Studio Community 2017 - C++ Error
-
[解決済み】浮動小数点数の乱数生成
-
[解決済み】デバッグアサーションに失敗しました