# Asynchronous command call

**URL:** <https://www.ruby-forum.com/t/asynchronous-command-call/91165>\
**Category:** Ruby\
**Created:** [April 5, 2007, 9:52am UTC](https://www.ruby-forum.com/t/asynchronous-command-call/91165 "2007-04-05T09:52:08Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![guest](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/8dc957/32.png) [@guest](https://www.ruby-forum.com/u/guest)\
**Post date:** [April 5, 2007, 9:52am UTC](https://www.ruby-forum.com/t/asynchronous-command-call/91165/1 "2007-04-05T09:52:08Z")

</div>

I am trying to use a ruby script to start a apache tomcat server like  
this:

dir = “C:\program\apache-tomcat-5.5.20\bin”  
`#{dir}\\shutdown.bat` rescue nil  
`#{dir}\\startup.bat`

This works, except that the program never exits. I would like the  
startup call to be made Asynchronous so that the script would just call  
startup and then exit.

Ive tried calling startup in a different thread, with the same result.

/Emil

---

<div class="post-metadata">

**Author:** ![guest](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/8dc957/32.png) [@guest](https://www.ruby-forum.com/u/guest)\
**Post date:** [April 5, 2007, 10:22am UTC](https://www.ruby-forum.com/t/asynchronous-command-call/91165/2 "2007-04-05T10:22:19Z")

</div>

On 05.04.2007 09:52, Guest wrote:

> startup and then exit.
> 
> Ive tried calling startup in a different thread, with the same result.

You could use cmd’s command “start”.

H:\>start /?  
Starts a separate window to run a specified program or command.

START [“title”] [/D path] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]  
[/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL |  
/BELOWNORMAL]  
[/AFFINITY] [/WAIT] [/B] [command/program]  
[parameters]

```
 "title" Title to display in window title bar.
 path Starting directory
 B Start application without creating a new window. The
             application has ^C handling ignored. Unless the 

```

application  
enables ^C processing, ^Break is the only way to  
interrupt  
the application  
I The new environment will be the original environment  
passed  
to the cmd.exe and not the current environment.  
MIN Start window minimized  
MAX Start window maximized  
SEPARATE Start 16-bit Windows program in separate memory space  
SHARED Start 16-bit Windows program in shared memory space  
LOW Start application in the IDLE priority class  
NORMAL Start application in the NORMAL priority class  
HIGH Start application in the HIGH priority class  
REALTIME Start application in the REALTIME priority class  
ABOVENORMAL Start application in the ABOVENORMAL priority class  
BELOWNORMAL Start application in the BELOWNORMAL priority class  
AFFINITY The new application will have the specified processor  
affinity mask, expressed as a hexadecimal number.  
WAIT Start application and wait for it to terminate  
command/program  
If it is an internal cmd command or a batch file then  
the command processor is run with the /K switch to  
cmd.exe.  
This means that the window will remain after the  
command  
has been run.

```
             If it is not an internal cmd command or batch file then
             it is a program and will run as either a windowed

```

application  
or a console application.

```
 parameters These are the parameters passed to the command/program

```

If Command Extensions are enabled, external command invocation  
through the command line or the START command changes as follows:

non-executable files may be invoked through their file association just  
by typing the name of the file as a command. (e.g. WORD.DOC would  
launch the application associated with the .DOC file extension).  
See the ASSOC and FTYPE commands for how to create these  
associations from within a command script.

When executing an application that is a 32-bit GUI application, CMD.EXE  
does not wait for the application to terminate before returning to  
the command prompt. This new behavior does NOT occur if executing  
within a command script.

When executing a command line whose first token is the string "CMD "  
without an extension or path qualifier, then “CMD” is replaced with  
the value of the COMSPEC variable. This prevents picking up  
CMD.EXE  
from the current directory.

When executing a command line whose first token does NOT contain an  
extension, then CMD.EXE uses the value of the PATHEXT  
environment variable to determine which extensions to look for  
and in what order. The default value for the PATHEXT variable  
is:

```
     .COM;.EXE;.BAT;.CMD

 Notice the syntax is the same as the PATH variable, with
 semicolons separating the different elements.

```

When searching for an executable, if there is no match on any extension,  
then looks to see if the name matches a directory name. If it does, the  
START command launches the Explorer on that path. If done from the  
command line, it is the equivalent to doing a CD /D to that path.

H:\>

robert

---

<div class="post-metadata">

**Author:** ![guest](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/8dc957/32.png) [@guest](https://www.ruby-forum.com/u/guest)\
**Post date:** [April 5, 2007, 5:01pm UTC](https://www.ruby-forum.com/t/asynchronous-command-call/91165/3 "2007-04-05T17:01:00Z")

</div>

On Thu, 5 Apr 2007, Guest wrote:

> startup and then exit.
> 
> Ive tried calling startup in a different thread, with the same result.

use exec

> /Emil
> 
> –  
> Posted via [http://www.ruby-forum.com/](http://www.ruby-forum.com/).

-a
