Killing a thread

D

David Schulberg

This code starts my application in a windows thread fine but the last
line does not kill the application that got fired up initially. How
come?

x = Thread.new do
system('app.exe')
end
sleep 10
Thread.kill(x)


David
 
M

Marvin Gülker

David said:
system('app.exe')

This starts a subprocess which cannot be killed by killing the thread.
Use Kernel#spawn (that should work on Windows, too, I think) instead and
kill the subprocess:
-------------------------------
pid = spawn("app.exe")
sleep 10
Process.kill("KILL", pid)
-------------------------------
Note that you don't need the thread anymore.

Marvin

PS: You may have a look here:
http://wiki.ruby-portal.de/Tricks#Externe_Programme_starten
;-)
 
D

David Schulberg

Doesn't work on Windows.

irb(main):004:0> $pid = spawn('tftpd32.exe')
NoMethodError: undefined method `spawn' for main:Object
from (irb):4

Thought I needed popen4 but that gem didn't make any difference.
 
M

Marvin Gülker

David said:
Doesn't work on Windows.

irb(main):004:0> $pid = spawn('tftpd32.exe')
NoMethodError: undefined method `spawn' for main:Object
from (irb):4

Thought I needed popen4 but that gem didn't make any difference.

Oh, sorry. It's some time ago since I last worked with processes on a
Windows system. You then may have a look at the win32-process gem from
the win32-utils project: http://rubyforge.org/projects/win32utils/

Hope that helps,

Marvin
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,770
Messages
2,569,584
Members
45,075
Latest member
MakersCBDBloodSupport

Latest Threads

Top