The problem is that you are creating asynchronous processes, but never gathering their return codes via wait or waitpid.

In order to provide a way to retrieve the exit codes from asynchronous processes, the windows implementation has an internal limit of 64 un-waited asynchronous processes. Call one of the above two calls once the process has finished, and you will "fix" the problem.

That said, if your code is starting one process at a time, and then hanging around polling a 'lock' file before continuing; why on earth are you using asynchronous processes and lock files?

If you just called the synchronous variant of system, you wouldn't need the lock files, or to call wait/pid.

With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'

Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.

"Science is about questioning the status quo. Questioning authority".

In the absence of evidence, opinion is indistinguishable from prejudice.

When putting a smiley right before a closing parenthesis, do you:

Use two parentheses: (Like this: :) )
Use one parenthesis: (Like this: :)
Reverse direction of the smiley: (Like this: (: )
Use angle/square brackets instead of parentheses
Use C-style commenting to set the smiley off from the closing parenthesis
Make the smiley a dunce: (:>
I disapprove of emoticons
Other