writer bleibt nach "oDoc.close" hängen

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

egerlach
****
Beiträge: 107
Registriert: Fr, 13.10.2006 20:21

writer bleibt nach "oDoc.close" hängen

Beitrag von egerlach »

Warum beendet der folgende Code den writer (2.2.0) nicht? - OO von der Linux-Kommandozeile gestartet, dann dieser Code per Autostart (Extras -> Anpassen -> Ereignisse) ausgeführt beendet writer nicht vollständig, sondern writer bleibt in de Prozessliste hängen! Das Writer-Window ist wenigstens schon mal zu.

gerlach@rex3:~>soffice /home/linuxburg/technik/kurzfax/kurzfax.odt
[hier meldet sich der Linux-promt nicht wieder]

aus der Linux-Prozessliste:
6565 pts/3 Sl+ 0:06 /etc/openoffice.org2.2/program/soffice.bin /home/linuxburg/technik/kurzfax/kurzfax.odt

OpenOffice hängt also! Der Code:

Code: Alles auswählen

Sub Main
Dim DatabaseContext as Object, oDVerb as Object
Dim FileNo As Integer, CurrentLine As String, File As String, Msg as String
Dim DruckEigenschaften(0) As New com.sun.star.beans.PropertyValue

oDoc = ThisComponent
oDoc.close( True )
End Sub
Wer kann weiterhelfen?

BTW: oDok = Stardesktop.currentComponent anstelle oDoc = ThisComponent wurde auch schon getestet. Gleicher Misserfolg!

# strace -p 1973
Process 1973 attached - interrupt to quit
select(9, [6 8], NULL, [8], {0, 216000}) = 0 (Timeout)
gettimeofday({1194204713, 389100}, NULL) = 0
gettimeofday({1194204713, 389254}, NULL) = 0
gettimeofday({1194204713, 389398}, NULL) = 0
gettimeofday({1194204713, 389532}, NULL) = 0
gettimeofday({1194204713, 389676}, NULL) = 0
select(9, [6 8], NULL, [8], {0, 249424}) = 0 (Timeout)
gettimeofday({1194204713, 640375}, NULL) = 0
gettimeofday({1194204713, 640411}, NULL) = 0
gettimeofday({1194204713, 640443}, NULL) = 0
gettimeofday({1194204713, 640510}, NULL) = 0
gettimeofday({1194204713, 640545}, NULL) = 0
select(9, [6 8], NULL, [8], {0, 249830}) = 0 (Timeout)
gettimeofday({1194204713, 891902}, NULL) = 0
gettimeofday({1194204713, 892050}, NULL) = 0
gettimeofday({1194204713, 892193}, NULL) = 0
gettimeofday({1194204713, 892329}, NULL) = 0
gettimeofday({1194204713, 892475}, NULL) = 0
select(9, [6 8], NULL, [8], {0, 249427}) = 0 (Timeout)
gettimeofday({1194204714, 183174}, NULL) = 0
gettimeofday({1194204714, 205427}, NULL) = 0
gettimeofday({1194204714, 205807}, NULL) = 0
gettimeofday({1194204714, 206119}, NULL) = 0
gettimeofday({1194204714, 206278}, NULL) = 0
select(9, [6 8], NULL, [8], {0, 226896}) = 0 (Timeout)
gettimeofday({1194204714, 431491}, NULL) = 0
gettimeofday({1194204714, 431665}, NULL) = 0
select(9, [6 8], NULL, [8], {0, 10000}) = 0 (Timeout)
gettimeofday({1194204714, 446023}, NULL) = 0
gettimeofday({1194204714, 446058}, NULL) = 0
gettimeofday({1194204714, 446084}, NULL) = 0
gettimeofday({1194204714, 446106}, NULL) = 0
write(7, "\0", 1) = 1
gettimeofday({1194204714, 446206}, NULL) = 0
select(9, [6 8], NULL, [8], {0, 10000}) = 1 (in [6], left {0, 10000})
gettimeofday({1194204714, 447358}, NULL) = 0
read(6, "\0", 4) = 1
read(6, 0xbfce05a8, 4) = -1 EAGAIN (Resource temporarily unavailable)
gettimeofday({1194204714, 447816}, NULL) = 0
select(9, [6 8], NULL, [8], {0, 10000}) = 0 (Timeout)
gettimeofday({1194204714, 462299}, NULL) = 0

