C言語関係掲示板

過去ログ

No.224.spawnlと直接EXE実行の違い


No.1370

spawnlと直接EXE実行の違い
投稿者---リン(2002/04/01 12:37:32)


はじめまして。 会社員のリンと申します。

 下記現象が発生しています。
 関連の情報・知識をお持ちの方、ご教示願います。

 現象:_spawnlで(VC++で作成した)EXEを実行した場合、数日で
    プログラムが停止してしまう。
    (呼び出し元は、停止せずに生きています)
    また、直接、このEXEを実行した場合は、この現象は発生しません。
 他 :_spawnl(_P_NOWAIT, "xxxx.exe", "xxxx.exe", NULL);
    のように記述。
 OS:WinNT4.0 Workstation SP6a
 PC:富士通 FMV (P慧觝マシン)
 コンパイラ:MS VC6.0(C++)

以上、よろしくお願いします


No.1380

Re:spawnlと直接EXE実行の違い
投稿者---B.Smith(2002/04/02 15:10:49)


こんにちは。

Win32系のOSで関数spawnlを実行する場合、引数によってはMS-DOSの時とは違う動作をするので注意してください。
これは、コンソールモードであっても同じです。

_P_NOWAITや_P_DETACHを指定すると、親プロセスと子プロセスは(厳密には違いますが)平行して処理されます。
そのため、ファイル等のマシンの資源を共有している場合、しっかりした排他制御を行っていないとタイミングがうまく取れない時に問題を発生する事があります。



No.1387

Re:spawnlと直接EXE実行の違い
投稿者---リン(2002/04/05 13:13:33)


こんにちは。

 貴重な情報、ありがとうございます。
 まずは、_spawnlで呼ばずに、直接起動することとしました。

 今後とも、よろしくお願いいたします。

以上


戻る


「初心者のためのポイント学習C言語」 Last modified:2002.05.26
Copyright(c) 2000-2002 TOMOJI All Rights Reserved