![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux
文章平均质量分 91
敲代码痛苦吗?
成功是奋斗出来的
展开
-
ARM指令集--相关指令的功能
文章目录ARM指令集的分类数据处理指令(22种)ARM指令集的分类ARM指令集共有6种类型(53种主要助记符):数据处理指令(22种主要助记符)跳转指令(4种主要助记符)Load/Store指令(16种主要助记符)程序状态寄存器指令(2种主要助记符)协处理器指令(5种主要助记符)软件中断指令 (2种主要助记符)数据处理指令(22种)MOV数据传送指令格式:MOV{<cond>}{S} <Rd>,<op1>;功能:Rd=op1op1可以是寄存原创 2021-11-25 10:23:28 · 2507 阅读 · 0 评论 -
Mplayer移植-在arm开发板上移植音频播放
Mplayer 移植前期准备:1、软件:MPlayer-1.0rc4.tar libmad-0.15.1b.tar2、环境:Linux虚拟机下,配置交叉编译器,nfs服务,xshell(或者 超级终端),串口驱动(PL2303.。。)3、硬件:虚拟机下Linux系统,USB转串口线,ARM开发板中期执行:1、将MPlayer-1.0rc4.tar libmad-0.15.1b.tar放入新创建的mplayermove文件夹下(此文件夹为mplayer移植的总文件夹),我将mplayermov原创 2021-05-21 15:12:41 · 1943 阅读 · 4 评论 -
关于文件的一些函数
1. open函数open函数声明如下:#include<sys/types.h>#include<sys/stat.h>#include<fcntl.h>int open (const char *pathname, int flags, mode_t mode);参数:pathname:文件的路径及文件名。flags:open函数的行为标志。mode:文件权限(可读、可写、可执行)的设置open函数的flagsflags说明O原创 2020-11-14 16:20:35 · 85 阅读 · 0 评论 -
关于进程的一些函数和功能
进程的创建 fork函数在Linux环境中,创建进程的主要方法是调用以下两个函数:#include<sys/types.h>#include<unistd.h>pid_t fork(void);pid_t vfork(void);创建一个新进程pid_t fork(void)功能:fork()函数用于从一个已存在的进程中创建一个新进程,新进程成为子进程,原进程成为父进程;返回值:成功:子进程中返回0,父进程中返回子进程ID。失败:返回-1。使用fork函数原创 2020-11-17 11:28:52 · 273 阅读 · 0 评论 -
信号的概述
一、信号的概述信号是软件中断,它是在软件层次上对中断机制的一种模拟。信号可以导致一个正在运行的进程被另一个正在运行的异步进程中断,转而处理某一个突发事件。信号是一种异步通信方式。进程不必等待信号的到达,进程也不知道信号什么时候到达。信号可以直接进行用户进程和内核空间进程的交互,内核进程可以利用它来通知用户空间进程发生了哪些系统事件。每个信号的名字都以字符SIG开头。每个信号和一个数字编码相对应,在头文件signum.h中 ,这些信号都被定义为正整数。信号名定义路径:/user/include原创 2020-11-18 12:16:20 · 285 阅读 · 0 评论 -
kill函数
kill函数#include<sys/types.h>#include<signal.h>int kill(pid_t pid,int signum)功能:给指定进程发送信号。参数:pid:pid>0:将信号传送给进程ID为pid的进程。pid=0:将信号传送给当前进程所在进程组中的所有进程。pid=-1:将信号传送给系统内所有的进程。pid<-1:将信号传给指定进程组的所有进程。这个进程组号等于pid的绝对值。**signum:**信号的编号返原创 2020-11-19 13:50:26 · 777 阅读 · 0 评论 -
alarm函数
alarm函数#include<unistd.h>unsigned int alarm(unsigned int seconds);功能:在seconds秒后,向调用进程发送一个SIGALRM信号,SIGALRM信号的默认动作是终止调用alarm函数的进程。返回值:若以前没有设置过定时器,或设置的定时器已超时,返回0;否则返回定时器剩余的秒数,并重新设置定时器。代码:#include<stdio.h>#include<unistd.h>int mai原创 2020-11-19 16:43:00 · 446 阅读 · 0 评论 -
raise函数的使用
raise函数#include<signal.h>int raise(int signum);功能:给调用进程本身发送一个信号。参数:signum:信号的编号。返回值:成功返回0 ;失败返回-1 。案例:#include<stdio.h>#include<unistd.h>#include<sys/types.h>#include<stdlib.h>#include<signal.h>int main()原创 2020-11-19 17:08:12 · 1143 阅读 · 0 评论 -
signal函数的使用
signal函数#include<signal.h>typedef void(*sighandler_t)(int);sighandler_t signal(int signum,sighandler_t handler);功能:注册信号处理函数(不可用于SIGKILL、SIGSTOP信号),即确定收到信号后处理函数的入口地址。参数:signum:信号编号handler的取值:忽略该信号:SIG_IGN执行系统默认动作:SIG_DFL自定义信号处理函数:信号处理函数名返回原创 2020-11-20 12:17:07 · 672 阅读 · 0 评论 -
进程和线程的比较
进程和线程的比较调度:线程是CPU调度和分派的基本单位。拥有资源:进程是系统中程序执行和资源分配的基本单位。线程自己一般不拥有资源(除了必不可少的程序计数器,一组寄存器和栈),但它可以去访问qi其所属组的资源,如进程代码段,数据段以及系统资源(已打开的文件,I\O设备等)。系统开销: 同一进程中的多个线程可共享同一地址空间,因此他们之间的的同步和通信的实现也变得比较容易。在进程切换的时候,涉及到整个当前进程CPU环境的保存以及新北调度运行的进程的CPU环境的设置;而线程切换只需要保存和设置少量原创 2020-11-20 13:36:53 · 105 阅读 · 0 评论 -
信号集的使用
1.sigemptyset函数初始化一个空的信号集#include<signal.h>int sigemptyset(sigset_t *set);功能:初始化由set指向的信号集,清除其中所有的信号即初始化一个空信号集。参数:**set:**信号集标识的地址,以后操作此信号集,对set进行操作就可以了。返回值:成功返回 0失败返回 -12.sigfillset函数初始化一个满的信号集#include<signal.h>int sigfillset(sig原创 2020-11-23 11:30:03 · 236 阅读 · 0 评论 -
信号阻塞集
创建一个信号阻塞集#include<signal.h>int sigprocmask(int how,const sigset_t *set ,sigset_t *oldset);功能:检查或修改信号阻塞集,根据how指定的方法对进程的阻塞集合进行修改,新的信号阻塞集由set指定,而原先的信号阻塞集合由oldset保存。参数:how:信号阻塞集合的修改方法。set:要操作的信号集地址。oldset:保存原先信号集地址。参数how的取值取值作用SIG_BLO原创 2020-11-23 14:38:12 · 221 阅读 · 0 评论 -
管道
文章目录1.无名管道的概述2.无名管道的创建pipe函数1.无名管道的概述管道又称无名管道。无名管道是一种特殊类型的文件,在应用层体现为两个打开的文件描述符。任何一个进程在创建的时候,系统都会给她分配4G的虚拟内存,分为3G的用户空间和1G的内核空间,内核空间是所有进程公有的,无名管道就是创建在内核空间的,多个进程知道同一个无名管道的空间,就可以利用它来进行通信。管道式最古老的UNIX IPC方式,其特点是:1、半双工,数据在同一时刻只能在一个方向上流动。2、数据只能从管道的一端写入,从另一原创 2020-11-23 19:34:37 · 96 阅读 · 0 评论 -
文件描述符的复制之dup函数和dup2函数
文章目录dup函数dup2函数 重定向dup函数#include<unistd.h>int dup(int oldfd);功能:复制oldfd文件描述符,并分配一个新的文件描述符,新的文件描述符是调用进程文件描述符表中最小可用的文件描述符。参数:要复制的文件描述符oldfd。返回值:成功:新文件描述符。失败:返回 -1,错误代码存于errno中。案例代码1:使用dup函数复制文件描述符#include<stdio.h>#include<unist原创 2020-11-24 13:45:19 · 368 阅读 · 0 评论 -
消息队列的使用
文章目录1、创建消息队列 --- msgget()2、发送消息 -- msgsnd()1、创建消息队列 — msgget()#include<stdio.h>int msgget(key_t key,int msgflg);功能:创建一个新的或打开一个已经存在的消息队列。不同的进程调用此函数,只要用相同的key值就能得到同一个消息队列的标识符。参数:key: IPC键值,唯一的键值确定唯一的消息队列。方法1:任意指定一个数。方法2:使用ftok函数获取键值。msgflg: 标原创 2020-11-26 17:02:55 · 1277 阅读 · 0 评论 -
互斥锁的使用
文章目录1、初始化互斥锁2、互斥锁上锁:3、互斥锁解锁:4、销毁互斥锁:5、案例代码:1、初始化互斥锁mutex用pthread_mutex_t数据类型表示,在使用互斥锁前,必须先对它进行初始化。静态分配的互斥锁:pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;动态分配互斥锁:pthread_mutex_t mutex;pthread_mutex_init(&mutex,NULL);销毁互斥锁:在所有使用过互斥锁的线程都不再需要使原创 2020-11-27 13:34:53 · 2435 阅读 · 0 评论 -
无名管道实现进程间的通信
从管道中读数据的特点:1、默认用read函数从管道中读数据是阻塞的。2、调用write函数向管道里写数据,当缓冲区已满时write也会阻塞。3、通信过程中,读端口全部关闭后,写进程向管道内写数据时,写进程会(收到SIGPIPE信号)退出。注意:利用无名管道实现进程间的通信,都是父进程创建无名管道,然后再创建子进程,子进程继承父进程的无名管道的文件描述符,然后父子进程通过读写无名管道实现通信。案例代码:#include<stdio.h>#include<stdlib.h>原创 2020-11-28 12:38:18 · 634 阅读 · 0 评论 -
获得一个共享存储标识符
#include<sys/ipc.h>#include<sys/shm.h>int shmget(key_t key, size_t size, int shmflg);功能:创建或打开一块共享内存区参数:key: IPC键值size: 该共享存储断的长度(字节)shmflg: 标识函数的行为及共享内存的权限IPC_CREAT: 如果不存在就创建IPC_EXCL: 如果已经存在则返回失败位或权限位: 共享内存位或权限位后可以设置共享内存的访问权限,格式和open原创 2020-11-29 19:47:08 · 180 阅读 · 0 评论 -
fork函数与vfork函数的使用与区别
进程的创建 fork函数在Linux环境中,创建进程的主要方法是调用以下两个函数:#include<sys/types.h>#include<unistd.h>pid_t fork(void);pid_t vfork(void);创建一个新进程pid_t fork(void)功能:fork()函数用于从一个已存在的进程中创建一个新进程,新进程成为子进程,原进程成为父进程;返回值:成功:子进程中返回0,父进程中返回子进程ID。失败:返回-1。使用fork函数原创 2020-12-18 16:46:59 · 171 阅读 · 1 评论 -
进程的等待--wait函数
进程的等待wait函数:#include<sys/types.h>#include<sys/wait.h>pid_t wait(int *status);功能:等待子进程终止,如果子进程终止了,此函数会回收子进程的资源。调用wait函数的进程会挂起,直到它的一个子进程退出或收到一个不能被忽视的信号时才被唤醒。若调用进程没有子进程或它的子进程已经结束,该函数立即返回。参数:函数返回时,参数status中包含子进程退出时的状态信息。子进程的退出信息在一个int中包含了原创 2020-12-18 16:49:07 · 284 阅读 · 1 评论 -
进程的终止--exit()与_exit()的使用与区别
进程的终止:void exit(int value)void _exit(int value)1. exit 函数#include<stdlib.h>void exit(int value)参数:status:返回给父进程的参数(低8位有效)一般失败退出返回非0成功退出返回02. _exit 函数#include<stdlib.h>void _exit(int value)参数:status:返回给父进程的参数(低8位有效)一般失败退出返回非0成功退出原创 2020-12-18 16:50:14 · 191 阅读 · 1 评论 -
有名管道
文章目录有名管道的创建有名管道的创建方法1:用shell命令mkfifo创建有名管道mkfifo 文件名方法2:使用函数mkfifo #include <sys/types.h> #include <sys/stat.h> int mkfifo(const char *pathname, mode_t mode);功能:创建一个有名管道,产生一个本地文件系统可见的文件pathname参数:**pathname:**有名管道创建后生成的文件,可以原创 2020-11-26 12:47:19 · 91 阅读 · 0 评论 -
ftok函数的使用
查看当前系统中所有创建的IPC对象1、ipcs 查看当前系统中所有创建的IPC对象2、ipcs -q 查看创建的消息队列3、ipcs -m 查看创建的共享内存段4、ipcs -s 查看创建的信号量数组 5、ipcrm 删除IPC对象 例如:ipcrm -q msqid 删除标号为msqid的消息队列 SYstem V提供的IPC通信机制需要一个key值,通过key值就可在系统内获得一个唯一的消息队列标识符。key值可以是人为指定的,也可以通过ftok函数获得。如果多个进程想原创 2020-11-25 19:27:03 · 435 阅读 · 0 评论