0

を使用して環境変数の値を設定する C プログラムを Linux で作成しましたsetenvが、配列変数の値を設定できません (配列の値を出力ファイルに出力しましたが、ファイルの内容は空白です)。配列変数は正常に機能しています。コード スニペットは次のとおりです。

setenv("header", "Welcome: ", 1);             // work fine, can output to file
setenv("info[0]", "192.168.1.1: ", 1);        // nothing are shown in output file
setenv("info[1]", "AA-AA-AA-BB-BB-BB: ", 1);  // nothing are shown in output file

うまくいかない理由が見つかりません:(どんな助けも大歓迎です。

4

1 に答える 1

1

配列は bash によって処理され、環境変数としては存在しません。環境変数はプロセスごとに VARNAME=value としてカーネルに保存されます。これを確認できます。

$ cat /proc/$$/environ | tr '\0' '\n'

ただし、区切り文字 (カンマやタブ記号など) を含む文字列の形式で配列を使用できます。

info=192.168.1.1:,AA-AA-AA-BB-BB-BB:

この文字列を適切な方法で処理します

また、その名前にも注意する必要があります。まず、名前の構成方法に関する特定の要件があります。

IEEE Std 1003.1-2001 の Shell and Utilities ボリュームのユーティリティで使用される環境変数名は、大文字、数字、および Portable Character Set で定義されている文字の '_' (アンダースコア) のみで構成され、数字で始まらない. 他の文字は、実装によって許可される場合があります。アプリケーションは、そのような名前の存在を許容するものとします。

2 番目に注意すべきことは、プログラムの他のコンポーネントが依存している変数を変更するリスクがあることです。

于 2013-10-22T08:54:38.103 に答える