Re: How to pass an input to the child MathKernel?
- To: mathgroup at smc.vnet.net
- Subject: [mg33496] Re: How to pass an input to the child MathKernel?
- From: Jens-Peer Kuska <kuska at informatik.uni-leipzig.de>
- Date: Sun, 24 Mar 2002 01:43:48 -0500 (EST)
- Organization: Universitaet Leipzig
- References: <a7esml$mpm$1@smc.vnet.net>
- Reply-to: kuska at informatik.uni-leipzig.de
- Sender: owner-wri-mathgroup at wolfram.com
Hi,
the online-manual gives an example as well as THE BOOK
Open the link:
In[]:=link = LinkLaunch["math -mathlink"]
send an expression:
In[]:=LinkWrite[link, Unevaluated[EvaluatePacket[Expand[(x + 1)^3]]]]
read the data the link returns:
In[]:=LinkRead[link];
LinkRead[link]
Out[]=ReturnPacket[1 + 3 x + 3 x^2 + x^3]
In[]:=LinkClose[link]
Regards
Jens
Vladimir Bondarenko wrote:
>
> Gentlemen,
>
> What is the simplest way to implement the step # 2 ?
>
> 1. From within a working MathKernel, run a new instance of the MathKernel
> using the same machine
> > 2. Pass an input to the child MathKernel
> 3. Evaluate the passed input within the child MathKernel
> 4. Return the evaluated input into the parent MathKernel
> 5. Close the child MathKernel
>
> Vladimir Bondarenko
>
> P.S.
>
> If I try something like
>
> > ReadList["!MathKernel", 2 + 1, RecordLists -> True]
>
> ReadList::"readf": " 3 is not a valid format specification."
>
> ReadList["!MathKernel", 3, RecordLists -> True]
>
> then I probably use the parent (old) instance of the MathKernel.
>
> If I use
>
> > ReadList[Run["MathKernel.exe"], 2 + 1, RecordLists -> True]
>
> General::"stream": " 0 is not a string, InputStream[ ], or OutputStream[ ]."
>
> ReadList[0, 3, RecordLists -> True]
>
> then I do run the child MathKernel, but it looks like that the computation
> was done, again, by the parent MathKernel 8-(