- 博客(16)
- 收藏
- 关注
原创 C语言制作web服务器(静态)
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <pthread.h>#include <sys/socket.h>#include <arpa/inet.h>#include <fcntl.h>#include <...
2020-05-06 21:30:00 617
原创 网络常见的十个问题
1.TCP传输层的三次握手过程从图中可以看出,当客户端调用connect时,触发了连接请求,向服务器发送了SYN J包,这时connect进入阻塞状态;服务器监听到连接请求,即收到SYN J包,调用accept函数接收请求向客户端发送SYN K ,ACK J+1,这时accept进入阻塞状态;客户端收到服务器的SYN K ,ACK J+1之后,这时connect返回,并对SYN K进行确认;服...
2020-04-29 10:48:24 2672
原创 网络编程
1.网络模型2.TCP/IP协议概念:TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)是指能够在多个不同网络间实现信息传输的协议簇。TCP/IP协议不仅仅指的是TCP 和IP两个协议,而是指一个由FTP、SMTP、TCP、UDP、IP等协议构成的协议簇, 只是因为在TCP/IP协议中TCP协议和IP协议最具...
2020-04-27 11:01:48 340
原创 线程的资源保护机制
1.互斥锁互斥锁的使用:定义锁:pthread_mutex_t mutex初始化锁:int pthread_mutex_init(&mutex,NULL)加锁:int pthread_mutex_lock(阻塞加锁)int pthread_mutex_trylock(在锁被占用时,返回EBUSY,而不是挂起等待)解锁:int pthread_mutex_unlock(&...
2020-04-17 20:21:14 443
原创 多线程编程
1.概念线程(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。在Unix System V及SunOS中也被称为轻量进程(lightweight processes),但轻量进程更多指内核线程(kernel thread),而把用户线程(user...
2020-04-17 16:13:50 206
原创 进程间通讯之消息队列
1.概念由内核创建的用于存放消息的链表,分为:System V消息队列,Posix消息队列。消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法。 每个数据块都被认为含有一个类型,接收进程可以独立地接收含有不同类型的数据结构。我们可以通过发送消息来避免命名管道的同步和阻塞问题。但是消息队列与命名管道一样,每个数据块都有一个最大长度的限制。2.特点优点:1)我们可以通过发送消息来几...
2020-04-13 17:30:29 166
原创 进程间通信之共享内存与信号量
1.概念:共享内存是System V版本的最后一个进程间通信方式。共享内存,顾名思义就是允许两个不相关的进程访问同一个逻辑内存,共享内存是两个正在运行的进程之间共享和传递数据的一种非常有效的方式。不同进程之间共享的内存通常为同一段物理内存。进程可以将同一段物理内存连接到他们自己的地址空间中,所有的进程都可以访问共享内存中的地址。如果某个进程向共享内存写入数据,所做的改动将立即影响到可以访问同一段...
2020-04-11 16:22:49 1467
原创 进程间通信之 信号(signal)
1.概念:1)信号是在软件层次上对中断机制的一种模拟,是一种异步通信方式2)信号可以直接进行用户空间进程和内核进程之间的交互,内核进程也可以利用它来通知用户空间进程发生了哪些系统事件。3)如果该进程当前并未处于执行态,则该信号就由内核保存起来,直到该进程恢复执行再传递给它;如果一个信号被进程设置为阻塞,则该信号的传递被延迟,直到其阻塞被 取消时才被传递给进程。2.信号的发送1)用户按某些...
2020-03-27 15:49:43 1774
原创 进程间通信之管道通信
概念:管道通信分为有名管道和无名管道。从本质上说,管道也是一种文件,但它又和一般的文件有所不同,管道可以克服使用文件进行通信的俩个问题:1)限制管道的大小。实际上,管道是一个固定大小的缓冲区。在Linux中,该缓冲区的大小为一页,即4K字节,使它的大小不像文件那样不加检验的增长。使用单个固定缓冲区也会带来问题,比如在写管道时可能变满,当这种情况发生时,随后对管道的write()调用将默认的被阻...
2020-03-26 10:58:35 195
原创 进程控制编程
虚拟内存Linux采用虚拟内存管理技术,虚拟地址空间0~4G,用户空间(3G),内核空间(1G),访问内核空间的方式是通过系统调用。Linux内核由系统内所有进程共享。每个进程都有独立的进程地址空间,大小为3G作用:使用虚拟地址很好的保护内核空间防止被用户空间破坏进程的状态转换fork()和vfork()函数fork()函数通过系统调用创建一个与原来几乎完全相同的进程,俩个进程可以做完...
2020-03-25 10:56:28 163
原创 文件操作之函数调用的文件内容拷贝(文件流)
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <errno.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include<unis...
2020-03-21 15:56:42 147
原创 文件操作之函数调用的文件内容拷贝(非文件流)
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <errno.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include<unis...
2020-03-20 17:51:33 141
原创 Linux文件操作之函数的调用
cat 一次性显示文件里的所以内容more 显示文件里一页中所有内容 翻页用空格(space,本致与cat没有区别open:open函数用来打开一个设备,他返回的是一个整型变量,如果这个值等于-1,说明打开文件出现错误,如果为大于0的值,文件打开成功。参考格式 if(fd=open("/dev/ttys0",O_RDWR | O_NOCTTY | O_NDELAY))<0 {prin...
2020-03-05 10:19:04 373
原创 带表头结点的单链表 的插入 删除 排序
#include <stdio.h>#include <stdlib.h>#include <time.h>struct node //结构体定义值域和指针域{ int num; struct node * next;};typedef struct node Node;typedef struct node * Li...
2020-02-27 10:26:00 1078
原创 单链表(不带表头结点)的插入、删除、排序、倒序
#include <stdio.h> //所需的头文件#include <stdlib.h>#include <time.h>struct node //结点包含值域和指针...
2020-01-19 11:26:35 1362
原创 linux常用命令
特殊目录/ 根目录**.**当前目录**…**当前目录的父目录**~**当前用户的家目录- 前一个工作目录文件类型开头是以下字符**-**普通文件d目录c字符设备b 块设备p命名管道s套接字l链接linux常用命令chgrp改变组属用户组chown改变文件拥有者chmod改变权限(可用数字或符号修改)man查阅linux上的手册页**基本用法: man ...
2019-10-31 21:56:51 127
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人