2011-02-08 1 views
1

Windowsの場合、process.hの_spawnlを使用しています。私は非常に奇妙な何かを見ている。私はN個のプロセスを生成したい。私が持っているコードはN> = 12までうまくいく。Windowsでは、spawnlがEINVALを返す

N> = 12のとき、突然spawnl呼び出しは-1を返し、errnoはEINVALですか? (無効モード)mode引数は呼び出し間で変更されず、exe名も変更されません。議論のいくつかは非常に小さな方法で変わるが、それはコール間の唯一の違いである。

今、私は同じように見えるthis質問を知っています。しかし、彼の場合、彼は彼の道では、スポーンは好きではなかった引用符を持っていた。私の場合は、exe名にすることはできません。私が見つけることができたMicrosoftのドキュメントは、EINVALはモードが無効であることを意味します。これは、私の場合は最初の11と同じモードなので真実ではありません。

誰もが知っていればWindows上でspawnlを実行していて、それがEINVALになる可能性のあるその他の理由がわかっていれば、私はすべて耳にします。私はこれで無限にグーグルをしてきたが、空手になった。

もう1つ興味深いデータポイントです。私はVM-Wareの下で動作する32ビットのWindows XPを実行しています。私の同僚には、2台のWindowsマシン(XP、32ビット、64ビット)があります。彼はこの問題を見ない。彼は問題なく32のプロセスを生成します。

+0

これは、バッファオーバーフローと同じくらい簡単なことです。この動作を示すコードを表示します。 – nos

+1

それをデバッグしてください。/MTを使用し、CRTソースコードをシングルステップ実行します。 –

+0

コードを投稿してください。 –

答えて

関連する問題