Structural Informatics Group (SIG) logo
Home | Projects | Demos | Downloads | Publications | Local Info | About Us | New site
Go to the first, previous, next, last section, table of contents.

Unix I/O Functions

The following functions were added to XLISP by Niels Mayer for use with WINTERP. These functions are UN*X-specific:

POPEN - start a process and open a pipe as a read/write stream
        (popen <shell-command> :direction <direction>)
            <shell-cmd> is a string which is sent to shell
                        /bin/sh and is executed as command.
            <direction> a keyword symbol, :input means a stream
                        is created that reads from stdout of
                        <shell-cmd>; :output means a stream
                        is created that writes to stdin of 
                        <shell-cmd>. (:input is the default.)
            returns     a stream, or NIL if the pipe or /bin/sh 
                        process couldn't be created.
PCLOSE -- close a pipe stream as opened by POPEN.
        (pclose <stream>)
            <stream>    a stream object created by POPEN
            returns     T if the command executed successfully, else
                        returns the integer exit status of
                        <shell-cmd>.
SYSTEM - run a process, sending output (if any) to stdout/stderr
        (system <shell-cmd>)
            <shell-cmd> is a string which is sent to shell
                        /bin/sh and is executed as command.
            returns     T if the command executed successfully,
                        else returns the integer exit status of
                        <shell-cmd>.
FSCANF-FIXNUM - read a fixnum value from a stream using fscanf(3x).
        (fscanf-fixnum <stream> <format>)
            <stream>    a stream object created via OPEN or POPEN.
                        Will give an error for "unnamed streams".
            <format>    a format string containing a single
                conversion directive that will result in
                an integer valued conversion %d, %u, %o,
                %x, %ld, %lu, %lo and %lx style conversions 
                are acceptable for this routine. See the
                manual page for fscanf(3x) for details.
    returns     an integer if fscanf(3x) reports that
                the conversion specified by <format> 
                succeeded. Returns NIL if the conversion
                wasn't successful, or if EOF was reached.

WARNING: specifying a <format> that will result in the conversion of a result larger than sizeof(long) will result in corrupted memory and core dumps.

FSCANF-STRING - read a string value from a stream using fscanf(3x).
(fscanf-string <stream> <format>)
    <stream>    a stream object created via OPEN or POPEN.
                Will give an error for "unnamed streams".
    <format>    a format string containing a single
                conversion directive that will result in
                a string valued conversion. %s, %c, and
                %[...] style conversions are acceptable for
                this routine. See the manual page for
                fscanf(3x) for details.
    returns     a string if fscanf(3x) reports that
                the conversion specified by <format> 
                succeeded. Returns NIL if the conversion
                wasn't successful, or if EOF was reached.

WARNING: specifying a <scanf-format> that will result in the conversion of a result larger than 1024 characters will result in corrupted memory and core dumps.

FSCANF-FLONUM - read a float from a stream using fscanf(3x).
(fscanf-flonum <stream> <format>)
    <stream>    a stream object created via OPEN or POPEN.
                Will give an error for "unnamed streams".
    <format>    a format string containing a single
                conversion directive that will result in
                a FLONUM valued conversion. %e %f or %g
                are valid conversion specifiers for this
                routine. See the manual page for fscanf(3x)
                for details.
    returns     a float if fscanf(3x) reports that
                the conversion specified by <format> 
                succeeded. Returns NIL if the conversion
                wasn't successful, or if EOF was reached.

WARNING: specifying a <scanf-format> that will result in the conversion of a result larger than sizeof(float) will result in corrupted memory and core dumps.


Go to the first, previous, next, last section, table of contents.