Linux应用编程
文章平均质量分 95
清风徐来Groot
世间所有的相遇,都是久别重逢
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Linux高级网络编程系列教程
一、网络应用层编程1、Linux网络编程01——网络协议入门2、Linux网络编程02——无连接和面向连接的区别3、Linux网络编程03——字节序和地址转换4、Linux网络编程04——套接字5、Linux网络编程05——C/S与B/S架构的区别6、Linux网络编程06——UDP协议编程7、Linux网络编程07——广播8、Linux网络编程08——多播9、Linux网络编程09—...转载 2020-03-10 14:37:04 · 325 阅读 · 0 评论 -
linux中路由、策略路由
https://blog.youkuaiyun.com/miner_k/article/details/78816371转载 2019-04-10 10:09:49 · 199 阅读 · 0 评论 -
Linux下如何实现程序的开机自启动?
运行级别许多程序需要开机启动。它们在Windows叫做"服务"(service),在Linux就叫做"守护进程"(daemon)。init进程的一大任务,就是去运行这些开机启动的程序。但是,不同的场合需要启动不同的程序,比如用作服务器时,需要启动Apache,用作桌面就不需要。Linux允许为不同的场合,分配不同的开机启动程序,这就叫做"运行级别"(runlevel)。也就是...原创 2020-10-29 17:43:34 · 472 阅读 · 0 评论 -
start-stop-daemon 用法
-b, --background 后台运行-o, --oknodo 即使运行不了daemon,也会exit 0-q, --quiet 不要输出警告信息-v,--verbose 输出start-stop-daemon执行过程(不是daemon的执行过程)ps:start-stop-daemon 仅能启动一个daemon的单个实例,启动第二个实例(比如监听另外一个端口)时会提...转载 2019-03-22 16:52:21 · 12400 阅读 · 0 评论 -
select()函数以及FD_ZERO、FD_SET、FD_CLR、FD_ISSET
select函数用于在非阻塞中,当一个套接字或一组套接字有信号时通知你,系统提供select函数来实现多路复用输入/输出模型,原型:int select(int maxfd,fd_set *rdset,fd_set *wrset,fd_set *exset,struct timeval *timeout);所在的头文件为:#include <sys/time.h> 和#inc...转载 2019-03-22 10:16:07 · 516 阅读 · 0 评论 -
Linux下动态库常识
【1】Linux动态库的默认搜索路径是/lib和/usr/lib 动态库被创建后,一般都复制到这两个目录中。当程序执行时需要某动态库,并且该动 态库还未加载到内存中,则系统会自动到这两个默认搜索路径中去查找相应的动态库文件,然后加载该文件到内存中,这样程序就可以使用该动态库中的函数,以及该动态库的其它资源了...原创 2019-03-21 15:58:03 · 168 阅读 · 0 评论 -
IP地址、子网掩码、默认网关是什么意思
https://www.cnblogs.com/santiaoa/p/5706465.html(一) 问题解析001. 问: IP地址,子网掩码,默认网关,DNS服务器,有什么区别呀? 我知道没有IP地址就不能上网,我也知道没设DNS就不能上外网,可它们都有什么功能,有什么区别呢?还有真奇怪,我的计算机没设DNS,竟然能上QQ,却不能打开网页,这是为什么呢?答: 【1...转载 2019-02-26 14:08:14 · 888 阅读 · 0 评论 -
进程间的五种通信方式介绍
https://blog.youkuaiyun.com/wh_sjc/article/details/70283843转载 2019-01-02 15:45:11 · 438 阅读 · 0 评论 -
TCP/IP通信的socket模型图
原创 2018-09-13 14:14:05 · 1949 阅读 · 0 评论 -
进程间的虚拟内存和物理内存映射关系图
注意:字符串常量也是存储在静态存储区原创 2018-09-10 15:41:01 · 1282 阅读 · 0 评论 -
TCP/IP四层模型
原创 2018-09-12 09:25:57 · 230 阅读 · 0 评论 -
vim快捷键
转载 2019-04-02 13:33:29 · 156 阅读 · 0 评论 -
linux下在不同用户下设置环境变量的区别
例如交叉编译工具,环境变量的设置1、在普通用户下设置环境变量在aston用户下,ls -a 会显示所有的文件(包括隐藏文件)其中会发现 .bashrc文件,如果我们在这个文件下添加交叉编译环境,那我们使用的时候必须是当前用户才能使用,即使是root用户也会提示:错误2、在root用户下设置环境变量同上,我们进入到/root目录下,里面也会有个.bashrc...原创 2019-09-05 21:58:53 · 1051 阅读 · 0 评论 -
路由策略基本信息
一、路由表 (使用 ip route 命令操作静态路由表) 所谓路由表,指的是路由器或者其他互联网网络设备上存储的表,该表中存有到达特定网络终端的路径,在某些情况下,还有一些与这些路径相关的度量。路由器的主要工作就是为经过路由器的每个数据包寻找一条最佳的传输路径,并将该数据有效地传送到目的站点。由此可见,选择最佳路径的策略即路由算法是路由器的关键所在。为了完成这项工作,在路由器中保存着各...转载 2019-04-24 13:30:04 · 472 阅读 · 0 评论 -
Linux策略路由
挺好的https://my.oschina.net/guol/blog/156607转载 2019-04-24 10:54:44 · 148 阅读 · 0 评论 -
Makefile.am文件的实例讲解
Makefile.am是一种比Makefile更高层次的编译规则,可以和configure.in文件一起通过调用automake命令,生成Makefile.in文件,再调用./configure的时候,就将Makefile.in文件自动生成Makefile文件了。所以Makefile.am文件是比Makefile文件更高的抽象。下面我根据自己的工作中的一些应用,来讨论Makefile.am的编...转载 2019-04-03 20:14:33 · 282 阅读 · 0 评论 -
C语言malloc()函数与calloc()函数的区别
函数malloc()和calloc()都可以用来动态分配内存空间,但两者稍有区别。 void * malloc(int n); malloc() 函数有一个参数,是需要分配空间的大小(单位是字节) void *calloc(int n,int size); calloc()函数有两个参数,第一个参数是元素的...转载 2018-09-06 09:43:14 · 246 阅读 · 0 评论 -
死锁
线程死锁是指由于两个或者多个线程互相持有对方所需要的资源,导致这些线程处于等待状态,无法前往执行。常见两种情形:1. 线程试图对同一个互斥量A加锁两次。 pthread_mutex_lock(&mutex);//第1次加锁 printf("hello "); sleep(1); /*模拟长时间操作共享资源,导致cpu易主,产生与时间有关的错误*/ ...原创 2018-09-03 17:07:55 · 211 阅读 · 0 评论 -
互斥锁(mutex)
Linux中提供一把互斥锁mutex(也称之为互斥量)。每个线程在对资源操作前都尝试先加锁,成功加锁才能操作,操作结束解锁。但通过“锁”就将资源的访问变成互斥操作,而后与时间有关的错误也不会再产生了。但,应注意:同一时刻,只能有一个线程持有该锁。当A线程对某个全局变量加锁访问,B在访问前尝试加锁,拿不到锁,B阻塞。C线程不去加锁,而直接访问该全局变量,依然能够访问,但会出...原创 2018-09-03 15:19:31 · 105509 阅读 · 6 评论 -
读写锁详细操作
与互斥量类似,但读写锁允许更高的并行性。其特性为:写独占,读共享,写锁优先级高1、读写锁状态:一把读写锁具备三种状态:1. 读模式下加锁状态 (读锁)2. 写模式下加锁状态 (写锁)3. 不加锁状态2、读写锁特性: 读写锁是“写模式加锁”时, 解锁前,所有对该锁加锁的线程都会被阻塞。 读写锁是“读模式加锁”时, 如果线程以读模式对其加锁会成功;如果线程以写模式加锁会...原创 2018-09-04 09:44:11 · 942 阅读 · 0 评论 -
pthread_join和pthread_detach详解
在任何一个时间点上,线程是可结合的(joinable)或者是分离的(detached)。一个可结合的线程能够被其他线程收回其资源和杀死。在被其他线程回收之前,它的存储器资源(例如栈)是不释放的。相反,一个分离的线程是不能被其他线程回收或杀死的,它的存储器资源在它终止时由系统自动释放二: pthread_detach创建一个线程默认的状态是joinable, 如果一个线程结束运行但...转载 2018-08-27 19:29:39 · 1028 阅读 · 0 评论 -
Makefile中的参数
1、-g -wall-g 编译器编译时加入debug信息-Wall就是打开所有的警告-Wall这个的意思是wringall意思在编译和链接过程中显示所有警告信息2、-I -l -L例:gcc -o hello hello.c -I/home/hello/include -L/home/hello/lib -lworld上面这句表示在编译hello....原创 2018-07-30 10:04:58 · 1022 阅读 · 0 评论 -
Linux下的动态库和静态库
在linux 下进行C/C++开发,一般都是使用的gcc编译器,所以本文的讲解以gcc为主。.o文件,即目标文件。一般通过.c或者.cpp文件编译而来,相当于VC编译出来的obj文件.so文件,shared object 共享库(对象),相当于windows下的dll。.a文件,archive 归档包,即静态库。其实质是多个.o文件打包的结果,相当于VC下的.lib文件.la文件,lib...转载 2018-08-09 14:42:49 · 174 阅读 · 0 评论 -
linux线程库中相关函数的使用
头文件:#include<pthread.h>1、创建线程int pthread_create(pthread_t *thread, const pthread_attr_t *attr,void* (*start_routine)(void *), void *arg))功能:创建一个线程。参数:参数1:是一个传出参数,用于保存成功创建线程之后对应的线程id。参...原创 2018-08-27 19:09:04 · 121 阅读 · 0 评论 -
条件变量详细解说
1、条件变量概述: 条件变量是用来等待线程而不是上锁的,条件变量通常和互斥锁一起使用。条件变量之所以要和互斥锁一起使用,主要是因为互斥锁的一个明显的特点就是它只有两种状态:锁定和非锁定,而条件变量可以通过允许线程阻塞和等待另一个线程发送信号来弥补互斥锁的不足,所以互斥锁和条件变量通常一起使用 当条件满足的时候,线程通常解锁并等待该条件发生变化,一旦另一个线程修改了环...原创 2018-09-04 11:26:14 · 37447 阅读 · 25 评论 -
信号量详细解说
1、信号量概述进化版的互斥锁(1 --> N)由于互斥锁的粒度比较大,如果我们希望在多个线程间对某一对象的部分数据进行共享,使用互斥锁是没有办法实现的,只能将整个数据对象锁住。这样虽然达到了多线程操作共享数据时保证数据正确性的目的,却无形中导致线程的并发性下降。线程从并行执行,变成了串行执行。与直接使用单进程无异。信号量,是相对折中的一种处理方式,既能保证同步,数据不混乱,又能...原创 2018-09-04 17:29:01 · 13659 阅读 · 1 评论 -
线程同步概念
同步即协同步调,按预定的先后次序运行。数据混乱原因:1. 资源共享(独享资源则不会)2. 调度随机(意味着数据访问会出现竞争)3. 线程间缺乏必要的同步机制。以上3点中,前两点不能改变,欲提高效率,传递数据,资源必须共享。只要共享资源,就一定会出现竞争。只要存在竞争关系,数据就很容易出现混乱。所以只能从第三点着手解决。使多个线程在访问共享资源的时候,出现互斥。举例1: ...原创 2018-09-03 14:51:54 · 931 阅读 · 0 评论 -
进程内存分布图
进程内存分布图:转载:https://blog.youkuaiyun.com/yff1030/article/details/7762018原创 2018-09-03 11:10:55 · 1206 阅读 · 0 评论 -
线程分析
1、线程概念<1>、什么是线程LWP:light weight process 轻量级的进程,本质仍是进程(在Linux环境下)进程:独立地址空间,拥有PCB线程:也有PCB,但没有独立的地址空间(共享)区别:在于是否共享地址空间。 独居(进程);合租(线程)。 Linux下: 线程:最小的...原创 2018-09-05 14:34:38 · 447 阅读 · 0 评论 -
NOR flash和NAND flash的区别
转载:https://blog.youkuaiyun.com/fxltsbl007/article/details/79395078最近学习flash时,说W25Q64是NOR flash。这个NOR flash和NAND flash的概念一直搞不清,下面是查询的相关资料。 1、结构方面: NORflash采用内存的随机读取技术。各单元之间是并联的,对存储单元进行统一编址,所以...转载 2018-09-11 16:30:59 · 5735 阅读 · 0 评论 -
Linux下常见命令解析
1、top命令PID — 进程id USER — 进程所有者 PR — 进程优先级 NI — nice值。负值表示高优先级,正值表示低优先级 VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES RES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA SHR — 共享内存大小,单位kb S — 进程状态。D=不可中断的睡眠状...原创 2018-09-05 11:03:44 · 632 阅读 · 0 评论 -
嵌入式Linux系统架构
原创 2018-09-11 15:09:09 · 930 阅读 · 0 评论 -
Linux下经典五位哲学家吃面模型分析
一、问题介绍 哲学家进餐问题是典型的同步问题。该问题是描述有五个哲学家共用一张圆桌,分别坐在周围的五张椅子上,在圆桌上有一碗面和五只筷子,他们的生活方式是交替地进行思考和进餐。平时,一个哲学家进行思考,饥饿时便试图取用其左右最靠近他的筷子,只有在他拿到两只筷子时才能进餐。进餐完毕,放下筷子继续思考。如下图所示:2、解决办法多线程版思路:选用互斥锁mutex,如创...原创 2018-09-05 10:08:00 · 2119 阅读 · 0 评论 -
Linux内核list.h整体分析1
对链表常用的操作 对链表常用的操作无非就是增加、删除、遍历等。当然内核还提供很多其他的操作,如替换某个结点、将某个结点移动到链表尾端等等,这些操作都是通过调用基本的增加、删除等操作完成的。① 增加:list_add和list_add_tail 调用list_add 可以将一个新链表结点插入到一个已知结点的后面;(头插) 调用list_add_tail 可以将...转载 2018-08-30 15:44:04 · 412 阅读 · 0 评论 -
linux下多线程 之 pthread_detach(pthread_self())
pthread有两种状态joinable状态和unjoinable状态1、如果线程是joinable状态,当线程函数自己返回退出时或pthread_exit时都不会释放线程所占用堆栈和线程描述符(总计8K多)。只有当你调用了pthread_join之后这些资源才会被释放。2、若是unjoinable状态的线程,这些资源在线程函数退出时或pthread_exit时自动会被释放。注:un...转载 2018-08-27 19:05:17 · 1147 阅读 · 0 评论
分享