2010-06-29 56 views
-2

願你轉換這個小小的代碼來砸代碼:轉換Perl代碼Bash的代碼

user/bin/perl 
sleep(300); 
system("killall -9 perl &"); 
sleep(5) 
+3

請不要使用'kill -9',除非有必要。參見[無用的kill -9](http://sial.org/howto/shell/kill-9/)。 – 2010-06-30 00:06:42

+0

這是功課嗎? – Ether 2010-06-30 00:19:04

回答

2
sleep 300 
killall -9 perl & 
sleep 5 
6
#!/bin/bash 
sleep 300 
killall -9 perl & 
sleep 5 
1

Perl程序將殺死不僅所有其他的perl的進程,但也本身,所以在功能上等同翻譯會是這樣的

#!/bin/bash 
sleep 300 
killall -9 perl & 
kill -9 $$ & 
sleep 5 

最終sleep 5大概從來沒有在原來的腳本或執行在這一個中,儘管睡眠命令至少可能開始執行。

如果翻譯成bash的原因正是這樣,即該程序假定而不是自殺,其他答案更好。

正如丹尼斯威廉姆森所說的,無論哪種情況,你的腳本可能不應該使用kill -9,並且通常不會全局殺死,但如果可能有不良副作用,它取決於你的環境。