000
20.06.2005, 10:58 Uhr
ollik
|
Hier ist mal ein Beispiel Code, so wie er aussehen koennte. Nach dem 10. Schreiben bleibt der bei ReadFile haengen, solange bis man wieder mit WriteFile schreibt. ReadFile soll aber weiterhin pruefen ob Zeichen anliegen. Gibt es eine Loesung (nonBlocking?).
C++: |
#include <stdio.h> #include <windows.h>
HANDLE watch_dog[2]; char data[1] = "\0"; int maxlen = 1;
int pipe(HANDLE Handle[2]) { SECURITY_ATTRIBUTES saAttr;
saAttr.nLength = sizeof(SECURITY_ATTRIBUTES); saAttr.bInheritHandle = TRUE; saAttr.lpSecurityDescriptor = NULL;
if (! CreatePipe(&Handle[0], &Handle[1], &saAttr, 0)) return(EOF);
return(TRUE); }
int WritePipe(void) { DWORD ret = 0; static int task = 0;
if (task < 10) { if (! WriteFile(watch_dog[1], data, maxlen, &ret, NULL) || ret == 0) return(FALSE);
++task; } return(ret); }
int ReadPipe(void) { DWORD ret = 0;
if (! ReadFile(watch_dog[0], data, maxlen, &ret, NULL) || ret == 0) return(FALSE);
return(ret); }
DWORD main(void) { DWORD ret = 0;
if (pipe(watch_dog) < 0) { printf("Pipe konnte nicht erstellt werden\n"); return(FALSE); }
while(1) { Sleep(1000); printf("Schreibe Wert: %d\n", ret = WritePipe()); ret = 0; printf("Lese Wert: %d\n", ret = ReadPipe()); } return(FALSE); }
|
Der Code soll spaeter fuer ein watchdog dienen.
mfg Olli. |