Hintergrund:
Warum ich unbedingt einen wiederkehrenden Prompt brauche: es wird das pdf auf Linux-Seite weiterverarbeitet! (Hinweis: der gezeigte code ist schon gekürzt (aber genauso fehlerhaft)!

Gruss
Eckard
Zuletzt geändert von egerlach am So, 04.11.2007 20:45, insgesamt 2-mal geändert.
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: writer bleibt nach "oDoc.close" hängen

Beitrag von komma4 »

[untested]...vielleicht, weil Du das Dokument änderst, als PDF exportierst und dann nicht speicherst.

Probiere mal ein

Code: Alles auswählen

oDoc.setModified(FALSE)
vor dem .close()
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
egerlach
****
Beiträge: 107
Registriert: Fr, 13.10.2006 20:21

Re: writer bleibt nach "oDoc.close" hängen

Beitrag von egerlach »

Nein, geht so leider nicht:

Code: Alles auswählen

Sub Main
Dim DatabaseContext as Object, oDVerb as Object
Dim FileNo As Integer, CurrentLine As String, File As String, Msg as String
Dim DruckEigenschaften(0) As New com.sun.star.beans.PropertyValue

oDoc = ThisComponent
oDoc.setModified(FALSE)
oDoc.close( True )
End Sub
genau der gleiche Fehler!

strace -p 4845
Process 4845 attached - interrupt to quit
select(9, [6 8], NULL, [8], {0, 36000}) = 0 (Timeout)
gettimeofday({1194205182, 923502}, NULL) = 0
gettimeofday({1194205182, 923648}, NULL) = 0
gettimeofday({1194205182, 923794}, NULL) = 0
gettimeofday({1194205182, 923931}, NULL) = 0
gettimeofday({1194205182, 924079}, NULL) = 0
select(9, [6 8], NULL, [8], {0, 249423}) = 0 (Timeout)
gettimeofday({1194205183, 174970}, NULL) = 0
gettimeofday({1194205183, 175118}, NULL) = 0
gettimeofday({1194205183, 175264}, NULL) = 0
gettimeofday({1194205183, 175400}, NULL) = 0
gettimeofday({1194205183, 175548}, NULL) = 0
select(9, [6 8], NULL, [8], {0, 249422}) = 0 (Timeout)
gettimeofday({1194205183, 426405}, NULL) = 0
gettimeofday({1194205183, 426554}, NULL) = 0
gettimeofday({1194205183, 426697}, NULL) = 0
gettimeofday({1194205183, 426833}, NULL) = 0
gettimeofday({1194205183, 426984}, NULL) = 0
select(9, [6 8], NULL, [8], {0, 249421}) = 0 (Timeout)
gettimeofday({1194205183, 677803}, NULL) = 0
gettimeofday({1194205183, 677953}, NULL) = 0
gettimeofday({1194205183, 678098}, NULL) = 0
gettimeofday({1194205183, 678233}, NULL) = 0
gettimeofday({1194205183, 678380}, NULL) = 0
select(9, [6 8], NULL, [8], {0, 249423}) = 0 (Timeout)
gettimeofday({1194205183, 929121}, NULL) = 0
gettimeofday({1194205183, 929270}, NULL) = 0
gettimeofday({1194205183, 929414}, NULL) = 0
gettimeofday({1194205183, 929550}, NULL) = 0
gettimeofday({1194205183, 929698}, NULL) = 0
select(9, [6 8], NULL, [8], {0, 249423} <unfinished ...>
Process 4845 detached
hol.sten
******
Beiträge: 871
Registriert: Fr, 18.11.2005 21:21

Re: writer bleibt nach "oDoc.close" hängen

Beitrag von hol.sten »

egerlach hat geschrieben:writer bleibt in de Prozessliste hängen!
Vielleicht hilft dir dies hier weiter: http://www.oooforum.org/forum/viewtopic ... nate+basic

Regards
hol.sten
egerlach
****
Beiträge: 107
Registriert: Fr, 13.10.2006 20:21

Re: writer bleibt nach "oDoc.close" hängen

Beitrag von egerlach »

Danke! Ich es geht unter Unix/Linux nicht. Mist!
Gemäß der Iden in dem von Dir verzeigerten thread könnte mit viel Aufwand unter OO-BASIC eine Datei "killme" z.B. unter /tmp/ erzeugt werden, die einen ständig unter Unix laufenden Prozess dazu anleitet, ein soffice, das mit bestimmten Parametern (z.B. invisible) gestartet ist, abzuschiessen. Oder das markante "Sl+" in der Prozessliste immer abschiessen, wenn es mit soffice auftritt, "Sl" scheint das normale zu sein, Sl+ das im "hängenden" Zustand.
Der letzte Beitrag in dem verzeigerten thread macht ein Shell("pkill soffice.bin") in BASIC selbst. Das ist okay, wenn OO sonst nicht geöffnet ist. Bei mir ist OO mehrfach geöffnet, es soll nicht pauschal OO abgeschossen werden. Natürlich könnte das kill noch verfeinert werden auf das eine bestimmte writer Dokument, das (absichtlich) mit besonders markanten Parametern gestartet wird. Aber dann fragt OO bei jedem erneuten Start (auch von der Kommandozeile im Skript!!) ob das letzte abgeschossene Dokument wiederhergestellt werden soll!! So ein shit! Das ist alles schmuddelig ..

Aber vielleicht hat hier jmd. noch eine gute Lösung.

Gruss
Eckard

Nachtrag: mit
oDoc.storeToURL(sUrl,DruckEigenschaften())
wait 1000
oDoc.close( True )
Shell("pkill soffice.bin")
gehts als Würgaround bei mir! Einem close des Dokumentes, was ja auch OO beendet wird noch ein kill hinterhergeschossen.

Besser noch ist: pkill myfax, dann wird nur der Prozess mit myfax im Argument abgeschossen und nicht alle geöffneten soffice-Dokumente.
Antworten