test_read_pipe.cpp
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include "config.h"
00023
00024 #include <sys/types.h>
00025 #include <sys/stat.h>
00026 #include <fcntl.h>
00027 #include <assert.h>
00028 #include <stdio.h>
00029 #include <unistd.h>
00030 #include <errno.h>
00031 #include <string.h>
00032
00033 #define PIPE_NAME "/tmp/test_read_pipe"
00034 #define TEST_FILE "test_file.txt"
00035 #define SIZE 1000
00036
00037 int main()
00038 {
00039
00040 mkfifo (PIPE_NAME, S_IWUSR);
00041
00042 #ifdef DEBUG
00043 fprintf (stderr, "Named pipe created with name: %s.\n", PIPE_NAME);
00044 #endif
00045
00046
00047 int fd_pipe = open (PIPE_NAME, O_WRONLY | O_CREAT, S_IWUSR);
00048 FILE* fd_file = fopen (TEST_FILE, "r");
00049
00050 if (fd_pipe == -1 || fd_file == 0) {
00051
00052 return -1;
00053 }
00054
00055 #ifdef DEBUG
00056 fprintf (stderr, "Named pipe opened sucessfully.");
00057 #endif
00058
00059 char buf[SIZE];
00060 while (1) {
00061 int bytes_read = fread (buf, 1, SIZE, fd_file);
00062 #ifdef DEBUG
00063 int bytes_written = write (fd_pipe, buf, bytes_read);
00064 #else
00065 write (fd_pipe, buf, bytes_read);
00066 #endif
00067
00068 #ifdef DEBUG
00069 fprintf (stderr, "%d bytes written\n", bytes_written);
00070 #endif
00071
00072 if (bytes_read < SIZE) break;
00073 }
00074
00075 close (fd_pipe);
00076 fclose (fd_file);
00077 return 0;
00078 }
00079