信号:pause、alarm、kill;第二个项目:基于Mplayer的视频播放器

我要成为嵌入式高手之2月29日Linux高编第十二天!!

学习笔记

信号

1、pause

int pause(void);

功能:让进程睡眠直到接收到捕捉的信号才能继续向下执行

2、alarm

unsigned int alarm(unsigned int seconds);

功能:定时seconds秒后给进程调用发送SIGALRM信号

参数:seconds定时的秒数

返回值:

        成功返回之前设定剩余的秒数

3、kill

int kill(pid_t, int sig)

功能:给PID对应的进程发送sig信号

参数:

        pid:进程ID号

        sig:信号的编号

返回值:成功0,失败-1;

#include "head.h"void hander(int signo)
{return;
}int Mysleep(int seconds)
{signal(SIGALRM, hander);alarm(seconds);pause();signal(SIGALRM, SIG_DFL);return 0;
}int main(void)
{printf("sleep up!\n");Mysleep(5);printf("sleep down!\n");return 0;
}

=====================================================================

Mplayer软件安装步骤:

一、让虚拟机能够上网

1、将虚拟机网卡设置为NAT模式       

                1.点击"虚拟机"

                2.点击"设置"  

                3.选择"网络适配器"

                4.修改为"NAT模式"

                5.点击"确定"

2.修改网卡配置文件,改为自动获取IP地址

                1.sudo vim /etc/network/interfaces 

                2.将文件内容修改为如下形式:

                        auto lo 

                        iface lo inet loopback 

                        auto ens33 

                        iface ens33 inet dhcp 

                3.关闭配置文件

                        ESC

                        :wq

3.重启网络服务

        sudo /etc/init.d/networking restart 

4.测试与百度是否能够ping通

        ping www.baidu.com 

二、使用apt工具集安装Mplayer

1.sudo apt-get install mplayer 

3.将1.flv拷贝到虚拟机的~/Music文件夹下

测试是否能够播放媒体文件:

mplayer ~/Music/1.flv 

4.将a.out拷贝到虚拟机目录下

1.将a.out拷贝到当前目录下

2.修改a.out权限

chmod 0777 a.out 

3.执行a.out查看软件运行效果

./a.out 

项目2

基于Mplayer的视频播放器
1.需求分析:
    1.该程序能够加载指定路径下所有的音视频文件
    (.mp3 .mp4 .avi .rm .rmvb .flv .wma)
    2.能够通过界面操作视频播放器
        支持:
            上键
            下键
            回车
            ESC
        支持:
            焦点定位
            
        1.一级页面功能如下:
        +-------------------+
        |     视频播放器    |
        |-------------------|
        |1.查看播放列表        |
        |2.开始/暂停        |
        |3.停止             |
        |4.上一个           |
        |5.下一个           |
        |6.快进             |
        |7.定位             |
        |8.播放方式            |
        |9.退出             |
        +-------------------+

        查看播放列表二级页面如下:
        +-------------------+
        |     视频播放器    |
        |-------------------|
        |1.张三的歌.mp4     |
        |2.李四的曲.avi     |
        |...                |
        +-------------------+

        定位的二级页面
        +-------------------+
        |     视频播放器    |
        +-------------------+
        定位:XX:XX:XX
    
    3.在一级页面启动播放列表功能,进入二级页面,
      焦点定位到对应歌曲按下enter播放歌曲,按下
      ESC按键能够返回一级页面
    
    4.在一级页面启动下一个功能,能够播放下一个音
      视频文件,如果到达最末尾则提示:最后一首歌曲
      
    5.在一级页面启动上一个功能,能够播放上一个音
      视频文件,如果到达最前面则提示:第一首歌曲

    6.在一级页面启动快进功能,能够按倍速播放,
      第一次选择启动2倍速播放
      第二次选择启动4倍速播放
      第三次选择返回1倍速播放(默认)
      周而复始
      
    7.在一级页面启动开始功能,
      如果音视频正在播放,则暂停播放
      如果音视频正在暂停,则继续播放
      如果音视频文件没有播放,则按照
      播放方式(1.顺序循环 2.单曲循环 3.随机播放)
      播放歌曲
    
    8.在一级页面启动停止功能:
      如果音视频文件没有播放,则提示:未播放音视频文件
      如果音视频正在播放,则停止当前播放内容
    
    9.在一级页面启动定位功能:
      如果定位在音视频文件播放时间内,则跳到对应位置播放
      如果定位位置超过文件播放时间,则提示:定位错误
    
    10.播放方式
      在一级页面启动播放方式功能:
      第一次选择启动单曲循环
      第二次选择启动随机播放
      第三次选择返回顺序循环(默认)

    11.在一级页面启动退出功能:
        则程序退出

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/710573.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

