我有以下程序,旋轉起來100個不同的工藝(是的,我知道我應該關閉的端口,我只是不這樣做在這個例子中)後:Subproccesses仍然活着,球拍程序暫停
#lang racket ; evil.rkt
(require compiler/find-exe)
(for ([i (in-range 100)])
(process* (find-exe) "-e" "(let loop() (loop))"))
正如預期的那樣,當我運行這個程序,並運行ps -fe | grep 'racket'
讓所有正在運行的球拍進程的列表,我看到的是這樣的:
....
73187 ?? 0:00.47 /Users/leif/racket/racket/bin/racket -e (let loop() (loop))
73188 ?? 0:00.44 /Users/leif/racket/racket/bin/racket -e (let loop() (loop))
73189 ?? 0:00.45 /Users/leif/racket/racket/bin/racket -e (let loop() (loop))
73190 ?? 0:00.45 /Users/leif/racket/racket/bin/racket -e (let loop() (loop))
73191 ?? 0:00.43 /Users/leif/racket/racket/bin/racket -e (let loop() (loop))
73192 ?? 0:00.41 /Users/leif/racket/racket/bin/racket -e (let loop() (loop))
73193 ?? 0:00.39 /Users/leif/racket/racket/bin/racket -e (let loop() (loop))
73194 ?? 0:00.35 /Users/leif/racket/racket/bin/racket -e (let loop() (loop))
73195 ?? 0:00.34 /Users/leif/racket/racket/bin/racket -e (let loop() (loop))
73196 ?? 0:00.34 /Users/leif/racket/racket/bin/racket -e (let loop() (loop))
73197 ?? 0:00.29 /Users/leif/racket/racket/bin/racket -e (let loop() (loop))
....
的問題是,該計劃甚至之後終止,這些進程仍在運行。
如果我在shell中運行它,並按Ctr + C終止程序,大多數進程停止。但是,偶爾有一兩個人會繼續跑步。
當我切換到使用process
而不是process*
此問題消失。有什麼我可以做的,以確保我的子流程停止時,我終止程序?