Haskell <-> C/C++ comunication (sockets/pipes?)
Eray Ozkural (exa)
Wed, 26 Sep 2001 06:38:05 +0300
-----BEGIN PGP SIGNED MESSAGE-----
This is exa from #kde :)
Using stdin/stdout with ASCII first would be certainly easier. All you have
to do is to define some GUI commands. Then if you convert to some binary
interface, you could again use either pipes or sockets.
I'd referred to this function on irc, but anyway. In posix category.
createNamedPipe :: FilePath -> FileMode -> IO ()
createNamedPipe fifo mode calls mkfifo to create a new named pipe, fifo, with
permissions based on mode.
And of course you could create that fifo externally with a shell script if
you'd like and run stuff from there. I'd almost certainly make it run over
stdin/stdout on second thought. You do the connection externally as Sengan
says. Create the pipes. fork the program. connect the stdin/stdout of child
to your pipes. I think he did it writing C code, but you could also do it
using bash, right?
app <input >output &
guifrontend >input <output
Not exactly what the C code would do, but something like that should work for
you. Making it run with stdin/stdout also gives you an incentive to make your
program into an interactive shell!
info: This is a really cool AI expert system, version 3.0.2
info: bla bla
info: valid commands: instance property...
Hmm. This gives me a few ideas for my own project, too.
I don't think that you absolutely need to do this with sockets. Many decent
applications use pipes. :)
Since you will be using KDE, you don't have to worry too much about Windows.
Unless of course one day you want to port it. :) Then you might consider
writing another such GUI using MFC with Visual C++. And make it an ActiveX
component, get it signed by MS, etc, etc. Or, alternatively port a large
portion of KDE to windows.
Eray Ozkural (exa) <email@example.com>
Comp. Sci. Dept., Bilkent University, Ankara
GPG public key fingerprint: 360C 852F 88B0 A745 F31B EA0F 7C07 AE16 874D 539C
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.6 (GNU/Linux)
Comment: For info see http://www.gnupg.org
-----END PGP SIGNATURE-----