02| JVM堆中垃圾回收的大致过程

如果一直在创建对象,堆中年轻代中Eden区会逐渐放满,如果Eden放满,会触发minor GC回收,创建对象的时GC Roots,如果存在于里面的对象,则被视为非垃圾对象,不会被此次gc回收,就会被移入…

深度学习500问——Chapter02:机器学习基础(1)

文章目录 前言 2.1 基本概念 2.1.1 大话理解机器学习本质 2.1.2 什么是神经网络 2.1.3 各种常见算法图示 2.1.4 计算图的导数计算 2.1.5 理解局部最优与全局最优 2.1.5 大数据与深度学习之间的关系 2.2 机器学习学习方式 2.2.1 监督学习 2.2.2 非监督式学习 2.2.3 …

TVM 和模型优化的概述(1)

文章目录 1. 从 Tensorflow、PyTorch 或 Onnx 等框架导入模型(model)。2.翻译成 Relay3. lower 到 张量表达式。4. 使用 auto-tuning 模块 AutoTVM 或 AutoScheduler 搜索最佳 schedule。5. 选择最佳配置进行模型编译。6. lower 到 TIR。7. 编译成机器码…

波奇学Linux:共享内存

进程通信的前提:不同的进程看到同一份的资源 直接原理:同一块物理内存映射到不同进程的共享区 共享内存拆解: 1.申请内存,通过页表映射到进程地址空间 2.返回首地址,便于进程利用 3.释放共享内存,去关联 4.内存的申请…

flex的5种常见使用

Flex 布局教程:语法篇 文章目录 一.基本概念二 例子 其实我每次记一个样式标签,都是根据英文来记,但是justify-content和align-items确实让我迷惑,这次我打算只记 justify-content属性定义了项目在主轴上的对齐方式,好好总结一下用法~ 一.基本概念 采用 Flex 布局…

SpringBoot 事务失效及其对应解决办法

简介 本文主要讲述Spring事务会去什么情况下失效及其解决办法 Spring 通过AOP 进行事务控制,如果操作数据库报异常,则会进行回滚;如果没有报异常则会提交事务;但是,如果Spring 事务失效,会导致数据缺失/重…

Quartz与Spring Task的区别

1、相同点: 两者均能实现定时调度任务 2、Quartz ① 默认多线程异步执行 ② 单个任务时,在上一个调度未完成时,下一个调度时间到时,会另起一个线程开始新的调度。业务繁忙时,一个任务会有多个调度,可能导…

DAY65: 图论入门797、200、695

深度优先搜索 深度优先搜索按照一个方向一直搜索直到截止,再回溯换搜索方向。 搜索方向,是认准一个方向搜,直到碰壁之后再换方向换方向是撤销原路径,改为节点链接的下一个路径,回溯的过程 因为需要回溯,…

【STM32】STM32学习笔记-独立看门狗和窗口看门狗(47)

00. 目录 文章目录 00. 目录01. WDG概述02. 独立看门狗相关API2.1 IWDG_WriteAccessCmd2.2 IWDG_SetPrescaler2.3 IWDG_SetReload2.4 IWDG_ReloadCounter2.5 IWDG_Enable2.6 IWDG_GetFlagStatus2.7 RCC_GetFlagStatus 03. 独立看门狗接线图04. 独立看门狗程序示例105. 独立看门…

