Darren Cook wrote:
> > It is failing on set_random_seed, which is the first command after
> > getting the connection. Specifically it fails on my 3rd unit test -
>
> It worked (tested by doing my 3 tests 100 times) by adding a usleep(1);
> after my fwrite() command and before doing the fgets() call.
>
> I also now explicitly kill the child pid when I disconnect, but as far
> as I can tell that made no difference: ps still shows 300 [gnugo
> <defunct>] zombies, but they all disappear when my program closes.

I assume you use wait() or waitpid(), not kill() here, right?

Somehow, my `gtp-test' does neither, but I get no zombie processes
anyway.

> I guess my usleep() is a kludge and the real problem is how I connect or
> disconnect. But as multiple connect/disconnects is probably only going
> to happen in my unit tests it is good enough.

Yes, it is.  That usleep() ``fixes'' things indicates that pipes are
asynchronous (non-blocking) and you should use select() function.
Apparently, I use it too in my `gtp-test'; wrote it long ago, so I
forgot about this.

Another possible solution might using fcntl() to make the pipe IO
blocking, but I don't know if this is possible.

Paul



_______________________________________________
gnugo-devel mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/gnugo-devel

Reply via email to