Hoe krijg ik getchar() zover dat hij blockt ook als ik uit een pipe lees?
Om mijn probleem te illustreren:
Ik heb de volgende code
als ik nu opstart
dan werkt het perfect, maar als ik opstart
dan blijft getchar() rommel van uit de pipe lezen terwijl ik wil dat hij gaat wachten tot er weer wat inzit. Voorbeeld als je het opstart met
dan moet ie de file1 blijven echo'en totdat ie quit tegen komt en moet getchar() dus netjes geblockt blijven wachten en geen rommel gaan spuien, zolang tail aan het wachten is.
iemand die mijn probleem begrijpt en me dan ook nog kan helpen?
Om mijn probleem te illustreren:
Ik heb de volgende code
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
| #include <stdio.h>
#include <string.h>
int main() {
int i=0;
char c;
char *tomatch = "quit";
while (i<strlen(tomatch)) {
c=getchar();
if (c==tomatch[i]) i++; else i=0;
printf("%c",c);
}
} |
als ik nu opstart
code:
1
| echo bla bla bla quit bla bla bla | a.out |
dan werkt het perfect, maar als ik opstart
code:
1
| echo bla bla bla | a.out |
dan blijft getchar() rommel van uit de pipe lezen terwijl ik wil dat hij gaat wachten tot er weer wat inzit. Voorbeeld als je het opstart met
code:
1
| tail -f file1 | a.out |
dan moet ie de file1 blijven echo'en totdat ie quit tegen komt en moet getchar() dus netjes geblockt blijven wachten en geen rommel gaan spuien, zolang tail aan het wachten is.
iemand die mijn probleem begrijpt en me dan ook nog kan helpen?