自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 资源 (1)
  • 收藏
  • 关注

原创 Linux系统编程--进程管理的系统调用

fork#include<unistd.h>pid_t fork(void);完成对fork调用后将会存在两个进程,每个进程都会从fork()返回处继续执行。创建成功,父进程会返回子进程的pid,子进程返回0。执行fork()时,子进程会获得父进程所有文件描述符的副本。即父子进程对应的描述符指向相同的打开文件句柄。包括:当前文件偏移量、文件状态标志。如果子进程更改了文件偏移量,父进程也会受到影响。copy-on-write传统的fork()调用直接将父进程虚拟内存页拷贝到新的子进程

2020-07-28 23:15:59 313

原创 Linux系统编程--sh模拟器

首先设置参数最多命令参数 MAX_CMD和每个命令的最大长度 MAX_LEN#define MAX_LEN 32#define MAX_CMD 20#define QUIT "quit"使用一个二维数组来保存从终端得到的命令,并且使用两个int数组(start,end)来对每组命令进行划分(按照 “|”)。其中在cmd中使用’\0’来作为命令的结束。首先分配内存,因为函数传参是值语义,所以需要将其地址传入。void initilize(char **buf, char ***cmd, in

2020-07-28 21:46:22 281

原创 Linux系统编程-文件IO缓冲

内核缓冲:缓冲区高速缓存read()和write()系统调用在操作磁盘文件时不会直接发起磁盘访问,而仅仅在用户空间缓冲区和内核缓冲区高速缓存之间复制数据。例如write(fd, "abc", 3);write会立即返回。在后续某个时刻,内核会将其缓冲区中的数据写入磁盘。在此期间,另一进程试图读取该文件的这几个字节,那么内核将会自动从缓冲区高速缓存中提供。stdio库缓冲设置一个stdio流的缓冲模式#include<stdio.h>int setvbuf(FILE* stram,

2020-07-22 16:15:53 215

原创 Linux文件系统树模拟器

Linux文件系统的逻辑结构体是一个普通的树。假设文件系统只有目录DIR和普通文件FILE。DIR可拥有可变数量子节点。同一父亲节点称为兄弟节点。路径以/开头为绝对路径。否则是以当前目录(CWD)的相对路径。可以用二叉树来实现普通的树typedef struct Node{ char name[64]; char type; struct Node *childPtr, *siblingPtr, *parentPtr;}Node;...

2020-07-21 18:31:44 258

原创 C++内存管理笔记

C++ memory primitives分配释放类属可否重载malloc()free()C函数不可newdeleteC++表达式不可::operator new::operator deleteC++函数可allocate<T>::allocate()allocate<T>::deallocate()C++...

2020-05-22 18:43:12 191

原创 C++实现Trie

#include<iostream>#include<string>#include<vector>#define MAX_NUM 26using namespace std;class TrieNode{public: bool isWord; char c; int count; //TrieNode *next[...

2020-03-18 22:25:07 90

原创 Linux系统编程--管道和FIFO

每个shell用户都对再命令中使用管道比较熟悉,如统计一个目录中文件的数目: $ ls | wc -l 为执行上述命令,shell创建了两个进程来分别执行ls和wc。管道是单向的,允许数据从一个进程流向另一个进程。一个管道是一个字节流管道是一个字节流意味着在使用管道时不存在消息或消息边界。从管道中读取数据的进程可以读取任意大小的数据块,而不管写入进程写入管道的数据块大小。...

2020-03-18 22:05:19 157

原创 Redis源码学习--双向链表adlist

双向链表定义链表结点链表结点中保存两个指针,分别指向前后,还有一个void *指针指向保存的数据typedef struct listNode { struct listNode *prev; struct listNode *next; void *value;} listNode;链表链表,包含两个链表节点指针,一个指向head,一个指向tail其中du...

2020-03-16 20:02:38 125

原创 Linux系统编程--POSIX消息队列实现文件服务器

#include<mqueue.h>#include<stdio.h>#include<fcntl.h>#include<stdlib.h>#include<sys/mman.h>#include<string.h>#include<unistd.h>#include<sys/stat.h&gt...

2020-03-15 12:48:19 199

原创 Linux系统编程--POSIX消息队列

打开一个消息队列#include<fcntl.h>#include<sys/stat.h>#include<mqueue.h>mqd_t mq_open(const char*name ,int oflag,.../*mode_t mode,struct mq_attr *attr);POSIX IPC对象需要使用以斜线开头后面跟着一个或多个非斜线字...

2020-03-12 22:53:09 160

原创 Linux系统编程--内存映射 mmap

概述      mmap()系统调用在调用进程的虚拟地址空间中创建一个新内存映射。映射分为两种。-文件映射:文件映射将一个文件的一部分直接映射到调用进程的虚拟内存中。一旦一个文件被映射之后就可以通过在相应的内存区域中操作字节来访问文件内容了。映射的分页会在需要的时候从文件中(自动)加载。-匿名映射:一个匿名映射没有对应的文件。相反,这种映射的分页会被...

2020-03-12 19:47:17 212

ISO9506-2-2002MMS-协议定义.pdf

ISO9506-2-2002MMS-协议定义.pdf

2021-07-19

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除