![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux
文章平均质量分 56
啊啊阿瑞
在武汉读书的长沙妹坨
展开
-
TCP介绍及TCP网络编程
一、TCP头部结构: ①16位端口号及16位目的端口号:告知主机该报文段来自哪里(源端口)要传给那个上层协议或应用程序(目的端口)。 ②32位序号:一次TCP通信过程中某一个传输方向上的字节流的每个字节的编号。A发送给B的第一个报文段中,序号值被系统初始化为某个随机值ISN,后续在该方向上的TCP报文段的序号值被设置为ISN加上该报文段所携带数据的第一个字节在整个字节流中的偏移。 ③32位原创 2017-11-12 00:05:50 · 3924 阅读 · 0 评论 -
进程间通信——消息队列
消息队列是一种临时存储消息的队列, 完成进程间数据传递, 优先级队列。与信号量对比: 都以内核对象来确保多进程访问同一个消息队列, 信号量进行进程同步控制, 消息队列发送实际数据。与管道对比: 管道发送的数据没有类型, 读取数据端无差别从管道中按照数据的前后顺序读取数据;消息队列数据有类型,读端可以根据数据类型读取特定数据。管道是一个文件;消息队列是一个数据结构(类似于链表)。管道文件是存放在磁盘上原创 2017-11-02 21:50:25 · 316 阅读 · 0 评论 -
Linux下fork函数的使用
fork函数每调用一次,函数返回两次,新进程(子进程)中返回0,原进程(父进程)中返回子进程的pid。Q:为什么不是子进程中返回父进程pid,父进程中返回0呢?那是因为一个父进程有很多子进程,如果不返回其特定子进程的pid,之后需要调用其子进程时就找不到这个子进程了;而一个子进程只有一个父进程,如果要看其父进程的pid只需要通过调用getppid()函数即可。举一个简单的例子 代码如下图原创 2017-09-01 00:38:22 · 645 阅读 · 0 评论 -
Linux环境下模拟shell终端:mybash、mysu、myclear
通常shell中执行命令的流程都是bash进程创建了一个子进程,然后子进程进程替换,替换为可执行的命令文件。 1、mybash函数:输出信息的格式是:[用户名@主机名所在文件]$(root用户:[用户名@主机名所在文件]#)。当所在文件就是当前用户的家目录时显示“~”。 那么,该如何得到用户名,主机名和当前所在文件名呢? 我们需要借助下面这些函数: uid_t geteuid(void)函数原创 2017-10-20 17:51:31 · 1198 阅读 · 0 评论 -
进程间通信——管道(有名管道、无名管道)
进程间通信:多个进程之间数据相互交换。 进程间通信的方式:信号、管道(无名管道、有名管道)、信号量、消息队列、共享内存、套接字。 进程的创建:pid_t fork(void);管道的原理: 有名管道:应用于两个进程之间数据的单向传递。 创建:命令方式:mkfifo 函数方式:mkfifo() 打开:open 写数据:write 读数据:read原创 2017-10-21 03:42:04 · 408 阅读 · 0 评论 -
进程间通信之——信号量
信号量相当于记录资源能同时被多少个进程访问。 信号量的作用:进程间同步控制。 信号量有一个初值,每当有进程申请使用信号量,就会通过一个P操作对信号量进行-1操作,当计数器减到0的时候就说明没有资源了,其他进程要想访问就必须等待,当该进程执行完这段工作之后,就会执行V操作,即对信号量进行+1操作。头文件:#include <sys/types.h> #include <sys/ipc.h> #原创 2017-10-24 15:46:55 · 268 阅读 · 0 评论 -
进程间通信——共享内存
共享内存是最快的IPC,在各个进程都有指针直接指向开辟内存区域。 访问时当做本进程中的一个内存控制直接操作。 管道是文件,操作慢;消息队列创建操作都有消耗所以慢;共享内存两个进程都可以直接对这块内存进行读写。1、创建共享存储区 每个进程都用自己的地址空间映射到不同的物理地址,哪怕虚拟地址是样,也是各自独立、互相不可见的。只有声明了这个共享存储区之后,才可以往这个公共的区域映射。 函数原型:in原创 2017-10-26 15:27:43 · 258 阅读 · 0 评论 -
I/O复用实现方式:select、poll、epoll
I/O多路复用是指:内核监视多个描述符,一旦某个描述符读就绪或者写就绪,就通知程序进行相应的读写操作。多进程、 多线程、 进程池、 线程池每一个执行序列在同一时刻只能处理一个 socket(监听、 链接)。 以线程池为例: 如果创建 N 个线程,同一时刻只能处理 N 个客户连接,而I/O 复用在一个进程或者一个线程中,能同时监听多个 socket。 当有 socket 上有事件发生时, 程序 才原创 2017-11-20 21:42:37 · 258 阅读 · 0 评论