iostatus - Maple Help

iostatus

indicate status of all open files

Description

The iostatus function takes no arguments, and returns a list of at least three elements.

 – The number of files open by the I/O library
 – The number of currently active nested "read" commands
 – The upper bound on iostatus()[1] + iostatus()[2]

For each open file, an additional element appears in the list. Each element is itself a list, whose elements are:

 1 The file descriptor (from fopen, open, pipe, or popen)
 2 The name of the file, pipe, or process
 3 The file type (STREAM, RAW, PIPE, PROCESS, or DIRECT)
 4 FP=address for a STREAM or PROCESS, FD=num otherwise
 5 The file mode (READ or WRITE)
 6 The file type (TEXT or BINARY)
 • Element 2, the name, contains the actual file name for a STREAM or RAW file, "pipe:n" where "n" is the actual file descriptor for a PIPE file, the process name (ie. the command) for a PROCESS file, and "default" or "terminal" for a DIRECT file.
 • Element 4 gives the internal representation of the file, either a file pointer (FILE *) or file descriptor (int).  This is useful when opening a pipe, because whatever you connect the other end of the pipe to needs to know the actual file descriptor, not the Maple file descriptor.

 • The iostatus command is thread safe as of Maple 15.
 • iostatus returns the status of the i/o system at the moment at which iostatus is executed.  However events occurring in parallel threads can effect the status as soon as iostatus has returned.
 > $\mathrm{fopen}\left(\mathrm{testFile},\mathrm{WRITE}\right)$
 ${0}$ (1)
 > $\mathrm{open}\left(\mathrm{testFile2},\mathrm{WRITE}\right)$
 ${1}$ (2)
 > $\mathrm{iostatus}\left(\right)$
 $\left[{2}{,}{0}{,}{7}{,}\left[{0}{,}{"testFile"}{,}{\mathrm{STREAM}}{,}{\mathrm{FP}}{=}{628164}{,}{\mathrm{WRITE}}{,}{\mathrm{TEXT}}\right]{,}\left[{1}{,}{"testFile2"}{,}{\mathrm{RAW}}{,}{\mathrm{FD}}{=}{6}{,}{\mathrm{WRITE}}{,}{\mathrm{BINARY}}\right]\right]$ (3)