start an external program and open a connection to it
Connecting to a subsidiary program via WSTP.
This starts a subsidiary Wolfram System process on the computer system used here:
Here is a packet representing the first input prompt from the subsidiary Wolfram System process:
This writes a packet representing text to enter in the subsidiary process:
Here is a packet representing the output prompt from the subsidiary process:
And here is the actual result from the computation:
The basic way that the various different objects involved in a Wolfram System session are kept organized is by using Wolfram Symbolic Transfer Protocol (WSTP) packets. A WSTP packet is simply an expression with a definite head that indicates its role or meaning.
Some additional packets generated in Wolfram System sessions.
If you enter input to the Wolfram Language using EnterTextPacket["input"], then the Wolfram Language will automatically generate a string version of your output and will respond with ReturnTextPacket["output"]. But if you instead enter input using EnterExpressionPacket[expr], then the Wolfram Language will respond with ReturnExpressionPacket[expr] and will not turn your output into a string.
an expression returned corresponding to an output line
Packets for representing input and output lines using expressions.
This enters an expression into the subsidiary Wolfram System session without evaluating it:
Here are the next 3 packets that come back from the subsidiary Wolfram System session:
InputNamePacket and OutputNamePacket packets are often convenient for making it possible to tell the current state of a subsidiary Wolfram System session. But you can suppress the generation of these packets by calling the subsidiary Wolfram System session with a string such as "math -mathlink -batchoutput".
The first packet to come back is a TextPacket representing text generated by the Print:
After that, the actual result of the Print is returned:
In most cases, it is reasonable to assume that sending an EvaluatePacket to the Wolfram System will simply cause the Wolfram System to do a computation and to return various other packets, ending with a ReturnPacket. However, if the computation involves a function like Input, then the Wolfram System will have to request additional input before it can proceed with the computation.
This sends a packet whose evaluation involves an Input function:
What comes back is an InputPacket, which indicates that further input is required:
There is nothing more to be read on the link at this point: