I want to do some light IPC stuff in Fantom. I have a wisp process running in the background on a Linux box and I want to be able to give it commands from the shell (stop, restart, etc).
I figured I could use Linux's named pipes to do this:
class PipeReader
{
Void main()
{
file := File(`foo`)
in := file.in(0)
echo(in.readLine() + "\n")
in.close
}
}
Perhaps first place to start is making sure it works in Java (since everything in Fantom ultimately just wraps Java's I/O streams)
tacticsThu 4 Mar 2010
I'll investigate it tonight then.
KevinKelleyThu 4 Mar 2010
Fan streams are automatically buffered, so once in a while I run into needing to flush() to force output. Not sure what you'd flush here, though; maybe reading character by character instead of readLine?
Seems like I remember default behavior for console-streams in C as being to flush on newlines; that'd be handy to have I think.
tactics Thu 4 Mar 2010
I want to do some light IPC stuff in Fantom. I have a wisp process running in the background on a Linux box and I want to be able to give it commands from the shell (stop, restart, etc).
I figured I could use Linux's named pipes to do this:
But it doesn't quite work:
If I echo again, I get:
Eh? Something is going on low level that I don't understand. I wrote an equivalent in C:
And this works as expected:
Any ideas on how to correct this?
brian Thu 4 Mar 2010
Don't really have a clue.
Perhaps first place to start is making sure it works in Java (since everything in Fantom ultimately just wraps Java's I/O streams)
tactics Thu 4 Mar 2010
I'll investigate it tonight then.
KevinKelley Thu 4 Mar 2010
Fan streams are automatically buffered, so once in a while I run into needing to flush() to force output. Not sure what you'd flush here, though; maybe reading character by character instead of
readLine
?Seems like I remember default behavior for console-streams in C as being to flush on newlines; that'd be handy to have I think.