# EXEC

EXEC Command [ WAIT ] [ FOR ( READ | WRITE | READ WRITE ) [ AS Variable ]

Executes a command. An internal Process object is created to manage the command.

The command must be specified as an array of strings containing at least one element. The first element of this array is the name of the command, and the others are optional parameters.

- If WAIT is specified, then the interpreter waits for the command ending. Otherwise, the command is executed in background.
- If FOR is specified, then the command input-outputs are redirected so that your program intercepts them:
  - If WRITE is specified, you can send data to the command standard input by using the Process object with common output instructions: PRINT, WRITE, ... Note that you need a reference to the Process object for that.
  - If READ is specified, then events will be generated each time the command sends data to its standard output streams: the event Read is raised when data are sent to the standard output stream, and the event Error is raised when data are sent to the standard error stream. Use the process object with common input instructions to read the process standard output: INPUT, READ, or LINE INPUT.

Lastly, you can get a reference to the internal Process object into a variable Variable by specified the AS keyword.

Example

    ' Get the content of a directory

    EXEC [ "ls", "-la" ] WAIT

    ' Same thing, but in background

    DIM Content AS String

    EXEC [ "ls", "-la" ] FOR READ

    ...

    PUBLIC SUB Process_Read()

      DIM sLine AS String

      LINE INPUT #LAST, sLine

      Content = Content & sLine
      PRINT sLine

    END

    ' If your command expects some arguments in quotes, EXEC can handle that automatically:
    ' for example perl -e 'print while <>;' becomes

    EXEC [ "perl", "-e", "print while <>;" ] FOR READ WRITE

See also

END, QUIT, STOP

Previous: Events declaration Next: Exist