回答
REWORK:(IDK我怎么到这里来,我只是丢失)
这仅适用于Windows的作品的原因是shell中执行(TASKKILL)。
system('taskkill /F /IM ImageName.exe >nul 2>&1');
的可能重复:
How can I kill a program that might not exist from Perl on Win32?
的perl>系统文件:
http://perldoc.perl.org/functions/system.html
TASKKILL文档:
关于语法重定向(基于在awnser从How can I kill a program that might not exist from Perl on Win32?):
您只需要补充一点:
use autodie 'system';
system('killall', '-q', 'JMP');
或
use autodie 'system';
system('pkill', 'JMP');
如果你要处理的错误检查自己,而不是使用autodie,它看起来像
die "Can't launch killall: $!\n" if $? < 0;
die "killall killed by signal ".($? & 0x7F)."\n" if $? & 0x7F;
die "killall exited with error ".($? >> 8)."\n" if $? >> 8;
使用我在这个问题上从别人那里获得的有用输入,重写答案更适合于这个问题在眼前。
它检查是否正在运行的进程,给你做的比杀更(安慰,如果需要杀死它的子流程的打印输出等)的能力,运行killall
如果程序只运行,然后启动jmp
。
#!/usr/bin/perl
use warnings;
use strict;
# Read all script-name processes
open PROS, "ps -ef| grep jmp |";
# Iterate the processes
while ($line = <PROS>){
# If we match the process, kill all instances
unless ($line =~ m/grep/){
system 'killall jmp';
last;
}
}
# Finished with the processes
close PROS;
# Start jmp
exec 'nohup /path/to/jmp &';
如果你使用的是Windows,你会想看看taskkill
而不是killall
。
我收到一个错误:'ps'不被识别为内部或外部命令, 可操作的程序或批处理文件。 – Vera
@Vera所以你使用Windows?本来有用的问题。 –
- 1. 如何检查boost线程是否正在运行并终止它
- 2. 检查进程是否正在运行
- 3. 检查进程是否正在运行
- 4. 如何检测进程或应用程序是否正在运行并终止程序如果它不是
- 5. Boost.Process检查进程是否终止
- 6. 检查进程是否正在运行,如果不启动它
- 7. 检查进程是否正在运行(使用进程名称)
- 8. 如何检查子进程是否正确终止?
- 9. 检查特定进程是否处于活动状态并终止它
- 10. 检查程序是否正在运行
- 11. 检查程序是否正在运行
- 12. 检查Word是否已正确终止
- 13. 如何检查应用程序是否正在运行,否则运行它?
- 14. 如何检查Hadoop守护进程是否正在运行?
- 15. 如何检查某个进程是否正在运行或不
- 16. 通过使用PID检查进程是否正在运行
- 17. 检查守护进程是否正在运行
- 18. C#:检查进程是否正在运行问题
- 19. 如何检查Linux中是否正在运行进程?
- 20. 如何检查是否一些进程正在运行
- 21. 检查用户是否有进程正在运行
- 22. PHP检查进程是否正在运行(Linux)
- 23. 如何检查进程是否正在运行
- 24. Bash脚本检查进程是否正在运行
- 25. 如何检查进程是否正在运行 - Linux
- 26. C++检查特定进程是否正在运行
- 27. Python检查当前进程是否正在运行?
- 28. 检查子进程是否正在运行
- 29. 检查WINWORD.EXE进程是否正在运行?
- 30. 如何检查正在运行的进程是否是后台进程?
看,这可能帮助ühttp://stackoverflow.com/questions/11273636/check-if-program-is-running -and-run-it-if-in-perl – Developer
$ exists = kill 0,1525; ($存在);打印“进程正在运行\ n”( );从这个你也可以检查 – Developer
这是什么意思0,1525?它如何指向特定的过程? – Vera