Schrift
[thread]6947[/thread]

Can't spwan "cmd.exe": Perl, Windows, system, >>



<< |< 1 2 >| >> 14 Einträge, 2 Seiten
Crian
 2005-05-02 18:10
#54385 #54385
User since
2003-08-04
5870 Artikel
ModeratorIn
[Homepage]
user image
Ich hab ein blödes, sporadisch auftretendes Problem unter Windows 2000 und Windows XP: Ab und zu (meistens geht es gut) produziert die Zeile
Code: (dl )
system("$FindBin::Bin/rt.pl $xf >> $FindBin::Bin/../log/$ts.log");

die im Titel beschriebene Fehlermeldung
Code: (dl )
Can't spawn "cmd.exe": No such file or directory at  ... 



Allerdings tritt diese Meldung nicht unmittelbar beim Durchlaufen dieses Befehls auf, sondern mitten bei der Abrarbeitung des aufgerufenen Perl-Programms. Vermutlich an einer Stelle, wo an das Logfile angehängt werden soll.

Der Fehler ist nicht an Ort und Stelle reproduzierbar, die angemeckerten Aufrufe klappen im nächsten Versuch wunderbar, dafür meckert er dort dann an anderer Stelle. Das ganze System ist ein Rahmenprogramm, das in einer Schleife einzelne Dateien an rt.pl verfüttert und bei Gesamterfolg am Ende eine Nachverarbeitung anstößt. Ich könnte jetzt natürlich auch alle Funktionalitäten aus rt.pl in ein Modul auslagern und dann in rt.pl und in diesem Programm die entsprechenden Funktionen anziehen, aber eigentlich sollte es doch wohl auch so irgendwie gehen.

Die Perl-Version ist in beiden Fällen Active State 5.6.8.

Ich habe hier schon eine Diskussion zu einem ähnlichen Problem gefunden, allerdings ist auf den genannten Systemen kein Cygwin installiert. Das Problem scheint irgendwie das Anhängen an die Datei zu sein.

Bevor ich jetzt aber "aufgebe" und diese rudimentäre Betriebssystemfunktionalität in Perl nachbilde, wollte ich nachfragen, ob hier jemand vielleicht das Problem kennt und eine Lösung dafür hat.


Besonders nervig ist es unter XP, weil da vor dieser Meldung erstmal die schöne Dialogbox "Perl Command line Interpreter hat ein Problem festgestellt und muss beendet werden .... an Microsoft senden?" aufgeht, und erst nach dem Klick auf "nicht senden" die oben gennannte Fehlermeldung auftritt. Das ist besonders lästig, da der Programmlauf hier unnötig unterbrochen wird und das aufrufende Programm nicht (bzw. erst nach der Benutzerinteraktion) die Chance bekommt, $? auszuwerten.



Ich werde mal testen, ob es etwas ändert, die Befehle vorher in eine temporäre xyz.cmd Datei zu schreiben und dann diese per System auszuführen. Wäre aber irgendwie unelegant.
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
Strat
 2005-05-02 18:29
#54386 #54386
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
mag vielleicht Windows die / nicht? vielleicht mal mit \ versuchen... oder das externe Programm mit Win32::Process starten
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
Crian
 2005-05-02 18:37
#54387 #54387
User since
2003-08-04
5870 Artikel
ModeratorIn
[Homepage]
user image
Dann müsste er aber doch jedesmal meckern, und nicht nur ab und zu mal nicht-reproduzierbar.
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
murphy
 2005-05-02 18:49
#54388 #54388
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
[quote=Strat,02.05.2005, 16:29]mag vielleicht Windows die / nicht? vielleicht mal mit \ versuchen...
[...][/quote]
Seit Windows 2000 oder so, aber auf jeden Fall bei Windows XP, sind "/" und "\" als Pfadtrennzeichen äquivalent. Daran sollte es also nicht liegen.

Da Windows XP eine Dialogbox mit "Perl... hat einen Fehler festgestellt und muss beendet werden ..." erzeugt, muss das Problem ja irgendwo in den Tiefen des Perlinterpreters ein ziemliches Chaos verursachen. Es wäre eventuell auch hilfreich, die "Details" des angebotenen Fehlerberichtes mal anzusehen. Dann wüsste man zumindest, was für eine Art von low-level Fehler auftritt.
When C++ is your hammer, every problem looks like your thumb.
Crian
 2005-05-02 20:11
