命令行音乐播放器代码
来源:互联网 发布:linux没有service命令 编辑:程序博客网 时间:2024/05/22 12:55
最近想在linux平台下写一款音乐播放器,找了一下,没有其他的解决办法,于是想调用mmplayer的代码来达到播放音乐的目的,然后开始写了之后,发现需要用的技术还挺多的。包括,多线程编程,多进程编程,进程间通讯,线程间通讯,条件变量,互斥量,线程锁,有名管道以及无名管道,权当复习一下linux系统调用编程,下面我把代码复制到下面,大家参考一下,相关的资料在网上都能找得到。
#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输出的消息
//发送到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));
if (size == 0) {
return 1;
}
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");if( mkfifo("/tmp/my_fifo",O_CREAT|0666) < 0)
{
perror("mkfifo");
}
if(pipe(fd_pipe) < 0)
{
perror("pipe");
exit(-1);
}
pid = fork();
if(pid < 0)
{
perror("fork");
exit(-1);
}
char buf[10];
atoi()
if(pid == 0) //子进程
{
close(fd_pipe[0]);
dup2(fd_pipe[1],1);
if(fd_fifo = open("/tmp/my_fifo",O_RDWR) < 0)
{
perror("son fd_fifo");
}
execlp("mplayer","mplayer","-slave","-quiet","-input",\
"file=/tmp/my_fifo","ge.wav","-loop","0",NULL);
}
else
{
pthread_t tid1;
pthread_t tid2;
fd_fifo=open("/tmp/my_fifo",O_RDWR);
if(fd_fifo<0)
{
perror("open my_fifo");
}
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
- 命令行音乐播放器代码
- 音乐播放器代码
- Linux下命令行音乐播放器
- linux 命令行播放音乐
- 网站音乐播放器代码
- 网页音乐播放器代码
- 网页音乐播放器代码
- 音乐播放器的代码
- IOS音乐播放器代码
- IOS音乐播放器代码
- 音乐播放器代码解释
- 树莓派 centos7 命令行播放音乐
- 音乐播放器代码和网页播放器代码
- 10种自动音乐播放器代码
- html页面音乐播放器_embed代码
- 简单的音乐播放器代码。。。
- android 开发之音乐播放器代码
- Android音乐播放器代码实现
- 字符串按指定长度剪切 代码段
- 异常org.jetbrains.android.uipreview。RenderingException:未能加载
- ZF2入门:Windows环境下从零开始Zend Framework 2.0 (ZF2)环境搭建
- kafka初探
- 创建二叉排序树
- 命令行音乐播放器代码
- AngularJS 模块
- 斐波那契数列和爬楼梯问题
- storm启动后不打印日志,提交Topology后也不打印日志
- 漫谈Java加密技术(一)
- 快速排序算法(Java)
- git使用ssh密钥
- EventBus 3.0使用及源码分析
- openwrt参考文档