嵌入式Linux应用程序学习
宗师之路
新手请多多关照
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
底层文件I/O操作---open()函数
1 所需头文件:#include<sys/types.h>#include<sys/stat.h>#include<fcntl.h>2 函数原型int open(const char *pathname,int flags,int perms);3 参数说明 pathname——被打开的文件名(可包括路径名)flag——文件打开方式 (1) (2) (3)4 返回值 成功:返回文件描原创 2016-03-24 11:37:33 · 1149 阅读 · 0 评论 -
多线程实验之”生产者——消费者“问题
一 实例 参考书籍《从实践中学linux应用程序开发》/*producer-customer.c*/#include #include #include #include #include #include #include #include #include #include #include #define MYFIFO "myfifo" /*缓冲区有名管道原创 2018-01-17 19:24:30 · 1584 阅读 · 1 评论 -
linux编程——套接字编程
一 TCP协议socket编程流程图二 编程实例/*server.c*//*server.c*///tcp网络协议编程#include #include #include #include #define PORT 4321#define MAX_QUE_CONN_NM 5#define BUFFER_SIZE 1024int main(){ int原创 2018-01-18 15:32:34 · 475 阅读 · 0 评论 -
linux网络高级编程之非阻塞
在实际应用中,常常遇到多个客户端连接服务器的情况。如果资源没有准备好,则调用该函数的进程将进入睡眠状态,这样就不能处理其他请求了。有三种解决I/O多路复用的方式,分别为非阻塞和异步处理,以及多路复用处理。实例采用fcntl()函数将套接字设置为非阻塞I/O/*nonblock_server.c*//*nonblock_server.c*//*server.c*///使用fcntl()将套接字设原创 2018-01-18 16:15:16 · 661 阅读 · 0 评论 -
linux网络编程之异步通信机制
内核通过使用异步I/O,在某一进程需要处理的事件发生(例如,接收到新的连接请求)时,向该进程发送一个SIGIO信号。这样,应用进程不需要不停地等待着某些事件的发生,而可以往下运行,以完成其他的工作。只有收到从内核发来的SIGIO信号时,才去处理它(例如,读取数据)。 异步I/O:使用fcntl()函数实现高效率的异步I/O,首先必须试用fcntl的F_SETOWN命令,使套接字归属于当前进程,以原创 2018-01-18 17:13:19 · 2484 阅读 · 0 评论 -
linux信号通信---信号集函数组
信号处理的方法主要有两种,一种是使用signal()函数,另一种是使用信号集函数组。实例#include #include #include /*自定义的信号处理函数*/void my_func(int sign_no){ if(sign_no == SIGINT) { printf("\ni have get SIGINT\n");原创 2018-01-18 21:47:00 · 583 阅读 · 0 评论 -
Linux编程之守护进程
1 守护进程的概述2 编写守护进程 (1)fork()创建子进程,exit()使父进程退出 (2)setsid()创建新会话 (3)chdir(“/”)设置工作目录 (4)umask(0)重设文件权限掩码 (5)close()关闭文件描述符3 实例 按照以上步骤创建守护进程,然后让该进程每隔10s向日志文件/tmp/dameon.log写入一句话 //守原创 2018-01-19 09:39:08 · 523 阅读 · 0 评论 -
Linux编程之僵尸进程
1 僵尸进程概述 2 僵尸进程产生的条件 3 如何避免僵尸进程 僵尸进程产生的原因是系统保留了终止进程的状态信息以便于让父进程获得,而父进程在子进程结束之后没有及时回收资源,因此想要避免僵尸进程只需要让父进程及时”收尸“即可。wait()和waitpid()函数,不仅可以获得子进程的返回状态,更重要的是可以回收子进程的资源,也能有效的避免僵尸进程。 一个可行的办法是使用异步的方法原创 2018-01-19 10:51:09 · 334 阅读 · 0 评论 -
线程之间的同步与互斥
一 互斥锁 互斥锁机制主要包括以下基本函数 互斥锁初始化 pthread_mutex_init() 互斥锁上锁 pthread_mutex_lock() 互斥锁判断上锁 pthread_mutex_trylock() 互斥锁解锁 pthread_mutex_unlock() 删除互斥锁 pthread_mutex_destory()二 实例 在原创 2018-01-17 14:28:39 · 502 阅读 · 0 评论 -
linux多线程编程
一 线程 线程就是“轻量级”的进程,线程与创建它的进程共享代码段和数据段,线程拥有自己独立的栈。 ------此处建议参考《计算机操作系统》(第三版)汤小丹原创 2018-01-17 10:04:07 · 428 阅读 · 2 评论 -
Linux编程之线程基本编程
#include<stdio.h>#include<stdlib.h>#include<pthread.h>#define THREAD_NUMBER 3/*线程数*/ #define REPEAT_NUMBER 5 /*每个线程中的小任务数*/#define DELAY_TIME_LEVELS 10.0 /*小任务之间的最大时间间隔*/void *thrd_func(void *arg)原创 2016-04-25 16:27:23 · 447 阅读 · 0 评论 -
Linux编程之互斥锁线程控制
/*互斥锁线程控制*/#include<stdio.h>#include<stdlib.h>#include<pthread.h>#define THREAD_NUMBER 3/*线程数*/ #define REPEAT_NUMBER 5 /*每个线程中的小任务数*/#define DELAY_TIME_LEVELS 10.0 /*小任务之间的最大时间间隔*/pthread_mutex_原创 2016-04-25 16:30:08 · 615 阅读 · 0 评论 -
Linux进程间通信---使用共享内存
原文地址: http://blog.youkuaiyun.com/ljianhui/article/details/10253345?utm_source=tuicool&utm_medium=referral下面将讲解进程间通信的另一种方式,使用共享内存。一、什么是共享内存 顾名思义,共享内存就是允许两个不相关的进程访问同一个逻辑内存。共享内存是在两个正在运行的进程之间共享和传递数据的一种非常有效的方式。转载 2016-04-23 16:03:02 · 1782 阅读 · 0 评论 -
线程与进程的区别
原文:http://www.ruanyifeng.com/blog/2013/04/processes_and_threads.html进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握。 最近,我读到一篇材料,发现有一个很好的类比,可以把它们解释地清晰易懂1 计算机的核心是CPU,它承担了所有的计算任务。它就像一座工厂,时刻在运行。2 假定工厂的电力有转载 2016-04-24 11:15:24 · 392 阅读 · 0 评论 -
信号量互斥编程
一 公示栏问题1 公示栏问题程序化 两个同学交叉的使用公示栏发布公告,导致两者的信息发布的都不对 astudent: class match cancel bstudent: english examastudent://a student 写入数据后进行休息,然后再进行写入数据#include#include#includevoid main(){原创 2018-01-15 20:07:35 · 487 阅读 · 0 评论 -
共享内存
一 共享内存概念 共享内存是IPC机制中的一种,它允许两个不相关的进程访问同一段内存,这是传递数据的一种非常有效地方式。 共享存储区(Shared Memory)机制是UNIX 系统中通信速度最高的一种通信机制。该机制一方面可使若干进程共享主存中的某个区域,且使该区域出现在多个进程的虚地址空间中。另一方面,在一个进程的虚地址空间中又可连接多个共享存储区,每个共享存储区都有自己的名字原创 2018-01-16 10:40:39 · 893 阅读 · 0 评论 -
消息队列编程
一 消息队列 消息队列就是一些消息的列表,用户可以在消息队列中添加消息和读取消息灯。消息队列具有一定的FIFO特性,但是它可以实现消息的随机查询,比FIFO更具有优势。同时,这些消息又是存在于内核中的,由“队列ID”来标识。二 函数学习三 实例 在该实例当中,发送端发送的消息类型设置为该进程的进程号(也可以取其他值),因此接受端根据消息类型来确定消息发送者的进程号。mess原创 2018-01-16 16:57:32 · 752 阅读 · 0 评论 -
Linux编程之使用多路复用
1 推荐博客 https://www.cnblogs.com/Anker/archive/2013/08/14/3258674.html 我自己select()函数的使用和使用多路复用改写服务端代码理解的还不是特别深入,推荐上面的博客。 2 使用select()函数改写服务端源代码 服务端:/*net_selecy.c*///多路复用#include <stdio.h> #in原创 2018-01-19 16:59:49 · 622 阅读 · 0 评论
分享