简单排列组合题(python版)

文章预览: 题目解法一输出结果 解法二输出结果输出结果 题目 有四个数字:1,2,3,4能组成多少个互不相同且无重复的数字的三位数? 各式多少? 解法一 我们粗略看一下这个题既然我们要组成三位数,那我们就循环3层每一层出一个数,并且if语句判…

OD(12)之Mermaid思维导图(Mindmap)

OD(12)之Mermaid思维导图(Mindmap)使用详解 Author: Once Day Date: 2024年2月29日 漫漫长路才刚刚开始… 全系列文章可参考专栏: Mermaid使用指南_Once_day的博客-CSDN博客 参考文章: 关于 Mermaid | Mermaid 中文网 (nodejs.cn)Mermaid | Diagramming and charting tool…

postman传参与返回值切换为左右显示的操作

目录 第一步 点击“Settings”,在下拉框选择“Settings” 第二步 在默认打开的General页面,参照下图改动两处 第一步 点击“Settings”,在下拉框选择“Settings” 第二步 在默认打开的General页面,参照下图改动两处 附上修改后…

字符串函数strstr()详解

一、strstr()函数的作用 字符串函数 strstr() 是 C 语言的一个标准库函数,它的作用是在一个字符串中查找给定字符串的第一个匹配之处,并返回指向该字符串的指针。如果没有找到该字符串,则返回 NULL。1 二、strstr()函数的原型和参数 strst…

c语言求奇数分之一序列前N项和

本题要求编写程序,计算序列 1 1/3 1/5 ... 的前N项之和。 输入格式: 输入在一行中给出一个正整数N。 输出格式: 在一行中按照“sum S”的格式输出部分和的值S,精确到小数点后6位。题目保证计算结果不超过双精度范围。 输入样例: 23输出样例: …

opencv中的rgb转gray的计算方法

转换原理 在opencv中,可以使用cv2.cvtColor函数将rgb图像转换为gray图像。示例代码如下, import cv2img_path "image.jpg" image cv2.imread(img_path) gray_image cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) mean gray_image.mean() pri…

【AI Agent系列】【MetaGPT多智能体学习】4. 基于MetaGPT的Team组件开发你的第一个智能体团队

本系列文章跟随《MetaGPT多智能体课程》(https://github.com/datawhalechina/hugging-multi-agent),深入理解并实践多智能体系统的开发。 本文为该课程的第四章(多智能体开发)的第二篇笔记。主要是对MetaGPT中Team组件…

【Django】执行查询—检索对象

检索对象 检索全部对象 >>> all_entries Entry.objects.all()通过过滤器检索指定对象 通过添加过滤条件精炼原始 QuerySet。两种最常见的精炼 QuerySet 的方式是: filter(**kwargs) 返回一个新的 QuerySet,包含的对象满足给定查询参数。 ex…

【Tomcat】在 linux 上实现 Catlina.log 自动分割,防止文件过大

背景描述 catalina.out即标准输出和标准出错,所有输出到这两个位置的都会进入catalina.out,这里包含tomcat运行自己输出的日志以及应用里向console输出的日志。默认这个日志文件是不会进行自动切割的,所以我们需要借助其他工具进行切割&…

MySQL:快照读和当前读

mysql读取数据实际上有两种读取模式:当前读和快照读 快照读:快照读的执行方式是生成 ReadView,直接利用 MVCC 机制来进行读取,并不会对记录进行加锁。当前读:每次读取的都是当前最新的数据,但是读的时候不…

剑指offer面试题22 栈的压入弹出序列

考察点 辅助栈知识点 题目 分析 这道题目要求输入俩个序列,第一个序列表示栈的压入顺序,要求判断第二个序列是否是该栈的弹出顺序。遇到这类题目思维一定要往辅助栈上靠,因为关于栈的考点其实就是这个。这种题目的解题思路就是归纳&#x…