
Linux
感觉会有股潮流,linux系统下的嵌入式开发将会越来越多,总有一天会击败单片机下开发嵌入式系统。
没用的阿鸡
不知咋办
展开
-
Ubuntu下Linux进程间通信——信号量
Linux进程间通信——信号量Linux提供了多种进程间通信的方法,常见有管道(匿名)、FIFO(有名管道)、消息队列、信号量、共享内存,socket通信。4.信号量信号量(semaphore)是一种用于提供不同进程之间或者一个给定的不同线程间同步手段的原语。信号量多用于进程间的同步与互斥,主要有三点:①同步:处理竞争就是同步,安排进程执行的先后顺序就是同步,每个进程都有一定的先后执行顺序。②互斥:互斥访问不可共享的临界资源,同时会引发两个新的控制问题(互斥可以说是特殊的同步)。③竞争:当并发进原创 2020-06-10 21:26:59 · 1326 阅读 · 0 评论 -
Ubuntu下Linux进程间通信——消息队列
Linux进程间通信——消息队列Linux提供了多种进程间通信的方法,常见有管道(匿名)、FIFO(有名管道)、消息队列、信号量、共享内存,socket通信。3.消息队列消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法。 每个数据块都被认为含有一个类型,接收进程可以独立地接收含有不同类型的数据结构。我们可以通过发送消息来避免命名管道的同步和阻塞问题。但是消息队列与命名管道一样,每个数据块都有一个最大长度的限制。//创建消息队列int msgget(key_t key, int msgf原创 2020-06-10 12:26:02 · 1514 阅读 · 0 评论 -
Ubuntu下Linux进程间通信——共享内存
Linux进程间通信——共享内存Linux提供了多种进程间通信的方法,常见有管道(匿名)、FIFO(有名管道)、消息队列、信号量、共享内存,socket通信。4.共享内存共享内存是在内存中开辟一段空间,供不同的进程访问。#include <sys/ipc.h>#include <sys/shm.h>int shmget(key_t key,size_t size,int shmflg);void *shmat(int shmid,const void *shmaddr,原创 2020-06-10 11:15:51 · 1727 阅读 · 0 评论 -
Ubuntu下Linux进程间通信——FIFO(有名管道)
Linux进程间通信——FIFO(有名管道)Linux提供了多种进程间通信的方法,常见有管道(匿名)、FIFO(有名管道)、消息队列、信号量、共享内存,socket通信。2.FIFO(有名管道)我们通常所说的管道为无名管道或者匿名管道,管道没有名字,因此,只能在有亲缘关系的进程间(父子进程)实现通信,有名管道的出现突破了该限制,它是一个设备文件,它提供一个路径名与FIFO关联,即使进程与创建FIFO的进程不存在亲缘关系,只要可以访问这个路径也可以实现通信。匿名管道与有名管道的区别(1)有名管道可以原创 2020-06-10 11:14:09 · 1213 阅读 · 1 评论 -
如何实现可靠性的UDP协议(三大方式RUDP、RTP、UDT)
如何实现可靠性的UDP协议今天面试了一家搞路由器的公司,嵌入式软件工程师职位。其中提到了一个如何实现可靠性的UDP传输,当时他问的有两点吧,①如何发现丢包,②怎么确定包是对的。当时我也少了解这方面,主要回答了给每个包编号可以解决丢包问题,给每个包后面一个字段(包的编号和包的大小信息)来确认包是否正确。回来后自己上网调查:TCP如何实现可靠性传输?①重传机制:针对数据包丢失或者出现定时器超时②确认应答:停止等待协议,发送之后等待收到应答。③序列号:针对数据包到达接收端主机顺序乱掉④流量控制:原创 2020-06-09 18:07:49 · 7398 阅读 · 0 评论 -
socket多线程通信(一个服务器对多个客户端)
socket多线程通信(一个服务器对多个客户端)1.服务器端#include <stdio.h>#include <stdlib.h>#include <sys/socket.h>#include <netinet/in.h>#include <string.h>#include <pthread.h>#include <unistd.h>#include <errno.h>#define P原创 2020-05-19 19:08:53 · 2075 阅读 · 0 评论 -
Linux的socket通信(TCP可靠性传输)
1.创建socket对象#include <sys/types.h>#include <sys/socket.h>int socket(int domain,int type,int protocol);domain用来指定使用的域,这里使用TCP/IP协议,AF_INET表示IPv4协议,AF_INET6为IPv6协议;type指定数据传输方式,有两种:①SOCK_STREAM代表面向连接的数据流方式,SOCK_DGRAM代表无连接的数据报方式。protocol一般为0.原创 2020-05-15 19:22:01 · 455 阅读 · 0 评论 -
linux系统下多线程开发(创建线程、取消线程、等待线程)
linux系统下多线程开发(创建线程、取消线程、等待线程)1.创建线程#include <pthread.h>int pthread_create(pthread_t *restrict thread,const pthread_attr_t *restrict attr,void *(*start_routine)(void*),void *restrict arg);restrict修饰的指针所指向的数据是唯一的;如果创建线程成功,会返回0,thread是线程的ID;attr是设置原创 2020-05-14 11:00:37 · 233 阅读 · 0 评论 -
Ubuntu下Linux进程间通信——匿名管道
Linux进程间通信(管道、共享内存)1.管道#include <unistd.h>int pipe(int filedes[2]);filedes会返回两个文件描述符,filedes[0]为读端,filedes[1]为写端。创建成功pipe()会返回0,失败返回-1。实例#include <sys/types.h>#include <unistd.h>#include <stdio.h>#include <stdlib.h>原创 2020-05-13 10:03:11 · 972 阅读 · 0 评论 -
Linux进程(创建进程、等待进程结束、退出进程)
Linux进程(创建进程、等待进程结束、退出进程)1.创建进程#include <sys/types.h>#include <unistd.h>pid_t fork(void);fork()函数用来创建一个进程,创建成功返回0,失败返回-1。实例#include <sys/types.h>#include <unistd.h>#include <stdio.h>#include <stdlib.h>int ma原创 2020-05-12 11:57:48 · 2463 阅读 · 0 评论 -
Linux文件操作(打开/创建文件、读写文件、覆盖文件内容)
Linux文件操作实例1.打开/创建文件#include <stdio.h>#include <string.h>#include <fcntl.h>#include <unistd.h>#include <sys/types.h>#include <sys/stat.h>#include <errno.h>extern int errno;int main(){ int fd; f原创 2020-05-11 12:36:57 · 3381 阅读 · 0 评论 -
Linux POSIX文件I/O编程
Linux POSIX文件I/O编程1.创建/打开/关闭文件#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>int open(const char *pathname,int flags);int open(const char *pathname,int flags,mode_t mode);int creat(const char *pathname,mode_t mode);原创 2020-05-10 18:54:11 · 670 阅读 · 0 评论 -
Linux文件操作(ANSI C)
Linux文件操作1.文件指针ANSI文件操作提供了一个文件指针FILE来进行对文件的打开读写和关闭及其他访问;它的结构体:typedef struct{ int level; //缓冲区填充的级别 unsigned flags; //文件状态标志 char fd; ...原创 2020-05-10 08:33:31 · 570 阅读 · 0 评论 -
Linux的内存管理和使用
Linux的内存管理和使用如果学过算法的一般都知道内存其实很重要,打游戏的也知道。1.堆和栈的区别①栈:栈是一个由编译器分配释放的区域,用来存放函数的参数、局部变量等。当调用函数时,被调用函数的参数和返回值会储存到当前程序的栈区,之后被调用的函数还会为自身的自动变量和临时变量字栈区上分配空间,当函数调用返回(函数结束),栈区内的参数返回值、自动变量和临时变量等会被释放。这种方法是为了保证...原创 2020-05-04 20:49:14 · 207 阅读 · 0 评论 -
Linux操作系统命令行常用的指令
Linux常用的指令我使用的是Ubuntu系统。正常情况下,一般使用apt-get命令来安装、卸载软件。apt-get install <软件包名称>apt-get uninstall <软件包名称>sudo apt-get #使用这个会好点查看目录一般使用ls指令ls -l #列表方式ls -a #显示隐藏文件和目录ls -h #阅读...原创 2020-05-04 13:22:59 · 403 阅读 · 0 评论 -
Linux学习随手笔记二
Linux学习笔记二最近太急功近利,实在是不应该。把书看完意义并不大,把书翻烂了我觉得还可以。①ARM处理器:32位微处理器,采用RISC精简指令集,内部使用大量寄存器,执行指令速度快,采用多级流水线结构处理速度快,支持多种寻址方式,指令长度固定等优点。②ARM处理器支持ARM和Thumb指令集:ARM指令集在32位模式下工作,长度32b;Thumb指令集在16位模式下工作,长度16b。...原创 2020-05-04 11:36:41 · 218 阅读 · 0 评论 -
Linux学习随手笔记一
Linux学习随手笔记①计算机是由硬件系统和软件系统组成的;有人把它分成了运算器、控制器、存储器和输入输出设备。②在嵌入式系统中,大多数的处理器使用的是哈佛结构。③所谓的哈佛结构,他的特点是把指令和数据分开存储,控制器可以先读取指令,交给运算器解码,得到数据地址后,控制器读取数据交给运算器;运算器运算时,控制器读取下一条指令或数据。④中央处理器CPU:计算机系统的核心,CPU是由运算器、控...原创 2020-04-29 21:07:50 · 175 阅读 · 0 评论