Thread Skript nach Programmaufruf fortsetzen (12 answers)
Opened by IceRage at 2008-09-16 02:13

murphy
 2008-09-16 11:43
#114696 #114696
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
IceRage+2008-09-16 00:13:48--
[...]
Das Sktipt soll Folgendes tun:

- 1. Browser öffnen
- 2. In die while schleife (Parent Prozess) gehen
- 3. Nach 20 Schleifendurchläufen (Parent Prozess) den Browser, an Hand der übermittelten PID schließen.
- 4. Dann wieder das Selbe ... 1.
[...]


Also nochmal zum Kern des Problemes. Ich würde folgendes machen:
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
use strict;
use warnings;
use POSIX;
use constant TIMEOUT => 20;

my $firefox;
unless ($firefox = fork) {
  die "Failed to fork: $!" unless (defined $firefox);
  exec '/woimmer/ich/bin/firefox', 'http://www.example.com/';
  die "Failed to spawn firefox: $!";
}
else {
  # remember time the browser was started
  my $start = time;
  my $remaining = TIMEOUT;

  # only loop while the browser is still running and the timeout is not over
  while (waitpid($firefox, WNOHANG) < 0 and $remaining > 0) {
    sleep $remaining;
    $remaining = $start + TIMEOUT - time;
  }

  # send the browser a TERM signal
  kill TERM => $firefox;
  # clean up the zombie process
  die "Problems cleaning up the browser process: $!" if (waitpid($firefox, 0) < 0);
}

(Vorsicht: Code ungetestet!)

Anmerkung: Falls Du eigentlich nur alle paar Sekunden eine neue Webseite anzeigen willst, musst Du den Browser, den Du startest, nicht wieder beenden. Suche mal im Netz nach firefox -remote 'openURL(...)'...
When C++ is your hammer, every problem looks like your thumb.

View full thread Skript nach Programmaufruf fortsetzen