Mathematica 9 is now available

Documentation / Mathematica / Mathematicaブック / Mathematicaの仕組み / MathLinkと外部プログラム通信 /

2.13.8 補足:Mathematicaフロントエンドとの通信

Mathematicaカーネルは MathLinkを利用して Mathematicaカーネルと通信している. Mathematicaカーネルをフロントエンドから開始させる場合,カーネルは MathLinkを介してフロントエンドから制御されることになる.

カーネルのフロントエンドとのリンク

大域変数の $ParentLinkはカーネルが入出力を行う MathLinkコネクションを示している.

$ParentLink Mathematicaセッション中に切り替えてカーネルが接続しているフロントエンドを切り替えると便利なこともある.

セッション A

ポート8000番にリンクを生成する.

In[1]:= link = LinkCreate["8000"]

Out[1]=LinkObject[8000@frog.wolfram.com, 4, 4]

セッション B

セッションAで生成したリンクに接続 する.

In[2]:= LinkConnect["8000"]

Out[1]=LinkObject[8000@frog.wolfram.com, 4, 4]

セッションBにセッションAをフロントエンドとして使うよう指示する.

In[3]:= $ParentLink = %

セッション A

セッションAはセッションBのフロントエンドとして働き,セッションBからのすべての出力を受け取る.

In[4]:= Table[LinkRead[link], {4}]

Out[2]={ResumePacket[LinkObject[ParentLink, 1, 1]],
OutputNamePacket[Out[2]= ], ReturnTextPacket[
LinkObject[8000@frog.wolfram.com, 4, 4]],
InputNamePacket[In[3]:= ]}

セッションBを解放する.

In[5]:= LinkWrite[link, EnterTextPacket["$ParentLink=."]]

Mathematicaカーネルとよく似て,Mathematicaの標準ノートブックフロントエンドは MathLinkパケットの一部を処理する.

カーネルからフロントエンドを制御するには通常NotebookWrite FrontEndExecuteを使うことが最善である. しかし, LinkWriteでフロントエンドに直接パケットを送った方が便利な場合もある.



Any questions about topics on this page? Click here to get an individual response.Buy NowMore Information
THIS IS DOCUMENTATION FOR AN OBSOLETE PRODUCT.
SEE THE DOCUMENTATION CENTER FOR THE LATEST INFORMATION.