[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

starting multiple processes

Junkone

12/19/2007 11:26:00 PM

hello
i have to do the following
1. exec("E:\\TradingTools\\IBController\IBControllerStart_customised.bat")
2. application = WIN32OLE.new("Broker.Application")

I want to start 1 and then continue doing 2. however when i run it
realtime, the statement 2 waits for statement 1 to be completed which
takes long time. how do i initiate 1 and then withotu waiting goto
statement 2.

apreciate ur help

seede
6 Answers

Joel VanderWerf

12/19/2007 11:53:00 PM

0

Junkone wrote:
> hello
> i have to do the following
> 1. exec("E:\\TradingTools\\IBController> \IBControllerStart_customised.bat")
> 2. application = WIN32OLE.new("Broker.Application")
>
> I want to start 1 and then continue doing 2. however when i run it
> realtime, the statement 2 waits for statement 1 to be completed which
> takes long time. how do i initiate 1 and then withotu waiting goto
> statement 2.

Wrap #1 in a thread:

Thread.new do
exec(...)
end

--
vjoel : Joel VanderWerf : path berkeley edu : 510 665 3407

Robert Klemme

12/20/2007 8:35:00 AM

0

2007/12/20, Joel VanderWerf <vjoel@path.berkeley.edu>:
> Junkone wrote:
> > hello
> > i have to do the following
> > 1. exec("E:\\TradingTools\\IBController> > \IBControllerStart_customised.bat")
> > 2. application = WIN32OLE.new("Broker.Application")
> >
> > I want to start 1 and then continue doing 2. however when i run it
> > realtime, the statement 2 waits for statement 1 to be completed which
> > takes long time. how do i initiate 1 and then withotu waiting goto
> > statement 2.
>
> Wrap #1 in a thread:
>
> Thread.new do
> exec(...)
> end

Wouldn't help. This is #exec and not #system - the process does not
wait, it is completely replaced and "application =
WIN32OLE.new("Broker.Application")" is never executed.

You rather want fork.

fork do
exec ...
end

Cheers

robert

--
use.inject do |as, often| as.you_can - without end

Gordon Thiesfeld

12/20/2007 3:32:00 PM

0

On Dec 20, 2007 2:34 AM, Robert Klemme <shortcutter@googlemail.com> wrote:
> 2007/12/20, Joel VanderWerf <vjoel@path.berkeley.edu>:
> > Junkone wrote:
> > > hello
> > > i have to do the following
> > > 1. exec("E:\\TradingTools\\IBController> > > \IBControllerStart_customised.bat")
> > > 2. application = WIN32OLE.new("Broker.Application")
> > >
> > > I want to start 1 and then continue doing 2. however when i run it
> > > realtime, the statement 2 waits for statement 1 to be completed which
> > > takes long time. how do i initiate 1 and then withotu waiting goto
> > > statement 2.
> >
> > Wrap #1 in a thread:
> >
> > Thread.new do
> > exec(...)
> > end
>
> Wouldn't help. This is #exec and not #system - the process does not
> wait, it is completely replaced and "application =
> WIN32OLE.new("Broker.Application")" is never executed.
>
> You rather want fork.
>
> fork do
> exec ...
> end
>
> Cheers
>
> robert
>
> --
> use.inject do |as, often| as.you_can - without end
>


Fork isn't implemented on Windows. Try this:

system("start E:\\TradingTools\\IBController\\IBControllerStart_customised.bat")
application = WIN32OLE.new("Broker.Application")

-Gordon

Robert Klemme

12/20/2007 4:05:00 PM

0

2007/12/20, Gordon Thiesfeld <gthiesfeld@gmail.com>:
> On Dec 20, 2007 2:34 AM, Robert Klemme <shortcutter@googlemail.com> wrote:
> > 2007/12/20, Joel VanderWerf <vjoel@path.berkeley.edu>:
> > > Junkone wrote:
> > > > hello
> > > > i have to do the following
> > > > 1. exec("E:\\TradingTools\\IBController> > > > \IBControllerStart_customised.bat")
> > > > 2. application = WIN32OLE.new("Broker.Application")
> > > >
> > > > I want to start 1 and then continue doing 2. however when i run it
> > > > realtime, the statement 2 waits for statement 1 to be completed which
> > > > takes long time. how do i initiate 1 and then withotu waiting goto
> > > > statement 2.
> > >
> > > Wrap #1 in a thread:
> > >
> > > Thread.new do
> > > exec(...)
> > > end
> >
> > Wouldn't help. This is #exec and not #system - the process does not
> > wait, it is completely replaced and "application =
> > WIN32OLE.new("Broker.Application")" is never executed.
> >
> > You rather want fork.
> >
> > fork do
> > exec ...
> > end
> >
> > Cheers
> >
> > robert
> >
> > --
> > use.inject do |as, often| as.you_can - without end
> >
>
>
> Fork isn't implemented on Windows.

Unless you are using cygwin. Sorry, I keep forgetting that the other
Windows based versions do not have it. Thanks for correcting me!

> Try this:
>
> system("start E:\\TradingTools\\IBController\\IBControllerStart_customised.bat")
> application = WIN32OLE.new("Broker.Application")

Kind regards

robert

--
use.inject do |as, often| as.you_can - without end

Joel VanderWerf

12/21/2007 7:56:00 PM

0

Robert Klemme wrote:
> 2007/12/20, Joel VanderWerf <vjoel@path.berkeley.edu>:
>> Junkone wrote:
>>> hello
>>> i have to do the following
>>> 1. exec("E:\\TradingTools\\IBController>>> \IBControllerStart_customised.bat")
>>> 2. application = WIN32OLE.new("Broker.Application")
>>>
>>> I want to start 1 and then continue doing 2. however when i run it
>>> realtime, the statement 2 waits for statement 1 to be completed which
>>> takes long time. how do i initiate 1 and then withotu waiting goto
>>> statement 2.
>> Wrap #1 in a thread:
>>
>> Thread.new do
>> exec(...)
>> end
>
> Wouldn't help. This is #exec and not #system - the process does not
> wait, it is completely replaced and "application =
> WIN32OLE.new("Broker.Application")" is never executed.

Oops, you're quite right, I was thinking of #system.

Maybe #system would be right for the OP:

Thread.new do
system("...")
end

application = ..

This is AFAIK platform independent, since it doesn't (explicitly,
anyway) use #fork or "start".

