#include #include #include #include /* C code to perform the same operations as this chunk of octave code from the __gnuplot_get_var__.m module: if (use_mkfifo) gpin_name = tmpnam (); ## Mode: 6*8*8 == 0600 [err, msg] = mkfifo (gpin_name, 6*8*8); if (err != 0) error ("__gnuplot_get_var__: Can not make fifo (%s)", msg); endif endif gp_var_name = strtrim (gp_var_name); n = min (strfind (gp_var_name, " "), strfind (gp_var_name, ",")) - 1; if (isempty (n)) n = numel (gp_var_name); endif unwind_protect ## Notes: Variables may be undefined if user closes gnuplot by "q" ## or Alt-F4. Further, this abrupt close also requires the leading ## "\n" on the next line. if (use_mkfifo) fprintf (ostream, "\nset print \"%s\";\n", gpin_name); fflush (ostream); [gpin, err] = fopen (gpin_name, "r"); if (err != 0) ## Try a second time, and then give an error. [gpin, err] = fopen (gpin_name, "r"); endif if (err != 0) error ("__gnuplot_get_var__: Can not open fifo."); endif */ int main (int argc, const char **argv) { const char *gpin_name; int rv; FILE *f; gpin_name = tmpnam (0); printf ("Got name %s\n", gpin_name); rv = mkfifo (gpin_name, 0600); printf ("mkfifo returns %d (errno %d)\n", rv, errno); f = fopen (gpin_name, "r"); printf ("Open for read returns file %p (errno is %d)\n", f, errno); if (f) fclose (f); return 0; }