Threads killen

Markus Walser <[email protected]> Wed, 14 May 2003 17:39:03 +0200
Newsgroups gmane.comp.lang.ruby.german
Organization Supercomputing Systems AG
Message-ID <[email protected]>
Hallo
Attached ist ein kleines Beispiel, welches leider nicht so funktioniert wie ich 
mir das vorgestellt habe :-(
Was im Buch "Programmieren mit Ruby" Seite 93 ueber Ruby Threads geschrieben
steht, hat sich leider bewahrheitet: Der Prozess, welcher mit system gestartet wird,
laeuft nach dem kill weiter. Selbst nach beenden des Ruby Skripts ist er noch aktiv.

Kennt da jemand einen Workaround oder weiss jemand wie man das sauber machen
muesste, damit der mit system gestartete Prozess durch den Aufruf von Thread.kill 
auch beendet wird?


Viele Gruesse, Markus
try.rb (text/plain, 358 B)
#!/usr/bin/ruby

class Worker
	 def initialize
	 end
	 def start(&action)
	 	 @thr = Thread.new{
	 	 	 action.call
	 	 }
	 end
	 def abort
	 	 if @thr!=nil && @thr.alive?
		 	 @thr.kill
			 puts "killed worker thread"
		 end
	 end
end


aWorker = Worker.new

aWorker.start {
	 system("while [ 1 ] ; do ls > /dev/null; done")
}

sleep 5
aWorker.abort
sleep 5