--
vjoel : Joel VanderWerf : path berkeley edu : 510 665 3407

Junkone

12/22/2007 12:48:00 AM

0

On Dec 21, 2:55 pm, Joel VanderWerf <vj...@path.berkeley.edu> wrote:
> Robert Klemme wrote:
> > 2007/12/20, Joel VanderWerf <vj...@path.berkeley.edu>:
> >> Junkone wrote:
> >>> hello
> >>> i have to do the following
> >>> 1.     exec("E:\\TradingTools\\IBController> >>> \IBControllerStart_customised.bat")
> >>>  2.     application = WIN32OLE.new("Broker.Application")
>
> >>> I want to start 1 and then continue doing 2. however when i run it
> >>> realtime, the statement 2 waits for statement 1 to be completed which
> >>> takes long time. how do i initiate 1 and then withotu waiting goto
> >>> statement 2.
> >> Wrap #1 in a thread:
>
> >> Thread.new do
> >>    exec(...)
> >> end
>
> > Wouldn't help.  This is #exec and not #system - the process does not
> > wait, it is completely replaced and "application =
> > WIN32OLE.new("Broker.Application")" is never executed.
>
> Oops, you're quite right, I was thinking of #system.
>
> Maybe #system would be right for the OP:
>
>    Thread.new do
>      system("...")
>    end
>
>    application = ..
>
> This is AFAIK platform independent, since it doesn't (explicitly,
> anyway) use #fork or "start".
>
> --
>        vjoel : Joel VanderWerf : path berkeley edu : 510 665 3407- Hide quoted text -
>
> - Show quoted text -

i tried that. it does not work for me. it waits
Thread.new do
system("start E:\\TradingTools\\IBController\IBControllerStart_customised.bat")
end
to get completed before going and doing this
application = WIN32OLE.new("Broker.Application")