应用与MPlayer通过slave模式进行信息交换
来源:互联网 发布:便携电脑推荐 知乎 编辑:程序博客网 时间:2024/06/05 15:20
应用与MPlayer通过slave模式进行信息交换
代码如下
编译方法
gcc test.c -lpthread
#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <fcntl.h>#include <sys/stat.h>#include <sys/types.h>#include <string.h>/**********************全局变量定义区*****************/int fd_fifo;//创建有名管道,用于向mplayer发送命令 int fd_pipe[2];//创建无名管道,用于从mplayer读取命令 void *get_pthread (void *arg){char buf[100];while (1){printf ("please input you cmd:");fflush (stdout);fgets (buf, sizeof (buf), stdin);//从标准输入获取数据 buf[strlen (buf)] = '\0';printf ("*%s*\n", buf);if (write (fd_fifo, buf, strlen (buf)) != strlen (buf))perror ("write");//将命令写入命名管道 }}void *print_pthread (void *arg){char buf[100];close (fd_pipe[1]);int size = 0;while (1){size = read (fd_pipe[0], buf, sizeof (buf));//从无名管道的写端读取信息打印在屏幕上 buf[size] = '\0';printf ("th msg read form pipe is %s\n", buf);}}int main (int argc, char *argv[]){int fd;char buf[100];pid_t pid;unlink ("/tmp/my_fifo");//如果明明管道存在,则先删除 mkfifo ("/tmp/my_fifo", O_CREAT | 0666);perror ("mkfifo");if (pipe (fd_pipe) < 0)//创建无名管道 {perror ("pipe error\n");exit (-1);}pid = fork ();if (pid < 0){perror ("fork");}if (pid == 0)//子进程播放mplayer {close (fd_pipe[0]);dup2 (fd_pipe[1], 1);//将子进程的标准输出重定向到管道的写端 fd_fifo = open ("/tmp/my_fifo", O_RDWR);execlp ("mplayer", "mplayer", "-slave", "-quiet", "-loop", "0", "-input", "file=/tmp/my_fifo", "/home/user/Downloads/text2audio.mp3", NULL);}else{pthread_t tid1;pthread_t tid2;fd_fifo = open ("/tmp/my_fifo", O_RDWR);if (fd < 0)perror ("open");pthread_create (&tid1, NULL, get_pthread, NULL);//从键盘获取控制信息 pthread_create (&tid2, NULL, print_pthread, NULL);//打印从无名管道收到的信息 pthread_join (tid1, NULL);pthread_join (tid2, NULL);}return 0;}
0 0
- 应用与MPlayer通过slave模式进行信息交换
- mplayer slave 模式文档
- mplayer slave 模式文档
- mplayer slave 模式文档
- Mplayer slave模式协议
- mplayer slave 模式文档翻译
- mplayer slave 模式文档翻译
- 与模式对话框进行数据交换
- mplayer slave命令参数
- 多线程如何进行信息交换?
- 在因特网中,各计算机之间是通过什么协议进行交换信息?
- MPlayer -slave 翻译(ZZ)
- mplayer slave 的简单使用
- 动态QLabel + mplayer slave模式播放视频,有声音无画面,解决办法
- slave 模式
- App通过iTunes进行文件交换Documents
- 安卓通过js与网页的H5页面进行交换
- android实现手机通过蓝牙连接使用socket与芯片进行数据交换
- 反向运算和增量赋值
- 程序员转型应该考虑的几个方面
- springmvc+spring+mybatis整合心得
- ids for this class must be manually assigned before calling save():
- HEVC中SAO--自适应样点补偿 详细分析解读
- 应用与MPlayer通过slave模式进行信息交换
- OC 的 #pragma mark - 在Swift 里的代替方法
- 给UIButton添加(类别)方法,方便批量创建button
- UIImage图片缩放到指定大小尺寸
- 探究javascript mvc(二)
- HEVC细琐杂项 持续更新~
- 多路归并排序
- 虚拟机复制后网络启动失败的解决办法
- Tokyo Cabinet和Tokyo Tyrant安装和测试