03 2022 档案

摘要:共享内存: 特点: 1、共享内存是一种最为高效的进程间通信方式,进程可以直接读写内存,而不需要任何数据的拷贝 2、为了在多个进程间交换信息,内核专门留出了一块内存区,可以由需要访问的进程将其映射到自己的私有地址空间 3、进程就可以直接读写这一内存区而不需要进行数据的拷贝,从而大大提高的效率。 4、由 阅读全文 »
posted @ 2022-03-31 20:01 西北小蚂蚁 阅读(919) 评论(0) 推荐(0) 编辑
摘要:有名管道(命名管道) 注意:管道文件存在的意义:为了让任意的进程之间完成通信(非血缘关系)管道文件存储在磁盘上,但是大小永远为0意味着数据不会被存储在管道文件中,而是每一次的读写都是往内核中的管道进行读写。 有名管道特点: 1、 有名管道可以适用于任意两个进程之间的通信 2、 有名管道可以实现双工通 阅读全文 »
posted @ 2022-03-31 19:34 西北小蚂蚁 阅读(160) 评论(0) 推荐(0) 编辑
摘要:案例:#include <stdio.h> fork();创建的子进程继承该函数之前的所有父进程代码,以及缓冲区; exit():结束本进程返回一个int型值,WEXITSTATUS(status)用来接收返回值(只针对wait()); wait();和waitpid();的不同 wait():是个 阅读全文 »
posted @ 2022-03-30 19:56 西北小蚂蚁 阅读(140) 评论(0) 推荐(1) 编辑
摘要:给线程一个顺序(及线程的同步) 信号量(线程同步) 头文件 #include <semaphore.h> 信号量的初始化: int sem_init(sem_t *sem, int pshared, unsigned int value); return: 0成功 -1失败 sem_t *sem: 阅读全文 »
posted @ 2022-03-30 15:36 西北小蚂蚁 阅读(26) 评论(0) 推荐(0) 编辑
摘要:互斥锁 互斥锁的作用:// 在某一时刻,只允许一个线程访问临界资源例如:在线程1里面会对全局变量进行修改,在线程2里面也会对与线程1相同的全局变量进行修改,为了相互不影响,我们希望在线程1操作这个变量的时候线程2不能操作这个变量,或者在线程2操作这个变量的时候线程1不能操作这个变量,也就是在同一时间 阅读全文 »
posted @ 2022-03-30 15:21 西北小蚂蚁 阅读(26) 评论(0) 推荐(0) 编辑
摘要:Linux多线程程序: 用到的函数: int pthread_create(pthread_t *tid, const pthread_attr_t *attr, void *(*func) (void *), void *arg); pthread_create用于创建一个线程,成功返回0,否则返 阅读全文 »
posted @ 2022-03-30 14:43 西北小蚂蚁 阅读(47) 评论(0) 推荐(0) 编辑
摘要:针对fopen、fread。。。 fseek(fr,10,SEEK_SET);//指针偏移到文件开始后10字节的地方 fseek(fr,-10,SEEK_END);//指针偏移到末尾前10字节的地方 针对open、read。。。 lseek(fr,10,SEEK_SET);//指针偏移到文件开始后1 阅读全文 »
posted @ 2022-03-28 10:52 西北小蚂蚁 阅读(35) 评论(0) 推荐(0) 编辑
摘要:chgrp 用户名 文件名 -R chown 用户名 文件名 -R 阅读全文 »
posted @ 2022-03-27 14:31 西北小蚂蚁 阅读(52) 评论(0) 推荐(0) 编辑
摘要:一行代码: sudo apt-get install virtualbox-guest-dkms 搞完重启就好了; 阅读全文 »
posted @ 2022-03-22 14:59 西北小蚂蚁 阅读(271) 评论(0) 推荐(0) 编辑
摘要:Makefile模板 一、主Makefile OTHER:=queue SRC_MAIN:=main.c SRC_OTHER:=$(OTHER).c OBJ_MAIN:=main.o OBJ_OTHER:=$(OTHER).o CFLAGS:=-c -g -Wall CC:=gcc #通过expor 阅读全文 »
posted @ 2022-03-21 15:23 西北小蚂蚁 阅读(75) 评论(0) 推荐(0) 编辑
摘要:双向链表的创建、插入、删除、销毁: main.c #include "../include/link.h" int menu(void) { int op = 0; printf("1 insert_link\n"); printf("2 del_link\n"); printf("3 show_l 阅读全文 »
posted @ 2022-03-19 15:07 西北小蚂蚁 阅读(34) 评论(0) 推荐(0) 编辑
摘要:malloc: 在子函数里面用malloc申请的一片空间,在子函数调用结束时不会被释放。 free: free释放的是空间的使用权,并不给空间清空,(原来这片空间是你申请的其他人不能再申请,现在他是自由的可以供别人申请)但是大家还都可以通过这片空间的地址访问到这片空间里面的内容。 总结: 1、fre 阅读全文 »
posted @ 2022-03-17 09:29 西北小蚂蚁 阅读(113) 评论(0) 推荐(0) 编辑
摘要:Makefile 一、Makefile规范 目标文件1:依赖文件1 依赖文件1.1...... (tab键)依赖文件1如何生成目标文件 目标文件2:依赖文件2 (tab键)依赖文件2如何生成目标文件 注意: 1、两个文件之间没有任何关系,系统默认只执行目标文件1 2、一个Makefile可以有多个目 阅读全文 »
posted @ 2022-03-14 11:40 西北小蚂蚁 阅读(208) 评论(0) 推荐(0) 编辑
摘要:一、二维数组指针: #include <stdio.h> #include <string.h> #include <stdlib.h> #include <strings.h> int main(void) { int a[2][3] = {1,2,3,4,5,6}; printf("%d\n", 阅读全文 »
posted @ 2022-03-03 15:34 西北小蚂蚁 阅读(26) 评论(0) 推荐(0) 编辑
摘要:运算符优先级: 优先级:单算移关与,异或逻条赋 单目运算符、算数运算符、左移右移、关系运算符、按位与、异或、按位或、逻辑运算 符、条件运算符、赋值 阅读全文 »
posted @ 2022-03-03 14:38 西北小蚂蚁 阅读(116) 评论(0) 推荐(0) 编辑
摘要:小知识: printf("%d %d %d",a+1,a+2,a = 3);//右结合,先算a = 3,然后再算a + 2;最后算 a + 1; 所以结果为:4 5 3 阅读全文 »
posted @ 2022-03-03 11:40 西北小蚂蚁 阅读(26) 评论(0) 推荐(0) 编辑
摘要:一、当指针指向一个数组的时候: *p <==> p[0]; *(p+1) <==> p[1]; #include <stdio.h> int main(void) { int *p; int a[2] = {1,2}; p = a; printf("%d %d\n",*p,p[0]); return 阅读全文 »
posted @ 2022-03-03 11:26 西北小蚂蚁 阅读(17) 评论(0) 推荐(0) 编辑
摘要:一、(子函数和主函数之间调用关系) 子函数可以通过操作地址而直接操作主函数的内容; 子函数和主函数中变量(实参和形参)不是通用的,是两片空间没有啥太大的关系,有一个关系就是实参的值要传给形参。但是子函数通过地址操作的某些东西和主函数通过地址操作的某些东西是一样的(只要地址一样),都是操作的同一片空间 阅读全文 »
posted @ 2022-03-02 15:32 西北小蚂蚁 阅读(38) 评论(0) 推荐(0) 编辑
摘要:一、概念 指针: 指针:(指针就是地址,就是内存单元的编号(本质)) 地址: 地址:内存分配的最小单位是字节,每个最小单位都有个编号,这个编号就是地址。 个人理解:指针就是地址的意思是,指针储存的是地址; *: *p的意思是取出p储存的地址 里面的内容,若p = &a等价于操作a,只不过一个是直接操 阅读全文 »
posted @ 2022-03-02 13:23 西北小蚂蚁 阅读(37) 评论(0) 推荐(0) 编辑
摘要:冒泡排序的格式: #include <stdio.h> #define N 4 int main(void) { int a[N]= {1,3,4,2},i,j,x; for(i = 0;i < N-1;i++) { for(j = 0;j < N-i-1;j++) { if(a[j] > a[j+ 阅读全文 »
posted @ 2022-03-02 11:25 西北小蚂蚁 阅读(31) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示