From help-octave-request at bevo dot che dot wisc dot edu Wed Apr 21 17:35:05 1999 Subject: Re: An engine for octave From: Jesse Bennett To: mxu1 at broadway dot GC dot cuny dot edu, help-octave@bevo.che.wisc.edu Date: Wed, 21 Apr 1999 17:37:41 -0500 (CDT) Min, I have a working engine for Octave which implements the following Matlab C API functions: engOpen engClose engGetFull engPutFull engEvalString engOutputBuffer I have been meaning to clean it up and submit it to the Octave sources mailing list, but I just haven't found the time. Basically, it works by forking, initializing pipes for stdin/stdout, then exec'ing Octave. Commands are then sent to the engine as if they were typed at the command line. The only problem I had with this approach is that there is not a good way in Octave to "load" a file from stdin (needed by engPutFull). IIRC, the load will not terminate without an EOF, and the EOF character causes Octave to close stdin (or something like that, I never got around to investigating the problem in detail). In any case, only the first load succeeds with this method. The workaround I used was to create a fifo, and then pass the data through it. This is not a portable approach, since some UNIX systems will not allow ordinary users to create fifos. A temporary file could also be used, but this is messy as well. It would be nice if someone created a patch for Octave that allows `load -ascii "-"' to work (at least for a single matrix). What I have works, but it is basically a hack that sorely needs improving. There is very little error checking, and if the calling C program exits or dies without closing the engine it has to be killed manually. Since it seems others are interested in this, I will try to get it organized this weekend and post the code on the sources list. Jesse Bennett On March 31, 1999, Min Xu wrote: > I am considering an engine for octave which may open an instance of > octave, do any number of fevals, and exchange of data between the > calling C/C++ program and the octave instance, and surely close the > instance when done. [snip] > I checked the help-octave archive. It seems that the interest of > embedding octave in another environment is always high. Has anyone > done anything in that? If not, I will code one.