Hi there i am trying to make such a program in which the the two fds stdin and fifo monitor by select() and communicate with each other.
select() will monitor either fifo ready for reading or stdin.
server.c
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <string.h>
#include <sys/select.h>
int main(int argc,char *argv[]){
    int f,fifo_read,fifo_write,status;
    fd_set readset;
    FD_ZERO(&readset);
    char str[512]="start";
    if(argc !=2)
    if(argc != 2){
    printf("\nError: %s required argument [Fifo Name]\n\n",argv[0]);
            exit(EXIT_FAILURE);
    }
    if ((open(argv[1], O_RDWR)) < 0){
        f = mkfifo(argv[1],S_IRWXU);
        if(f<0){
            perror("Error While Creating FIFO ");
            exit(EXIT_FAILURE);
        }
        else
            printf("FIFO Created Successfully...\n");
    }
    while(strcmp(str,"end")!=0){
        fifo_write= open(argv[1],O_WRONLY);
        FD_SET(fifo_read, &readset);
        FD_SET(STDIN_FILENO, &readset);
        status = select(fifo_read+1, &readset, NULL, NULL, NULL);
        if(status==-1){
            perror("Error While Calling select() system call ");
            //exit(EXIT_FAILURE);   
        }
        if(FD_ISSET(STDIN_FILENO,&readset)){
            if(fifo_write<0)
                perror("\nError while writing on pipe ");
            else{
                printf("\nServer>> ");
                scanf("%s",str);
                write(fifo_write,str,strlen(str));
                close(fifo_write);
            }
        }
        fifo_read=open(argv[1],O_RDONLY);
        if(FD_ISSET(fifo_read,&readset)){
            if(fifo_read<0)
                perror("\nError while reading from pipe ");
            else{
                read(fifo_read,str,strlen(str));
                close(fifo_read);
                printf("\nJiya%s",str);
            }
        }
    }
    return 0;
}
client.c
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <string.h>
#include <sys/select.h>
int main(int argc,char *argv[]){
    int f,fifo_read,fifo_write,status;
    fd_set readset;
    FD_ZERO(&readset);
    char str[512]="start";
    
    while(strcmp(str,"end")!=0){
        fifo_write= open(argv[1],O_WRONLY);
        FD_SET(fifo_read, &readset);
        FD_SET(STDIN_FILENO, &readset);
        status = select(fifo_read+1, &readset, NULL, NULL, NULL);
        if(status==-1){
            perror("Error While Calling select() system call ");
            //exit(EXIT_FAILURE);   
        }
        if(FD_ISSET(fifo_read,&readset)){
            if(fifo_read<0)
                printf("\nError opening read pipe");
            else{
                read(fifo_read,str,strlen(str));
                close(fifo_read);
                printf("\n%s",str);
            }
        }
        fifo_read=open(argv[1],O_RDONLY);
        if(FD_ISSET(STDIN_FILENO,&readset)){
            if(fifo_write<0)
                printf("\nError opening write pipe");
            else{
                printf("\nClient>> ");
                scanf("%s",str);
                write(fifo_write,str,strlen(str));
                close(fifo_write);
            }
        }
    }
    return 0;
}
 
     
    