[Vienna-pm] OpenOffice starten

Stefan Weiss spaceman at foo.at
Sat Dec 6 13:01:33 CST 2003


Hi.

Ich muß aus einem Skript OpenOffice1.1 starten. Das Office sollte
auch weiterlaufen, wenn das ursprüngliche Skript beendet wird.
Leider gelingt mir das im Moment nicht so wirklich, und mir sind
fürs erste die Ideen ausgegangen.

Das folgende Skript ist stark reduziert und soll nur den Effekt
demonstrieren, das nötige Errorhandling habe ich weggelassen. Wenn
das OpenOffice läuft, erscheint es im ps-Output als (mindestens)
vier seperate Prozesse. Wenn man das Skript am Ende mit ^C beendet,
sterben zwei der vier OO-Prozesse mit, und was übrigbleibt ist nur
mehr eine Leiche. Wahrscheinlich muß nach dem fork() der Child-
Prozess noch etwas tun, um sich vom Parent zu lösen, aber was?

TIA,
stefan

-------------------------------------------------------------------

#!/usr/bin/perl -w
use strict;

# $ENV{DISPLAY} = ":0.0";
# $SIG{CHLD} = "IGNORE";
my $pid;
my $user = $ENV{USER};

sub office_is_running {
  return `ps aux` =~ m#($user[^\n]+program/soffice\.bin -writer.*?\n){4}#;
}

print "starting OO...\n";
if (office_is_running()) {
  print "OO is already running, bye bye.\n";
  exit 0;
}

if ($pid = fork) {
  print "forked child with pid $pid is now OO\n";
} else {
  exec("/usr/local/OpenOffice.org1.1.0/program/soffice -writer");
}

# wait for OO startup to complete
for (1 .. 30) {
  sleep 2;
  last if office_is_running();
  print "OO not running after ".(2*$_)." seconds...\n";
}
if (office_is_running()) {
  print "OO up and running\n";
} else {
  die "could not start OO (reached timeout of 60 sec)\n";
}

sleep 1000;  ### hier mit ^C beenden




More information about the Vienna-pm mailing list