0

次のようにsetenvを使用してファイル名を動的に評価します。

setenv("file.name",filename.c_str,1);

これがプロセスごとかどうか知りたいですか?

このコードを実行しているが異なるファイル名を使用している複数のプロセスがある場合、衝突は発生しますか?

プロセス1があるとしましょう

setenv("file.name",filename1.c_str,1);  

およびプロセス2

setenv("file.name",filename1.c_str,1);  

これを行うのに問題がありますか?

ありがとう。

4

3 に答える 3

3

設定する環境setenv()はプロセスごとです。基本的に、これはプロセス内の単なるメモリ領域です。少なくとも、これはUNIXシステムで行われることです。これとは異なりgetenv()、CまたはC ++標準の一部ではありませんが、POSIXの一部です。非POSIXシステムでそれが存在する場合、それが行うことは何か違うかもしれません。

于 2012-02-01T23:13:02.427 に答える
0

環境変数はプラットフォーム固有です。setenv()はWindowsで動作するとは思わないので、Linuxで実行されているプログラムについて話していると仮定すると、問題ないはずです。setenv()は、プロセススコープを使用して環境変数を設定します(もちろん、フォークされたスレッド間で共有されます)。

于 2012-02-01T23:10:54.603 に答える
0

私の知る限り、最新のすべてのオペレーティングシステムでは、各プロセスに個別の環境ブロックがあり、通常、プロセスの作成時に作成されます。(たとえばNtCreateProcess()、Windowsシステムの場合)またはLinux / Unix/Otherの同等のもの。 _putenv()Windowsで動作しますwherassetenv()はLinux/Unixで動作します。

于 2012-02-01T23:12:48.607 に答える