我在Windows上使用process.h中的_spawnl。我看到一些很奇怪的東西。我想產生N個進程。我的代碼工作正常,直到N> = 12。在Windows上,返回EINVAL的spawnl
當N> = 12時,spawnl調用返回-1並且errno是EINVAL ?! (無效模式)模式參數在調用之間不會改變,EXE名稱也不會改變。其中一些論點的確會以非常小的方式發生變化,但這些是電話之間唯一的區別。
現在我知道this問題,看起來相似。但在他的情況下,他在他的道路上引用了一些人不喜歡的東西。在我的情況下,它不能是exe的名稱。我已經能夠找到的微軟文檔說EINVAL意味着模式無效,在我的情況下不可能是真實的,因爲第一個模式是相同的模式。
如果有人知道輸入和輸出在Windows上spawn和知道任何其他原因,它可能會導致一個EINVAL,我全部耳朵。我在這方面無休止地搜索了Google,但空手而歸。
另一個有趣的數據點。我正在運行Windows XP,32位在VM-Ware下運行。我的同事有兩臺Windows機器(包括XP,一臺32位和一臺64位)。他沒有看到這個問題。他的例子產生了32個進程沒有問題。
它可能就像你的一個緩衝區溢出一樣簡單。顯示出現這種行爲的代碼。 – nos 2011-02-08 18:13:03