Schrift
[thread]6973[/thread]

programm öffnen mit open

Leser: 2


<< >> 5 Einträge, 1 Seite
romulus
 2005-05-10 00:54
#54700 #54700
User since
2004-04-05
23 Artikel
BenutzerIn
[default_avatar]
Hallo,

ich möchte unter Windows ein Programm mit open öffnen.
z.b.
$pid=open(F,"|notepad");

dabei brauche ich die "pid" des Programms die ich so auch kriege. Aber wenn ich die Ausgabe in eine Datei umleiten will,
zb:
$pid=open(F,"|notepad >output.txt");

dann krieg ich nicht die pid des Programms sondern die pid eines cmd-Prozesses.

Ich bräuchte aber die pid des Programms. Kann mir da vielleicht jemand weiterhelfen? (Aus betsimmten Gründen kann ich nicht die Module open2 oder open3 benutzen)
Strat
 2005-05-10 14:11
#54701 #54701
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
der grund dafuer ist, dass perl versucht, ein programm moeglichst ohne shell zu oeffnen. im ersten fall funktioniert das auch, wenn du aber shell-mittel verwendest (hier ausgabeumleitung), dann muss eine shell geoeffnet werden, der dann notepad usw. als parameter uebergeben wird

ich denke, die ausgabe von notepad in eine datei umzuleiten ist nicht besonders sinvoll, also verwendest du offensichtlich notepad als beispiel fuer was anderes (warum eigentlich?)

was willst du alles haben? zu einem programm lesen und schreiben und auch noch die PID bekommen? da fallen mir nur die von dir nicht gewuenschten Module IPC::Open2 bzw IPC::Open3 ein, sowie Expect und eventuell Win32::Process (wenngleich nur mit haesslichen mitteln). mehr faellt mir zu den paar infos, die du uns gibst, nicht ein
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
romulus
 2005-05-10 15:17
#54702 #54702
User since
2004-04-05
23 Artikel
BenutzerIn
[default_avatar]
notepad hab ich als Beispiel genommen weil das meistens als Beispiel genommen wird. Eigentlich handelt es sich um den in der Linux-Welt gut bekannten "Mplayer" (mplayerhq.hu) den es seit einiger Zeit auch für windows gibt. Das ist ein Konsolen-Player der nahezu alles abspielt. Da hat man die Möglichkeit den über STDIN zu steuern und gleichzeitig brauch ich seine Ausgabe um zu wissen was er gerade macht usw. Unter Linux hab ich das schon gemacht (mplay.sf.net) und z.Z. versuche ich das Ganze unter Windows zum laufen zu kriegen. Auch mit Erfolg bis auf ein paar Kleinigkeiten.

Am besten für diese Aufgabe wäre natürlich open2 bzw open3 aber wenn ich diese Module benutze, dann habe ich Probleme mit Win32::Console::ANSI (bin wohl auch nicht der einzige laut Google). Dieses Modul brauch ich aber auf jeden Fall. Daher muss ich mit open Arbeiten.
Strat
 2005-05-10 15:22
#54703 #54703
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
hast du schon Expect ausprobiert? das scheint fuer sowas ideal (weiss aber nicht, ob es gut mit Win32::Console::ANSI zusammenarbeitet)
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
romulus
 2005-05-10 15:32
#54704 #54704
User since
2004-04-05
23 Artikel
BenutzerIn
[default_avatar]
Ne das kannte ich bis jetzt nicht. Ich hab gerade bei cpan geschaut und die sagen, dass es unter Windows (ActivePerl) nicht funktioniert..
<< >> 5 Einträge, 1 Seite



View all threads created 2005-05-10 00:54.