Thread Start/stop a process (8 answers)
Opened by Emeto at 2012-01-26 10:58

topeg
 2012-01-26 11:27
#155681 #155681
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
ungetestet, aber so ungefähr sollte es gehen:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#!/usr/bin/perl
use strict;
use warnings;

my $commandline='"Editor.exe" /CAS-FILE=$file';
my $timeout=160; #Sekunden

local $SIG{CHLD}='IGNORE';

my $pid=fork;

die("Fork failed!") unless(defined($pid));

if($pid)
{
  my $start=time();
  while($start+$timeout > time())
  {
    sleep 1;
    last unless(kill(0,$pid));
  }

  # Zeit abgelaufen und Prozess läuft noch
  if($start+$timeout <= time() && kill(0,$pid))
  {
    # Prozess beenden

    # erster Versuch
    # freundlich fragen
    kill(15,$pid);
    sleep 2;

    # zweiter versuch
    if(kill(0,$pid))
    {
      kill(15,$pid);
      sleep 2;

      # das dritte mal Prozess abwürgen!
      kill(9,$pid) if(kill(0,$pid));
    }
  }
}
else
{
  # externes Programm mit der aktuellen Prozess ID starten
  exec($commandline);
}

View full thread Start/stop a process