Rubrique précédente: CloseFile – Fermer le fichierRubrique suivante: CreateFile – Créer un fichier


CreatePipe – Créer un canal

Valide sous UNIX et Windows

Remarque : Cette fonction est nouvelle dans CA Client Automation et ne fonctionne pas avec les versions antérieures de l'interpréteur de scripts.

La fonction CreatePipe crée un canal nommé pour la lecture ou l'écriture dans un rôle serveur.

Format de la fonction :

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

Indique le nom du canal à créer. Sous UNIX, pipename est un nom de chemin valide.

Sous Windows il se présente sous la forme suivante :

\\.\pipe\xxx

où xxx peut contenir n'importe quel caractère sauf '\'.

accès

Spécifie dans quelle direction le canal est utilisé.

O_READ

(valeur 0) Ouvert pour lecture O_WRITE.

O_WRITE

(valeur 1) Ouvert pour écriture.

La fonction renvoie un descripteur de fichier que vous pouvez utiliser avec les fonctions ReadFile, WriteFile et CloseFile.

CreatePipe est utilisé dans le processus qui joue le rôle de serveur de canal. Un client de canal utilise la fonction OpenPipe.

Le canal fonctionne en mode blocage. Les fonctions de lecture ou d'écriture qui suivent CreatePipe attendent qu'un client utilise la fonction inverse.

Remarque : La fonction n'est pas disponible sous Windows 95/98/ME.

En cas de réussite, la fonction renvoie un entier non négatif, qui est le descripteur de fichier. Si la fonction échoue, elle renvoie la valeur -1.

Exemple :

Cet exemple suppose que l'exemple OpenPipe est stocké dans le fichier p0cl.dms.

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)