Bonjour tout le monde,
J'ai deux processus que je veux faire communiquer infinimenent à travers un pipe: P1 crée le pipe et P2 est supposé s'y connecter après quelques instants et après ils restent en communication inifiniment.
La fonction ConnectNamedPipe met le processus P1 dans un état d'attente infinie (la durée d'attente,dans mon cas, est inifinie puisque je précise pas de timeout dans la création du pipe). Maintenant une fois P2 se connecte, la fonction va retourner true et le processus P1 passe à l'instruction qui suit.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 //création du pipe HANDLE hPipe; hPipe = CreateNamedPipe( g_szPipeName, // pipe name PIPE_ACCESS_DUPLEX, // read/write access PIPE_TYPE_MESSAGE | // message type pipe PIPE_READMODE_MESSAGE | // message-read mode PIPE_WAIT, // blocking mode PIPE_UNLIMITED_INSTANCES, // max. instances BUFFER_SIZE, // output buffer size BUFFER_SIZE, // input buffer size NMPWAIT_USE_DEFAULT_WAIT, // client time-out NULL); // default security attribute //Attente de connexion d'un client BOOL bClientConnected = ConnectNamedPipe(hPipe, NULL); if (FALSE == bClientConnected) { printf("\nError occurred while connecting to the client: %d", GetLastError()); CloseHandle(hPipe); return 1; //Error } else { printf("\nConnectNamedPipe() was successful."); }
Ma question est, si P2 se déconnecte(par exemple il s'arrête pour une raison inconnue et que je dois le relancer automatiquement par un processus de controle d'activité par exemple), quel sera l'état de P1?
a) Toujours connecté ( donc la boucle infinie de communication que je dois faire doit être faite dans le writefile )
b) Déconnecté ( donc ma boucle infinie doit être recommencée à partir de la fonctionMerci pour vos réponses
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 //Attente de connexion d'un client BOOL bClientConnected = ConnectNamedPipe(hPipe, NULL);
Partager