In my genetical tuning, I need to let two version of my engine play together, with different parameters sets. To test the final engine, I would like to make it play against other engines too. Doing this with WinBoard or Arena is enough good but it would be better if I could call engines with a linkable interface or other direct methods. Intercepting stdin/stdout is a pain and very bad portable among different systems. For sample, on Windows is not very difficult to provide a DLL interface to any C/C++/VB software. On Linux/Unix/Mac shared libraries could be used. I could write an open-source core DLL/library to help giving our softwares such kind of interface, if anybody is interested.
Such kind of standard interface would be great for graphical interface programmers, I think.
Of course the "linkable interface" itself can run any engine in a different thread, to avoid any kind of lock.
Another way could be to define a standard socket interface, even for this I could provide a portable solution. of course one can talk about named-pipes, shared files and any other method that I don't know but the fact is that the stdin/stdout usage is a so old interface that maybe we should search for something better... or not?