#54389 #54389
User since
2003-08-04
5870 Artikel
ModeratorIn
[Homepage]
user image
Gute Idee, die Hitze heute hat mir eindeutig aufs Hirn geschlagen, zumal die beiden Rechner bei uns "unterm Dach" stehen, wo es echt elend drückend war heute... ich schau mal nach, wenn sich die Box nochmal öffnet.
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
Crian
 2005-05-03 11:32
#54390 #54390
User since
2003-08-04
5870 Artikel
ModeratorIn
[Homepage]
user image
Ich habe übernacht die Variante mit der Batchdatei getestet, ohne Erfolg. Auch die dreimalige Wiederholung brachte keinen Erfolg, aus dem selben Programm gestartet tritt der Fehler dreimal an der selben Stelle auf, auch wenn sich diese Datei einzeln problemlos verarbeiten lässt.

Hier ist die Datei, die zu der generierten Fehlermeldung gehört. Wird jemand daraus schlauer?

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?xml version="1.0" encoding="UTF-16"?>
<DATABASE>
<EXE NAME="perl.exe" FILTER="GRABMI_FILTER_PRIVACY">
<MATCHING_FILE NAME="a2p.exe" SIZE="86092" CHECKSUM="0xEB12925" MODULE_TYPE="WIN32" PE_CHECKSUM="0x0" LINKER_VERSION="0x0" LINK_DATE="12/13/2004 17:52:59" UPTO_LINK_DATE="12/13/2004 17:52:59" />
<MATCHING_FILE NAME="perl.exe" SIZE="41033" CHECKSUM="0x5FAAFC54" BIN_FILE_VERSION="5.8.6.811" BIN_PRODUCT_VERSION="5.8.6.811" PRODUCT_VERSION="Build 811" FILE_DESCRIPTION="Perl Command Line Interpreter" COMPANY_NAME="ActiveState, a division of Sophos" PRODUCT_NAME="ActivePerl" FILE_VERSION="5,8,6,811" ORIGINAL_FILENAME="perl.exe" INTERNAL_NAME="perl.exe" LEGAL_COPYRIGHT="Copyright 1987-2004, Larry Wall, Binary build by ActiveState, a division of Sophos, http://www.ActiveState.com" VERFILEDATEHI="0x0" VERFILEDATELO="0x0" VERFILEOS="0x40004" VERFILETYPE="0x1" MODULE_TYPE="WIN32" PE_CHECKSUM="0x0" LINKER_VERSION="0x0" UPTO_BIN_FILE_VERSION="5.8.6.811" UPTO_BIN_PRODUCT_VERSION="5.8.6.811" LINK_DATE="12/13/2004 17:52:55" UPTO_LINK_DATE="12/13/2004 17:52:55" VER_LANGUAGE="Englisch (USA) [0x409]" />
<MATCHING_FILE NAME="perl5.8.6.exe" SIZE="41033" CHECKSUM="0x5FAAFC54" BIN_FILE_VERSION="5.8.6.811" BIN_PRODUCT_VERSION="5.8.6.811" PRODUCT_VERSION="Build 811" FILE_DESCRIPTION="Perl Command Line Interpreter" COMPANY_NAME="ActiveState, a division of Sophos" PRODUCT_NAME="ActivePerl" FILE_VERSION="5,8,6,811" ORIGINAL_FILENAME="perl.exe" INTERNAL_NAME="perl.exe" LEGAL_COPYRIGHT="Copyright 1987-2004, Larry Wall, Binary build by ActiveState, a division of Sophos, http://www.ActiveState.com" VERFILEDATEHI="0x0" VERFILEDATELO="0x0" VERFILEOS="0x40004" VERFILETYPE="0x1" MODULE_TYPE="WIN32" PE_CHECKSUM="0x0" LINKER_VERSION="0x0" UPTO_BIN_FILE_VERSION="5.8.6.811" UPTO_BIN_PRODUCT_VERSION="5.8.6.811" LINK_DATE="12/13/2004 17:52:55" UPTO_LINK_DATE="12/13/2004 17:52:55" VER_LANGUAGE="Englisch (USA) [0x409]" />
<MATCHING_FILE NAME="perl58.dll" SIZE="802891" CHECKSUM="0xC3BC16F9" BIN_FILE_VERSION="5.8.6.811" BIN_PRODUCT_VERSION="5.8.6.811" PRODUCT_VERSION="Build 811" FILE_DESCRIPTION="Perl Interpreter" COMPANY_NAME="ActiveState, a division of Sophos" PRODUCT_NAME="ActivePerl" FILE_VERSION="5,8,6,811" ORIGINAL_FILENAME="perl58.dll" INTERNAL_NAME="perl58.dll" LEGAL_COPYRIGHT="Copyright 1987-2004, Larry Wall, Binary build by ActiveState, a division of Sophos, http://www.ActiveState.com" VERFILEDATEHI="0x0" VERFILEDATELO="0x0" VERFILEOS="0x40004" VERFILETYPE="0x2" MODULE_TYPE="WIN32" PE_CHECKSUM="0x0" LINKER_VERSION="0x0" UPTO_BIN_FILE_VERSION="5.8.6.811" UPTO_BIN_PRODUCT_VERSION="5.8.6.811" LINK_DATE="12/13/2004 17:52:54" UPTO_LINK_DATE="12/13/2004 17:52:54" VER_LANGUAGE="Englisch (USA) [0x409]" />
<MATCHING_FILE NAME="PerlEz.dll" SIZE="36949" CHECKSUM="0xA31FB9DD" BIN_FILE_VERSION="5.8.6.811" BIN_PRODUCT_VERSION="5.8.6.811" PRODUCT_VERSION="Build 811" FILE_DESCRIPTION="PerlEz Simple Host" COMPANY_NAME="ActiveState Corp." PRODUCT_NAME="ActivePerl" FILE_VERSION="5,8,6,811" ORIGINAL_FILENAME="PerlEz.dll" INTERNAL_NAME="PerlEz.dll" LEGAL_COPYRIGHT="Copyright © 1998-2003 ActiveState Corp. http://www.ActiveState.com" VERFILEDATEHI="0x0" VERFILEDATELO="0x0" VERFILEOS="0x40004" VERFILETYPE="0x2" MODULE_TYPE="WIN32" PE_CHECKSUM="0x0" LINKER_VERSION="0x0" UPTO_BIN_FILE_VERSION="5.8.6.811" UPTO_BIN_PRODUCT_VERSION="5.8.6.811" LINK_DATE="12/13/2004 18:13:26" UPTO_LINK_DATE="12/13/2004 18:13:26" VER_LANGUAGE="Englisch (USA) [0x409]" />
<MATCHING_FILE NAME="perlglob.exe" SIZE="16461" CHECKSUM="0x38739B6D" MODULE_TYPE="WIN32" PE_CHECKSUM="0x0" LINKER_VERSION="0x0" LINK_DATE="12/13/2004 17:50:33" UPTO_LINK_DATE="12/13/2004 17:50:33" />
<MATCHING_FILE NAME="PerlIS.dll" SIZE="32857" CHECKSUM="0xA37900EF" BIN_FILE_VERSION="5.8.6.811" BIN_PRODUCT_VERSION="5.8.6.811" PRODUCT_VERSION="Build 811" FILE_DESCRIPTION="Perl Internet Information Server Plug-in" COMPANY_NAME="ActiveState Corp." PRODUCT_NAME="ActivePerl" FILE_VERSION="5,8,6,811" ORIGINAL_FILENAME="PerlIS.dll" INTERNAL_NAME="PerlIS.dll" LEGAL_COPYRIGHT="Copyright © 1998-2003 ActiveState Corp. http://www.ActiveState.com" VERFILEDATEHI="0x0" VERFILEDATELO="0x0" VERFILEOS="0x40004" VERFILETYPE="0x2" MODULE_TYPE="WIN32" PE_CHECKSUM="0x0" LINKER_VERSION="0x0" UPTO_BIN_FILE_VERSION="5.8.6.811" UPTO_BIN_PRODUCT_VERSION="5.8.6.811" LINK_DATE="12/13/2004 18:13:19" UPTO_LINK_DATE="12/13/2004 18:13:19" VER_LANGUAGE="Englisch (USA) [0x409]" />
<MATCHING_FILE NAME="PerlMsg.dll" SIZE="24576" CHECKSUM="0x73721BFD" BIN_FILE_VERSION="1.0.1.0" BIN_PRODUCT_VERSION="1.0.1.0" PRODUCT_VERSION="1,0,1,0" FILE_DESCRIPTION="Perl Event Message DLL" COMPANY_NAME="ActiveState Corp." PRODUCT_NAME="Perl for Win32" FILE_VERSION="1,0,1,0" ORIGINAL_FILENAME="PerlMsg.dll" INTERNAL_NAME="PerlMsg.dll" LEGAL_COPYRIGHT="Copyright © 1997-2003 ActiveState Corp., http://www.ActiveState.com" VERFILEDATEHI="0x0" VERFILEDATELO="0x0" VERFILEOS="0x40004" VERFILETYPE="0x2" MODULE_TYPE="WIN32" PE_CHECKSUM="0x0" LINKER_VERSION="0x0" UPTO_BIN_FILE_VERSION="1.0.1.0" UPTO_BIN_PRODUCT_VERSION="1.0.1.0" LINK_DATE="12/13/2004 18:13:29" UPTO_LINK_DATE="12/13/2004 18:13:29" VER_LANGUAGE="Englisch (USA) [0x409]" />
<MATCHING_FILE NAME="PerlSE.dll" SIZE="61529" CHECKSUM="0x20FE3D9F" BIN_FILE_VERSION="5.8.6.811" BIN_PRODUCT_VERSION="5.8.6.811" PRODUCT_VERSION="Build 811" FILE_DESCRIPTION="PerlScript scripting engine" COMPANY_NAME="ActiveState Corp." PRODUCT_NAME="ActivePerl" FILE_VERSION="5,8,6,811" ORIGINAL_FILENAME="PerlSE.dll" INTERNAL_NAME="PerlSE.dll" LEGAL_COPYRIGHT="Copyright © 1998-2003 ActiveState Corp. http://www.ActiveState.com" VERFILEDATEHI="0x0" VERFILEDATELO="0x0" VERFILEOS="0x40004" VERFILETYPE="0x2" MODULE_TYPE="WIN32" PE_CHECKSUM="0x0" LINKER_VERSION="0x0" UPTO_BIN_FILE_VERSION="5.8.6.811" UPTO_BIN_PRODUCT_VERSION="5.8.6.811" LINK_DATE="12/13/2004 18:13:59" UPTO_LINK_DATE="12/13/2004 18:13:59" VER_LANGUAGE="Englisch (USA) [0x409]" />
<MATCHING_FILE NAME="wperl.exe" SIZE="41033" CHECKSUM="0x5FAAFC54" BIN_FILE_VERSION="5.8.6.811" BIN_PRODUCT_VERSION="5.8.6.811" PRODUCT_VERSION="Build 811" FILE_DESCRIPTION="Perl Command Line Interpreter" COMPANY_NAME="ActiveState, a division of Sophos" PRODUCT_NAME="ActivePerl" FILE_VERSION="5,8,6,811" ORIGINAL_FILENAME="perl.exe" INTERNAL_NAME="perl.exe" LEGAL_COPYRIGHT="Copyright 1987-2004, Larry Wall, Binary build by ActiveState, a division of Sophos, http://www.ActiveState.com" VERFILEDATEHI="0x0" VERFILEDATELO="0x0" VERFILEOS="0x40004" VERFILETYPE="0x1" MODULE_TYPE="WIN32" PE_CHECKSUM="0x0" LINKER_VERSION="0x0" UPTO_BIN_FILE_VERSION="5.8.6.811" UPTO_BIN_PRODUCT_VERSION="5.8.6.811" LINK_DATE="12/13/2004 17:52:55" UPTO_LINK_DATE="12/13/2004 17:52:55" VER_LANGUAGE="Englisch (USA) [0x409]" />
</EXE>
<EXE NAME="MSVCRT.dll" FILTER="GRABMI_FILTER_THISFILEONLY">
<MATCHING_FILE NAME="msvcrt.dll" SIZE="343040" CHECKSUM="0xBA21B608" BIN_FILE_VERSION="7.0.2600.2180" BIN_PRODUCT_VERSION="6.1.8638.2180" PRODUCT_VERSION="7.0.2600.2180" FILE_DESCRIPTION="Windows NT CRT DLL" COMPANY_NAME="Microsoft Corporation" PRODUCT_NAME="Microsoft® Windows® Operating System" FILE_VERSION="7.0.2600.2180 (xpsp_sp2_rtm.040803-2158)" ORIGINAL_FILENAME="msvcrt.dll" INTERNAL_NAME="msvcrt.dll" LEGAL_COPYRIGHT="© Microsoft Corporation. All rights reserved." VERFILEDATEHI="0x0" VERFILEDATELO="0x0" VERFILEOS="0x40004" VERFILETYPE="0x1" MODULE_TYPE="WIN32" PE_CHECKSUM="0x5B640" LINKER_VERSION="0x50001" UPTO_BIN_FILE_VERSION="7.0.2600.2180" UPTO_BIN_PRODUCT_VERSION="6.1.8638.2180" LINK_DATE="08/04/2004 07:58:22" UPTO_LINK_DATE="08/04/2004 07:58:22" VER_LANGUAGE="Englisch (USA) [0x409]" />
</EXE>
<EXE NAME="kernel32.dll" FILTER="GRABMI_FILTER_THISFILEONLY">
<MATCHING_FILE NAME="kernel32.dll" SIZE="1057280" CHECKSUM="0xD52AA7B7" BIN_FILE_VERSION="5.1.2600.2180" BIN_PRODUCT_VERSION="5.1.2600.2180" PRODUCT_VERSION="5.1.2600.2180" FILE_DESCRIPTION="Client-DLL für Windows NT-Basis-API" COMPANY_NAME="Microsoft Corporation" PRODUCT_NAME="Betriebssystem Microsoft® Windows®" FILE_VERSION="5.1.2600.2180 (xpsp_sp2_rtm.040803-2158)" ORIGINAL_FILENAME="kernel32" INTERNAL_NAME="kernel32" LEGAL_COPYRIGHT="© Microsoft Corporation. Alle Rechte vorbehalten." VERFILEDATEHI="0x0" VERFILEDATELO="0x0" VERFILEOS="0x40004" VERFILETYPE="0x2" MODULE_TYPE="WIN32" PE_CHECKSUM="0x108430" LINKER_VERSION="0x50001" UPTO_BIN_FILE_VERSION="5.1.2600.2180" UPTO_BIN_PRODUCT_VERSION="5.1.2600.2180" LINK_DATE="08/04/2004 07:57:08" UPTO_LINK_DATE="08/04/2004 07:57:08" VER_LANGUAGE="Deutsch (Deutschland) [0x407]" />
</EXE>
</DATABASE>
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
Crian
 2005-05-03 12:02
