Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <unistd.h>
- #include <sys/types.h>
- #include <limits.h>
- #include <errno.h>
- #include <sys/stat.h>
- #include <fcntl.h>
- #include <string.h>
- #include <stdlib.h>
- #define FIFO_NAME "/tmp/moje_fifo5"
- #define BUFFER_SIZE PIPE_BUF
- int main(int argc , char *argv[])
- {
- int res;
- int pipe_fd;
- int open_mode=O_RDONLY;
- char bufor[BUFFER_SIZE+1];
- int zczytane=0;
- char buf[20];
- memset(bufor,'\0',sizeof(bufor));
- if(access(FIFO_NAME, F_OK)==-1)
- {
- res=mkfifo(FIFO_NAME,0666);
- if(res ==0) printf("Kolejka FIFO utworzona\n");
- else
- {
- printf("B??d %d - %s tworzenia kolejki %s\n",errno,strerror(errno),FIFO_NAME);
- exit(1);
- }
- }
- printf("Proces %d otwiera FIFO \n",getpid());
- pipe_fd=open(FIFO_NAME,open_mode);
- printf("proces %d warto?c %d\n", getpid(),pipe_fd);
- sprintf(buf,"ls -l /proc/%d/fd",getpid());
- system(buf);
- if(pipe_fd!=-1)
- {
- do{
- res=read(pipe_fd,bufor,BUFFER_SIZE);
- zczytane+=res;
- int z;
- char a = bufor[0];
- int ia = a - '0';
- char b = bufor[2];
- int ib = b - '0';
- int c = 0;
- if(bufor[1] == '+'){
- c = ia + ib;
- printf("%d",c);
- }
- if(bufor[1] == '/'){
- c = ia / ib;
- printf("%d",c);
- }
- if(bufor[1] == '-'){
- c = ia - ib;
- printf("%d",c);
- }
- if(bufor[1] == '*'){
- c = ia * ib;
- printf("%d",c);
- }
- printf(" to wynik dzialania : %s\n",bufor);
- }while(res>0);
- close(pipe_fd);
- }
- else
- exit(1);
- printf("proces %d zko?czony zczytano %d\n", getpid(),zczytane);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement