Vorheriges Thema: CloseFile - Schließen der DateiNächstes Thema: CreateFile - Erstellen einer neuen Datei


CreatePipe - Erstellen einer Pipe

Gültig für UNIX und Windows.

Hinweis: Diese Funktion ist neu in CA ITCM und kann daher nicht mit älteren Versionen des Skript-Interpreters verwendet werden.

Die Funktion "CreatePipe" erstellt eine Named Pipe zum Lesen oder Schreiben in der Rolle eines Servers.

Diese Dateiinhaltsfunktion hat das folgende Format:

CreatePipe(pipename as String, access as Integer) as Integer
pipename

Gibt den Namen der zu erstellenden Pipe an. Unter UNIX ist "pipename" ein gültiger Pfadname.

Unter Windows ist folgendes Format erforderlich:

\\.\pipe\xxx

wobei xxx aus beliebigen Zeichen mit Ausnahme von '\' bestehen kann.

access

Gibt an, in welcher Richtung die Pipe verwendet wird.

O_READ

(Wert 0) Zum Lesen geöffnet.

O_WRITE

(Wert 1) Zum Schreiben geöffnet.

Die Funktion gibt ein Datei-Handle zurück, das Sie mit den Funktionen "ReadFile", "WriteFile" und "CloseFile" verwenden können.

"CreatePipe" wird in einem Prozess verwendet, der als Pipe-Server agiert. Ein Pipe-Client verwendet die Funktion "OpenPipe".

Die Pipe arbeitet im Blockiermodus. Die Lese- oder Schreibfunktionen, die auf "CreatePipe" folgen, warten bis von einem Client die jeweils umgekehrte Funktion verwendet wurde.

Hinweis: Die Funktion steht unter Windows 95/98/ME nicht zur Verfügung.

Bei erfolgreichem Abschluss gibt die Funktion eine nicht negative Ganzzahl zurück, die das Datei-Handle darstellt. Bei Fehlschlagen der Funktion wird -1 zurückgegeben.

Beispiel: Funktion "CreatePipe"

In diesem Beispiel wird davon ausgegangen, dass das Beispiel für "OpenPipe" unter dem Namen "p0cl.dms" gespeichert wurde.

rem example named pipe server
rem create two pipes
rem start client process
rem write command to one pipe
rem read response from second pipe

dim rc, h0, h1 as integer
dim pnam0, pnam1 as string
dim stopstring as string
dim s, cmd as string
dim iswin as boolean

if left(osstring, 3) = "Win" then
    pnam0 = "\\.\pipe\p0rsp"
    pnam1 = "\\.\pipe\p0cmd"
	iswin = 1
else
    pnam0 = "/tmp/p0rsp"
    pnam1 = "/tmp/p0cmd"
	iswin = 0
endif
stopstring = "---END---"

h0 = CreatePipe(pnam0, O_READ)	  'read response from client
h1 = CreatePipe(pnam1, O_WRITE)	  'send command to client
if h0 < 0 or h1	< 0 then
    print "create pipe failure. h0: " + str(h0) + "  h1: " + str(h1)
	exit
end if 

if iswin then
	cmd = "dmscript p0cl.dms -o_dms: p0clout.txt -script "	+ pnam1 + " " + pnam0
	rc = Exec(cmd, 0) 
else
	cmd = "dmscript p0cl.dms -o_dms: p0clout.txt -script " + pnam1 + " " + pnam0 + " &"
	rc = Exec(cmd) 
end if
print "exec rc: " + str(rc) + " cmd: " + cmd	

rc = WriteFile(h1, "command")
if not(rc) then
	print "write command failed"
else    
	while rc
		rc = ReadFile(h0, s)
		print "read response rc: " + str(rc) + " " + s
		if s = stopstring then
			rc = 0
			print "test successful"
		end if
	wend
end if

CloseFile(h0)
CloseFile(h1)