GPS Here is a little script I wrote to kill a fork bomb:
proc list.processes {} { set p [open {|ps -ax}] set data [read $p] close $p return $data } proc main {argc argv} { if {1 != $argc} { return -code error {please specify one argument} } set killThis [lindex $argv 0] while 1 { set ps [list.processes] set pList [split $ps \n] set killedAny 0 foreach p $pList { puts P:$p if {[regexp "(\[0-9\]+).*[set killThis]\[ \t\]*\$" $p -> pid]} { puts PID:$pid catch {exec kill -9 $pid} set killedAny 1 } } if {!$killedAny} return } } main $::argc $::argv
Usage: tclsh8.4 kill_all.tcl someProcessName