問題タブ [getenv]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - getenv と env を使用しても、同じ結果は得られません。
名前がstdinによって与えられるすべての環境変数を出力するCプログラムがあります。$PATH、$USER などの変数を出力しますが、Linux シェルで自分で定義した環境変数は表示されません...たとえば、~.bashrc で MYTEST=test_is_working をエクスポートしてから、bashrc をソースしました (source ~/.bashrc)。プログラムが getenv で test_is_working を返すことを期待していましたが、そうではありません。
それが返されます:envが見つかりません
一方、ターミナルを開いて「env」と入力すると、MYTEST=test_is_working となります。
同様の投稿を見ました: Using getenv function where the solution is to launch the program from the shell. しかし、Qtcreator で実行およびデバッグしているため、できません。
どこが間違っているのかわからないのですが、どなたか教えていただけないでしょうか?
ありがとう
mysql - getenv() は MySQL UDF 内で null を返します
C/C++ 関数getenv()で奇妙な問題が発生しています。この関数は、Linux システム (Linux Mint 16 Cinnamon 64 ビット) 上の MySQL UDF 内で使用されます。/etc/environmentファイルを編集して JAVA_HOME 環境変数をシステム全体に設定しました。ユーザーとルートの両方でenvコマンドを使用すると、他のすべての変数とともにシェルに出力されます。コードは単純で、次のようになります。
UDF は条件で永続的にエラー メッセージを返すため、javaHome変数は常に null です。別の単純な C++ プログラムを作成し、cpp ファイルをコンパイル済み UDF ライブラリが存在する MySQL プラグイン ディレクトリ ( /usr/lib/mysql/plugin ) にドロップしました。
このコードは、期待どおりに変数の値、つまり JRE へのパスを返します。UDF コードは私の Windows システムでは正常に動作しますが、Unix システムで動作させるには、コードを少し変更し、GetEnvironmentVariableA()関数をgetenv()に置き換える必要がありました。何が問題なのかわかりません。任意のポインタをいただければ幸いです。
編集:「HOME」変数の結果をテストしたところ、出力は不思議なことに、 /root/ではなく/etc/mysql/でした。UDF には独自の環境などがありますか?
c - getenv が COLUMNS と LINES で機能しない
プログラムの列数と行数を取得しようとしています。そのために次のコードを使用しています。
問題は、これを実行すると両方で null になることです。PATH
またはなどの他の環境変数でこれを実行するとUSER
、正常に動作します。
私が奇妙だと思うのは、実行echo $COLUMNS
とecho $LINES
同じシェルからの両方が正常に機能することです。
私のプログラムがこれら 2 つの環境変数を取得できないのはなぜですか。
c - Linux 環境変数と C プロジェクト getenv()
Cプロジェクトに環境変数を使用する必要があるため、ターミナルでこれを行いました:
file.confは私が作成したファイルです。
ターミナルで行うenv
と、リストに「FILE_CONFIG」とその値(/home/pc/file.conf)が表示されます。path_to_config -> /home/pc/file.conf SO に割り当てたい.Cプログラムでこれを行いました:
しかし、getenv
FILE_CONFIG へのパスは返されません。デバッグ モードで見ると、path_to_config の値は 0x0 です。他の環境変数を試してみましたが、特にエクスポートしたものではできませんでした。
getenv - getenv が異なるアドレスを返す
getenv("USER") は、2 つの異なる関数から呼び出されると、2 つの異なるアドレスを返します。
0x7fff60e15e79 0x60e15e79
したがって、2 番目のケースでは、7fff の部分が欠落しています。これは、2 番目のケースで文字列を印刷しようとするとクラッシュにつながります。なぜこれが起こっているのか誰にも分かりますか?
macos - OS X Yosemite での setenv と getenv の奇妙な動作
環境変数を設定すると
次の方法で値を取得できます
「テスト」を返しますが、単純です
結果は空です。同じターミナルでも、新しいターミナルでも。
背景: Yosemite 10.10 はシステム全体の設定で /etc/launchd.conf をサポートしなくなったため、launchd.conf を介した環境変数の設定は OS X Yosemite/El Capitan/macOS Sierra では機能しなくなりましたか? かなり有望に見えますが、 経由で環境変数にアクセスする必要がありますが$VARNAME
、これは私の場合は機能しません。
c - GNOME_DESKTOP_SESSION_IDなしでCでGnomeを検出していますか?
C でユーザーのデスクトップ環境 (Gnome、KDE など) を検出しようとしています。
現在、私は次のようなことをしています:
ただし、私のシステムでGNOME_DESKTOP_SESSION_ID
は、「this-is-deprecated」と定義されています。
Gnome の存在を確認できる別の環境変数 (またはまったく異なる方法) はありますか?
c - getenv() セグメンテーション違反
私は宿題をしなければなりませんが、C のパスを取ることができません。
このコードを実行すると、「セグメンテーション エラー (コア ダンプ)」が発生しました。私のOSはUbuntu 14.04 LTSです。