#54391 #54391
User since
2003-08-04
5870 Artikel
ModeratorIn
[Homepage]
user image
Ich probiere jetzt mal eine Variante ohne >> im system-Aufruf, dafür leite ich in rt.pl alle Ausgaben auf STDOUT per select in ein Logfile um. Dann hab ich zwar mehrere Logfiles und nicht nur eines, aber das macht nichts. Hauptsache ich kriege dieses Problem irgendwie in den Griff, spätestens morgen muss das System laufen ...
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
Crian
 2005-05-03 15:51
#54392 #54392
User since
2003-08-04
5870 Artikel
ModeratorIn
[Homepage]
user image
So, auch die mit select umgeleitete Variante bricht mit der gleichen Fehlermeldung ab. What the fuck ... ?

Ich bin langsam mit meinem Latein am Ende.

Wenn das so weitergeht beantrage ich einen Linux-Server...
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
Strat
 2005-05-03 17:47
#54393 #54393
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
vielleicht mal bei perlmonks fragen?
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
Strat
 2005-05-03 17:50
#54394 #54394
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
was passiert eigentlich, wenn du das externe skript folgendermaszen "ausfuehrst":
Code: (dl )
1
2
3
4
{
 package CriansMysteryV4;
 require "path/to/script.pl";
}

(ev. noch ein eval drum herum)
haesslich, aber wenn du dich im ausgefuehrten script nicht darauf verlaesst, dass es im package main laeuft, koennte es funktionieren...\n\n

<!--EDIT|Strat|1115128228-->
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
<< |< 1 2 >| >> 14 Einträge, 2 Seiten



View all threads created 2005-05-02 18:10.