添加 mplayer 初始化代码

This commit is contained in:
flykhan 2023-08-30 16:09:27 +08:00
parent 54d5f52e86
commit e8b4b46109
2 changed files with 29 additions and 0 deletions

View File

@ -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;
}
}
} }

View File

@ -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; }