Tulkas
Well-Known Member
Hi,
ich hab ein kleines C-Programm geschrieben, was eine Textdatei auslesen soll. Leider nimmt es immer STDIN als Quelle, obwohl mir open() keinen Fehler meldet. Wenn ich STDIN schliesse, dann klappt das Programm wunschgemäß. Nur dachte ich, open() nähme den nächst freien Filedeskriptor. Warum muss ich also STDIN erst schliessen bevors klappt? Ich schicke mal die entsprechenden Teile des Quelltextes mit.
Danke && Gruß
Tulkas
ich hab ein kleines C-Programm geschrieben, was eine Textdatei auslesen soll. Leider nimmt es immer STDIN als Quelle, obwohl mir open() keinen Fehler meldet. Wenn ich STDIN schliesse, dann klappt das Programm wunschgemäß. Nur dachte ich, open() nähme den nächst freien Filedeskriptor. Warum muss ich also STDIN erst schliessen bevors klappt? Ich schicke mal die entsprechenden Teile des Quelltextes mit.
Danke && Gruß
Tulkas
Code:
void readsig(void){
int sigfd;
ssize_t n;
char* home = getenv("HOME");
strcat(home, SIGNAME);
close(STDIN_FILENO);/* Dann gehts....*/
if ((sigfd = open(home, O_RDONLY) < 0)){
perror("Fehler beim Öffnen der Signatur");
exit(2);
#ifdef DEBUG
}else{
printf("Erfolg beim Öffnen: %s\n", home);
printf("sigfd: %d\n",sigfd);
#endif
}
while((n = read(sigfd, signatur, sizeof(signatur))) > 0){
if( (write(STDOUT_FILENO, signatur, n )) != n){
perror("Fehler beim Schreiben");
exit(2);
}
}
close(sigfd);
}