補助的なWolframシステムプロセスを呼び出す

LinkLaunch["prog"]
外部プログラムを開始させ,そのプログラムとの接続を開く
WSTPを使って補助的プログラムと接続する
利用中のコンピュータで補助的Wolframシステムプロセスを開始させる:
補助的Wolframシステムプロセスからの最初の入力プロンプトを表すパケット:
補助的プロセスの入力となるテキストを表すパケットを書き込む:
補助的プロセスからの出力プロンプトを表すパケット:
これが実際に計算した結果である:
Wolfram Symbolic Transfer Protocol (WSTP)パケットは,Wolframシステムセッションにかかわるさまざまなオブジェクトを系統立てて管理するために使用されている.WSTPパケットは簡単に言えばパケットの役目や意味を示す一定の頭部を持った式である.
EnterTextPacket["input"]
入力行に対応するテキスト
ReturnTextPacket["output"]
出力行に対応して返されるテキスト
InputNamePacket["name"]
入力行の名前として返されるテキスト
OutputNamePacket["name"]
出力行の名前として返されるテキスト
Wolframシステムセッションの基本パケット
LinkReadInputNamePacketを返すため,もうひとつのWolframシステムセッションが入力待ちであることが分かる:
入力にPrintコマンドを2つ与える:
1番目のPrintが返したテキスト:
2番目のPrintが返したテキスト:
出力行は生成されず,次のパケットはInputNamePacketとなる:
TextPacket["string"]
Printその他が返すテキスト
MessagePacket[symb,"tag"]
メッセージ名
DisplayPacket["string"]
PostScriptグラフィックスの一部
DisplayEndPacket["string"]
PostScriptグラフィックスの末尾
Wolframシステムセッション中に使用されるパケットの一部
EnterTextPacket["input"]でWolfram言語へ入力するとき,Wolfram言語はその出力を自動的に文字列に変換し,ReturnTextPacket["output"]で応える.それとは別に,EnterExpressionPacket[expr]で入力を与えると,Wolfram言語はReturnExpressionPacket[expr]で応え,出力を文字列に変換することはしない.
EnterExpressionPacket[expr]
入力行に相当する式
ReturnExpressionPacket[expr]
出力行に相当する式
式を使って入出力するためのパケット
補助的Wolframシステムセッションに式を評価することなく入力する:
補助的Wolframシステムセッションからは3つのパケットが返ってくる:
InputNamePacketOutputNamePacketは補助的Wolframシステムセッションの現在の状態を知りたいときに利用することができる.補助的Wolframシステムセッションを"math -mathlink -batchoutput"で起動すれば,それらのパケットの生成を抑制することができる.
InputNamePacketパケットとOutputNamePacketパケットの明示的な生成を抑制していても,Wolframシステムは,EnterTextPacketあるいはEnterExpressionPacketの入力を,あたかも入力行があるかのように処理する.つまり,Wolframシステムは$Pre$Postを呼んでIn[$Line]Out[$Line]の値を代入する.
EvaluatePacket[expr]
評価のために送信される式
ReturnPacket[expr]
評価によって返信される式
明示的な入力行・出力行なしで評価を実行する
EvaluatePacketを送信する.Unevaluatedはパケットが送信される前に評価されることを抑止する:
結果は純粋なReturnPacketである:
EvaluatePacketの評価を要求するPrint[x]を送る:
最初に返ってくるのはTextPacketであり,Printが生成するテキストを表している:
その後,Printの結果が返ってくる:
ほとんどの場合,EvaluatePacketを送信することによって,Wolframシステムは計算を実行し,ReturnPacketで終るさまざまなパケットを返してくると思っていいだろう.しかし,実行すべき計算がInputのような関数を含んでいる場合,Wolframシステムは計算を続ける前にさらに入力を要求してくる.
Input関数の評価を含むパケットを送信する:
返ってくるパケットはInputPacketであり,入力が必要なことを示している:
リンクには読むべきパケットが残っていない:
入力を与える:
Input関数が評価され,ReturnPacketが生成された:
LinkInterrupt[link]
WSTP適合プログラムに割込み信号を送る
WSTP適合プログラムへの割込み
非常に時間のかかる計算を補助的プロセスに送る:
まだ計算中である:
割込み信号を送る:
補助的なプロセスは中断し,割込みメニューを返してくる:
以下でリンクを閉じる: