#include #include #include #include #include #include #include int main(int argc, char **argv){ int file; int count; char * buf; int pid; int tube[2]; int status; buf = malloc(1024); if(argc != 2){ fprintf(stderr,"Bad arguments number\n Usage : %s [filename]\n",argv[0]); exit(EXIT_FAILURE); } file = open(argv[1], O_RDONLY); if(file <= 0){ fprintf(stderr,"File does not exists\n"); exit(EXIT_FAILURE); } /* create pipe */ pipe(tube); switch(pid = fork()){ case -1 : fprintf(stderr,"Error\n"); case 0 : close(tube[1]); dup2(STDOUT_FILENO,tube[0]); /* execle("/usr/bin/mplayer","-"); */ close(tube[0]); default : /* Playing the file */ close(tube[0]); while((count = read(file, buf, 1024)) != 0){ write(tube[1], buf, count); } close(tube[1]); close(file); waitpid(pid, &status, 0); if(!WIFEXITED(status)) exit(EXIT_FAILURE); exit(EXIT_SUCCESS); } }