Ich habe eine sehr einfache Quelle lesen Datei-Deskriptor, hängt. Konnte jemand das Problem erkennen, das der Code hat?lesen Datei-Deskriptor HANGS
Der erste ist die problematische Quelle und der zweite ist die Arbeitsquelle im Internet. Zwei Quellen sind fast identisch.
Erste Quelle
#include <sys/types.h> #include <sys/stat.h> #include <unistd.h> #include <fcntl.h> #include <stdio.h> int main(int argc, char ** argv) { int n, in; char buf[1024]; if ((in = open(argv[1], O_RDONLY)<0)) { perror(argv[1]); return -1; } while((n = read(in, buf, sizeof(buf))) > 0) { //HANGS at THIS LINE!!!!!!!!!!! printf("TEST\n"); } close(in); return 0; }
Zweites Arbeits bekam Quelle von Online-
/* * ============================================================================ * Name : sp_linux_copy.c * Author : Marko Martinović * Description : Copy input file into output file * ============================================================================ **/ #include <stdio.h> #include <stdlib.h> #include <fcntl.h> #include <errno.h> #include <sys/types.h> #include <unistd.h> #define BUF_SIZE 8192 int main(int argc, char* argv[]) { int input_fd; /* Input and output file descriptors */ ssize_t ret_in; /* Number of bytes returned by read() and write() */ char buffer[BUF_SIZE]; /* Character buffer */ /* Create input file descriptor */ input_fd = open (argv [1], O_RDONLY); if (input_fd == -1) { perror ("open"); return 2; } /* Copy process */ while((ret_in = read (input_fd, &buffer, BUF_SIZE)) > 0){ printf("TEST\n"); } /* Close file descriptors */ close (input_fd); }
Genau das, was tun Sie, um dies zu testen? –
Ich implementierte Kopierdateien, die gelesen und geschrieben werden müssen. Um mein Problem zu klären und für Rezensenten einfacher zu sehen, entfernte ich den Schreibcode. – Sean83