我有一個非常簡單的源讀取文件描述符,其中掛起。 任何人都可以注意到代碼有問題嗎?讀取文件描述符HANGS
第一個是有問題的來源,第二個是在網上找到的工作源。兩個來源幾乎相同。
第一源
#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; }
第二作業源從網上
/* * ============================================================================ * 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); }
究竟你會怎麼做測試呢? –
我實現了複製需要讀寫的文件。爲了澄清我的問題,更容易看到評論者,我刪除了寫代碼。 – Sean83