2011-02-08 3 views
1

Windows에서 process.h의 _spawnl을 사용하고 있습니다. 나는 아주 이상한 것을보고있다. N 개의 프로세스를 생성하고 싶습니다. 내가 가지고있는 코드는 N> = 12가 될 때까지 잘 작동한다.Windows에서 spawnl이 EINVAL을 반환합니다.

N> = 12 일 때 갑자기 spawnl 호출이 -1을 반환하고 errno가 EINVAL입니까?! (잘못된 모드) 모드 인수는 호출간에 변경되지 않으며 EXE 이름도 변경되지 않습니다. 인수 중 일부는 매우 사소한 방식으로 변경되지만 호출 간에는 유일한 차이점이 있습니다.

이제는 비슷하게 보이는 this 질문을 알고 있습니다. 그러나 그의 경우에, 그는 산란계가 좋아하지 않는 그의 길을 인용했다. 제 경우에는 exe 이름이 될 수 없습니다. 내가 찾은 마이크로 소프트의 문서에 의하면 EINVAL은 모드가 유효하지 않다는 것을 의미한다. 내 첫 번째 모드가 동일하기 때문에 내 경우에는 사실이 아닐 수있다.

누군가가 기능을 알고 있다면 Windows에 spawnl을 설치하고 EINVAL을 초래할 수있는 다른 이유가 있음을 알고 있습니다. 나는 이것에 끝없이 봤지만 비어있는 손으로 올랐다.

또 다른 흥미로운 데이터 요소입니다. VM-Ware에서 실행되는 32 비트 Windows XP를 실행 중입니다. 내 동료는 두 개의 Windows 컴퓨터 (XP, 32 비트 및 64 비트 모두)를 가지고 있습니다. 그는이 문제를 보지 못합니다. 그는 문제없이 32 개의 프로세스를 생성합니다.

+0

버퍼 오버플로만큼 간단 할 수 있습니다. 이 동작을 나타내는 코드를 보여줍니다. – nos

+1

디버그하십시오. CRT 소스 코드를 통해/MT 및 단일 단계를 사용하십시오. –

+0

코드를 게시하십시오. –

답변

관련 문제