我在Windows上使用来自process.h的_spawnl。我看到一些非常奇怪的东西。我想生成N个进程。我的代码工作正常,直到N> = 12。
当N> = 12时,spawnl调用突然返回-1而errno是EINVAL?! (无效模式)mode参数在调用之间不会改变,exe名称也不会改变。一些论点确实以非常小的方式发生变化,但这些是调用之间的唯一区别。
现在我知道this的问题看起来很相似。但在他的情况下,他在他的道路上引用了spawnl不喜欢的东西。在我的情况下,它不能是exe名称。我能够找到的Microsoft文档说EINVAL意味着模式无效,在我的情况下是不正确的,因为前11个模式是相同的。
如果有人知道Windows上的spawnl的来龙去脉并且知道可能导致EINVAL的任何其他原因,我全都耳朵。我已经无休止地用Google搜索了,但空手而归。
另一个有趣的数据点。我正在运行Windows XP,在VM-Ware下运行32位。我的同事有两台Windows机器(XP,一台32位和一台64位)。他没有看到这个问题。他的案例产生了32个没有问题的过程。
答案 0 :(得分:0)