Day 36 基于管道技术,控制mplayer 播放器 signal , mkfifo, execlp, 主要是通过写命令控制

#include “head.h”

/**————————————————————————|

  • 基于Mplayer的视频播放器 |
    *--------------------------|
  • 1.查看播放列表 |
  • 2.开始 |
  • 3.暂停 |
  • 4.停止 |
  • 5.上一个 |
  • 6.下一个 |
  • 7.快进 |
  • 8.定位 |
  • 9.播放方式 |
  • 10.退出
    ***************************/

int main(void)
{
//此处注册一个信号,在子进程结束时触发这个信号
signal(SIGCHLD,handle);
system_init("/home/linux/mytest");
show_cmd();
while(1)
{
//命令解析与处理
do_handle();
}
return 0;
}


#ifndef HEAD_H
#define HEAD_H
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <string.h>
#include <sys/types.h>
#include <dirent.h>
#include <unistd.h>
#include <errno.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <signal.h>

typedef struct number
{
char media_name[100] [100];
int media_total;
int current_media;
pid_t pid;
int media_mode;
int flag;
}Member;

extern Member member;

//extern void handle(int num);
extern void handle(int num);
extern int rand_mode();
extern int loop_mode();
extern int signal_mode();
extern int rand_mode();
extern int do_next();
extern int do_prev();
extern int do_seek_set(int ret);
extern int do_seek4();
extern int do_seek1();
extern int do_seek2();
extern int do_stop();
extern int do_pause();
extern void do_paly(char *file);
extern int file_obtain(char *path);
extern int do_handle();
extern void do_list();
extern int show_cmd();
extern int system_init(char *path);
#endif // HEAD_H


#include “head.h”

//在这里声明结构体全局变量
Member member;

//信号处理函数
void handle(int num)
{
//通过标志位flag来判断是一个媒体文件播放完触发的信号,
//还是用户切换文件触发的信号。
if(0 == member.flag)
{
//根据全局变量member.media_mode来判断应该进行哪种模式的播放
if(0 ==member.media_mode)
{
printf(“loop_mode play\n”);
loop_mode();

}
if(1 == member.media_mode)
{

    rand_mode();
    printf("rand_mode play\n");
}
if(2 == member.media_mode)
{
    signal_mode();
    printf("signal_mode play\n"
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值