
Linux
Raven_csdn
分享,记录
展开
-
Linux系统编程
一、进程的概念1、程序和进程 程序:二进制文件,占用磁盘空间 进程:启动程序 所有的数据都在内存中 需要占用更多的系统资源2、并发和并行 并发是在某个时间段内并发,比如在7点到8点回家、吃饭在这个时间段内,回家和吃饭并发 并行是某个时刻的并行,比如在7点10分,我吃饭的时候看着新闻,同时进行的二、进程控制fork函数,在进程执行到fork()函数的时候,会产...原创 2019-03-29 21:54:52 · 1566 阅读 · 0 评论 -
Socket编程---p2p模型
自己既能发送数据也能接收数据,既是服务端也是客户端服务端代码:#include<unistd.h>#include<sys/stat.h>#include<sys/wait.h>#include<sys/types.h>#include<fcntl.h>#include<stdlib.h>#include&...原创 2019-04-22 22:53:02 · 444 阅读 · 0 评论 -
Socket编程---c/s模型demo2
demo2的客户端和demo1的客户端相同只需要写重写服务端的程序.服务端代码如下:#include<unistd.h>#include<sys/stat.h>#include<sys/wait.h>#include<sys/types.h>#include<fcntl.h>#include<stdlib.h>...原创 2019-04-22 22:15:29 · 229 阅读 · 0 评论 -
Socket编程---c/s模式演示demo1
首先,看服务端代码:#include<unistd.h>#include<sys/stat.h>#include<sys/wait.h>#include<sys/types.h>#include<fcntl.h>#include<stdlib.h>#include<stdio.h>#include&...原创 2019-04-22 21:52:21 · 469 阅读 · 0 评论 -
Socket编程---API
Socket可以看成是用户进程与内核网络协议栈的编程接口Socket不仅可以用于本机的进程间通信,还可以用于网络上不同主机间的通信。IPv4套接口地址结构IPv4套接口地址结构通常也称为“网际套接字地址结构”,它以“sockaddr_in”命名,定义在头文件中<netinet/in.h>struct sockaddr_in{ uint8_t sin_len;//整个sock...原创 2019-04-22 20:45:19 · 453 阅读 · 0 评论 -
Linux线程同步
先来看一个程序:raven@raven-pc:~/clinux/thread$ vim number.c #include<stdlib.h>#include<stdio.h>#include<unistd.h>#include<string.h>#include<sys/stat.h>#include<sys/ty...原创 2019-04-10 00:00:44 · 302 阅读 · 0 评论 -
Linux多线程
有了进程,为什么要引入线程?进程有很多优点,它提供了多道编程,让我们感觉我们每个人都拥有自己的CPU和其他资源,可以提高计算机的利用率。很多人就不理解了,既然进程这么优秀,为什么还要线程呢?其实,仔细观察就会发现进程还是有很多缺陷的,主要体现在两点上:1、进程只能在一个时间干一件事,如果想同时干两件事或多件事,进程就无能为力了。2、进程在执行的过程中如果阻塞,例如等待输入,整个进程就会挂起,...原创 2019-04-09 23:11:12 · 887 阅读 · 0 评论 -
Linux守护进程、进程组、会话
1、守护进程的特点1)、后台服务进程2)、独立于控制终端3)、周期性执行某任务4)、不受用户登录注销影响(关机肯定影响)5)、一般采用以d结尾的名字(服务)2、进程组1)、进程的组长组里边的第一个进程进程组的id==进程组的组长的id2)、进程组组长选用规则进程中的第一个进程3)、进程组的id的设定进程组的id就是组长的进程id3、会话1)、创建一个会话注...原创 2019-04-09 17:49:32 · 403 阅读 · 0 评论 -
多线程顺序打印ABC、实现读写锁
1、多线程顺序打印ABC#include<stdio.h>#include<sys/types.h>#include<semaphore.h>#include<pthread.h> sem_t sem_id1, sem_id2, sem_id3; void* func1(void*); //声明void* func2(void...原创 2019-04-11 16:35:29 · 435 阅读 · 0 评论 -
Linux进程之间的通信--信号
1、特点1)、简单2)、携带的信息量少3)、使用在某个的特定的场景中2、信号的状态1)、产生键盘:ctrl+c命令:kill系统函数:kill软条件:定时器硬件:段错误,除0错误等2)、未决状态—没有被处理3)、递达忽略捕获执行了默认动作3、处理方式4、信号四要素名称、编号、动作、注释5、概念存在pcb中,所以在内核中,用户不能直接操作阻塞信号集:...原创 2019-04-06 16:20:30 · 286 阅读 · 2 评论 -
Linux进程之间的通信--内存映射区mmap
mmap创建内存映射区域作用:将磁盘文件的数据映射到内存,用户通过修改内存就能修改磁盘文件函数原型: #include <sys/mman.h>void *mmap( void *addr,//映射区首地址,传NULL size_t length, //映射区的大小 int prot, //映射区权限 int flags, //标志位参数...原创 2019-04-06 00:09:39 · 501 阅读 · 0 评论 -
Linux进程之间的通信--管道
进程之间的通信什么是IPC?进程间通信,InterProcess Communication进程间通信常用的4中方式管道----------简单信号----------系统开销小共享映射区----(有无学院关系的进程间通信都可以)本地套接字-----稳定什么是管道?本质: 内核缓冲区 伪文件-不占用磁盘空间特点: 两部分: 读端、写端,对应两个文件描述符 数据写...原创 2019-04-04 21:09:05 · 404 阅读 · 0 评论 -
Linux文件IO
Linux文件io首先要知道文件描述表,通过这张表就可以找到对应的文件。从0开始编码到1023一共1024个。每个进程的前三个默认打开,也就是0,1,2分别指向标准输入、标准输出、标准错误三个文件,可以不用open直接使用。pcb本质是结构体一个进程有一个文件描述表:1024前三个被占用文件描述符的作用,通过他们找到对应的磁盘位置。打开文件int open(const char *...原创 2019-04-03 18:34:49 · 337 阅读 · 0 评论 -
Socket编程---长短连接
长连接和短连接是由客户端决定的短连接是客户端每做一个通信就连接一次如果是频繁的业务模型,长连接比较好写一个短连接的的例子:#include<unistd.h>#include<sys/stat.h>#include<sys/wait.h>#include<sys/types.h>#include<fcntl.h>#in...原创 2019-04-22 23:06:13 · 611 阅读 · 0 评论