添加 mplayer 初始化代码
This commit is contained in:
parent
54d5f52e86
commit
e8b4b46109
|
@ -7,6 +7,7 @@ MainWindow::MainWindow(QWidget *parent)
|
||||||
{
|
{
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
initMainWindow(); // 初始化主界面
|
initMainWindow(); // 初始化主界面
|
||||||
|
mplayerInit(); // 初始化 mplayer
|
||||||
}
|
}
|
||||||
|
|
||||||
MainWindow::~MainWindow()
|
MainWindow::~MainWindow()
|
||||||
|
@ -55,4 +56,28 @@ void MainWindow::mplayerInit()
|
||||||
// 创建一个无名管道
|
// 创建一个无名管道
|
||||||
int fd[2];
|
int fd[2];
|
||||||
pipe(fd);
|
pipe(fd);
|
||||||
|
|
||||||
|
// 创建有名管道
|
||||||
|
mkfifo("fifo_cmd",0666);
|
||||||
|
|
||||||
|
// 创建 子进程启动 mplayer
|
||||||
|
pid_t pid = fork();
|
||||||
|
if(pid == 0) // 子进程
|
||||||
|
{
|
||||||
|
// 重定向标准输出
|
||||||
|
dup2(fd[1],1);
|
||||||
|
// 使用 exec 启动 mplayer
|
||||||
|
execlp("mplayer","mplayer","-idle","-slave","-quiet","-input","file=fifo_cmd","./song/01.mp3",NULL);
|
||||||
|
_exit(-1); // 异常退出
|
||||||
|
}
|
||||||
|
else if(pid>0) // 父进程
|
||||||
|
{
|
||||||
|
// 打开管道
|
||||||
|
// 以写的方式打开(阻塞到某进程 以读的方式打开)
|
||||||
|
fifo_fd = open("fifo_cmd",O_WRONLY);
|
||||||
|
if(fifo_fd < 0){
|
||||||
|
perror("open");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,6 +4,10 @@
|
||||||
#include <QMainWindow>
|
#include <QMainWindow>
|
||||||
|
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
#include <cstdio>
|
||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
QT_BEGIN_NAMESPACE
|
||||||
namespace Ui { class MainWindow; }
|
namespace Ui { class MainWindow; }
|
||||||
|
|
Loading…
Reference in New Issue