![]() Home Overview FAQ Documentation Download Mailing List Geomview For Windows? Support Users Development Bug Reporting Contributing Contact Us Sponsors
|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Closed REQ 6136]: Connecting Geomview with another X-application
FIFOs are one-directional: if you're writing to geomview through a
FIFO, you can't get data back through the same FIFO.
But, you can do this using *two* FIFOs and geomview's "command" GCL command.
#include <sys/types.h>
#include <sys/stat.h>
FILE *togv, *fromgv;
/* Ensure (more or less) that no one else is using these FIFOs */
unlink("/tmp/togv");
unlink("/tmp/fromgv");
mknod("/tmp/togv", S_IFIFO|0777, 0);
mknod("/tmp/fromgv", S_IFIFO|0777, 0);
/* Invoke geomview. Use the "command" command, which takes a pair of
* file names; the first feeds commands to geomview, and the second
* receives responses from geomview. Note that the FIFOs mentioned here
* must exist before we start geomview.
*/
system("geomview -c '(command /tmp/togv /tmp/fromgv)' ... any other args ... &");
/* UNIX FIFO semantics imply that this will block until geomview starts.
* If you don't entirely trust it to work, you might use
* open( "/tmp/togv", O_WRONLY|O_NONBLOCK ) and a polling loop
* that waited a few seconds for geomview to start, gave up if it didn't,
* and otherwise used fdopen() to get a FILE pointer.
* But this should work if all's well.
*/
togv = fopen("/tmp/togv", "w");
fromgv = fopen("/tmp/fromgv", "r");
fprintf(togv, "(interest (pick world))\n");
fflush(togv);
/* Now listen on fromgv, etc. */
Hope this makes sense.
Stuart Levy, Geometry Center
|
||
|
Home | Overview | FAQ | Documentation | Support | Download | Mailing List Windows? | Development | Bug Reporting | Contributing | Contact Us | Sponsors |
|||
|
site hosted by |
|||