Use a pipe! I actually just wrote about this recently: http://www.onerobotics.com/pos…6/using-karel-pipe-files/
Essentially you open the same FILE on the PIP: device for 'RW' in one task and 'RO' in the other. You can configure the descriptor to wait and (optionally) timeout on READs, but there are some caveats.
If you need to pass data both ways, you will need two pipes.
I guess you could also use sockets too, but it's probably better to use a pipe if the communication is local.