Archiv verlassen und diese Seite im Standarddesign anzeigen : Named Pipes in Win32
Hallo,
Ich beschäftige mich grad mit dem Thema (named) Pipes.
Unter UNIX lässt sich eine Pipe ja sehr komfortabel direkt via einen Kommandozeilenbefehl einrichten. Nun möchte ich erstmal was von UNIX auf Windows 2003 via Pipes austauschen. In der MSDN steht einiges über das Thema, doch diese Artikel beschäftigen sich mit den win32-API-Funktionen.
Meine Frage: Gibt's unter Windows irgendwelche System-Tools mit denen eine Pipe definiert werden kann oder muss ich dazu ein eigenes Hilfsprogramm schreiben ?
erklär mir doch bitte erstmal was ich unter einer pipe zu verstehn habe :D
butterkeks
18.01.2006, 16:49
was willst du denn machen? Ein unixprog portieren oder dieses unter Windows laufen lassen?
Bei ersterem musst du dich wohl an die winapi klammern, ansosnten kannst du allerdings auch cygwin benutzen, das calls a la "mkfifo()" unter Windows bereitstellt (ob ein "normales" Windows Prog problemlos mit einem Cygwin prog kommunizieren kann, weiß ich allerdings nicht)
Auf einer UNIX-Kiste (Solaris SPARC 64) soll ein natives Programm Daten in eine named Pipe schreiben, die ich mit "
mknod /tmp/meinFIFO p und dann rm -f /tmp/meinFIFO" eingerichtet hab.
Die Daten sollen dann auf einer Win2003-Maschine von dieser Pipe ausgelesen werden. Beim auslendenden Programm handelt es sich um closed-Source Software. Daher mein Problem, wie ich die Pipe unter Windows anlegen kann. Vieleicht gibt's da ein System-Tool das obigen UNIX-Befehl imitiert, oder ich muss halt selbst ein "Setup-Programm" machen, dass die Pipe direkt mittels Win32-API einrichtet. Danach sag ich dem lesenden Programm, welche Pipe es auslesen soll...
butterkeks
18.01.2006, 18:02
Wie wird die pipe unter windows eingeblendet? NFS? SMB?
Was passiert, wenn du mit der pipe "ganz normal" arbeitest (open/read/write)? Funktioniert es teilweise oder garnicht?
Ja probiert hab ich's noch nicht, da ich bis jetzt noch nicht in der Lage war eine einzurichten unter Windows ;-) Bevor ich das mittels eigenem Hilfs-Tool mache, wollt ich eben mal grandsätzlich fragen wie man das in der WIndows-Welt macht. Im UNIX ist's ja ein simpler shell-Befehl.
Ich denke mal es wird NFS sein...
butterkeks
19.01.2006, 14:42
Mit der winapi, würde ich mal sagen...
Vlt.wird auch die POSIX-Funktion mkfifo() unterstützt, aber da bin ich mir nicht sicher.
Denk dran, dass auch die Winapi Befehle kennt, um aus Dateien zu lesen etc. (ob diese intern einfach nur fread() bzw. read() und co. aufrufen, oder umgekehrt oder auch garnicht, weiß ich leider auch nciht genau)... falls eine Methode nicht funktionieren sollte.
Zu named pipes über NFS habe ich allerdings auf die Schnelle folgendes gefunden:
http://www.unixguide.net/unix/programming/2.10.4.shtml
SMB sollte sowas allerdings können. Probier mal, ein share zu mounten und dem Prog zu sagen, dass die named pipe in dem entspr. Verzeichnis angelegt wird.
(sollte auch gehen, wenn die unix app liest und Windows schreibt)
Um einen share auf unix(-ähnlichen) OS zu mounten, kann man "Samba" verwenden: http://samba.org
Warscheinlich wäre es einfacher, entspr. "Vermittlerprogramme" per Sockets zu bauen, ist aber nur mal so eine Idee
vBulletin® v3.8.6, Copyright ©2000-2012, Jelsoft Enterprises Ltd.