Linux系统编程
文章平均质量分 59
Linux系统编程
祝你幸福365
好好学习,天天向上
展开
-
Linux系统编程-Linux ldd命令相关
[root@localhost lesson_01]# lsmain main.c main.o Makefile tool.c tool.h tool.o[root@localhost lesson_01]# ./mainmax=8[root@localhost lesson_01]# ldd main linux-vdso.so.1 => (0x00007ffef6ddb000) libc.so.6 => /lib64/libc.so.6 (0x00007efce.原创 2022-02-20 19:29:11 · 220 阅读 · 0 评论 -
Linux系统编程-计算机体系结构基础
一、概述现代计算机都是基于Von Neumann (冯.诺依曼) 体系结构,不管是嵌入式系统,PC还是服务器。这种体系结构的主要特点是:CPU (CPU,Central Processing Unit,中央处理器,或者简称处理器Processor) 和内存 (Memory) 是计算机的两个主要组成部分,内存中保存着数据和指令,CPU从内存中获取指令(Fetch)执行,其中有些指令让CPU做运算,有些指令让CPU读写内存中的数据。二、内存与地址我们都见过像这样挂在墙上的很多个邮箱,每个邮箱有一个房原创 2021-08-14 16:28:02 · 180 阅读 · 0 评论 -
Linux系统编程-Make和Makefile
Makefile 把一系列的系统命令放在一起来执行,可以看做是一个脚本文件。1. 1个规则目标:依赖条件 (一个tab缩进)命令2. 2个函数3. 3个自动变量原创 2021-08-02 12:05:04 · 150 阅读 · 0 评论 -
Linux系统编程-压缩和解压缩
压缩:tar -zcvf要生成的压缩包名 压缩材料tar zcvftest.tar.gza.c dir stdio.h使用gzip方式压缩,生成 test.tar.gzzfz:hello zhangfengzhou$ lsa.txt datazfz:hello zhangfengzhou$ tar zcvf test.tar.gz a.txt dataa a.txta dataa data/data.txtzfz:hello zhangfengzhou$ lsa....原创 2021-07-22 10:59:07 · 321 阅读 · 0 评论 -
Linux系统编程-软件安装和卸载
1. 安装卸载软件sudo apt-get install xx xx 是软件名称2.更新软件资源列表到本地sudo apt-get update更新完之后 再安装sudo apt-get install xx例子:sudo apt-get install tree3. 设置源设置 -> Software& Updates -> Ubuntu Software -> Download from -> aliyun -> ...原创 2021-07-22 10:28:14 · 115 阅读 · 0 评论 -
Linux系统编程-GDB调试
原创 2021-07-22 00:19:19 · 760 阅读 · 0 评论 -
Linux系统编程-静态库和动态库
静态库:以静态文件的形式在编译的时候和将要运行的程序编译在一块,如果有多个程序需要使用静态库,那么就会在多个程序中就都会多出一个静态库的大小。动态库:与静态库不同,动态库是在多个程序运行时共享,即多个程序会共享这个库,而不是每个程序都包含这个库,只会共享。既然动态库比静态库有这么明显的优势,为什么还会存在静态库?答案就是在调用函数的速度,静态库比动态库的速度快。静态库在什么方面使用呢?静态库:对空间要求低,对时间要求高的核心程序。动态库:对事件要求低,对空间要求高的程序。静态原创 2021-08-02 00:52:04 · 559 阅读 · 0 评论 -
Linux系统编程-GCC编译和常用参数 -I -l -L的区别
gcc -I ./inc hello.c -o hello-I 指定头文件的所在目录位置-I ./inc 表示头文件在inc目录中如果不加上 -I 参数,则会报错找不到头文件gcc hello.c -o hello -I /home/itcast/inc注意:如果头文件和源文件在同一目录下,则不需要指定 -I参数-c: 只做 预处理,编译,汇编 得到二进制文件-g: 编译时添加调试语句。主要支持 gdb 调试gcc hello.c -o hello -g 表示可以编译..原创 2021-07-19 12:34:44 · 297 阅读 · 0 评论 -
Linux系统编程-Vim常见操作
一: VIM是什么vim 是一款能够在Linux操作系统上进行文本编辑的一个工具,用于命令窗口上对文本,配置文件,代码等进行写入,编辑的操作。二:VIM的安装1. 在CentOS 执行该命令yum install vim 进行安装三:VIM的基本操作VIM 有两种模式,一种是命令模式,一种是编辑模式,命令模式是只能查看,不能对内容进行修改。进入编辑模式需要键入 i 即可,退出编辑模式,进入命令模式键入 ESC 即可。1. vim hello.txt 打开 vim ...原创 2021-05-10 17:55:36 · 824 阅读 · 0 评论 -
Linux系统编程-进程创建与管理
一:PCB进程控制块原创 2021-04-20 10:19:35 · 359 阅读 · 0 评论 -
Linux系统编程-读写IO
一:系统调用3~4G系统的空间,这部分是由操作系统来管理的,如果我们需要操作这块的空间,只能通过系统提供的函数才能进行访问,系统提供了大概200多个系统函数,我们把系统函数的调用称之为系统调用。二:系统函数我们在C代码中经常使用printf() 函数,但是最终的输出是显示在屏幕上的,那么怎么就能够在屏幕上进行打印输出结果呢?其实,printf() 函数最终是通过调用系统函数 write(), 然后调用显示驱动程序,最终显示在界面上的。write() 函数就是系统函数,我们可以通过 man 2 w原创 2021-04-19 22:40:24 · 594 阅读 · 0 评论 -
Linux系统编程-虚拟内存管理
一:虚拟内存虚拟内存是一种应对操作系统物理内存不够用的情形所产生的一种技术,它可以在物理内存上申请一块空间,作为一段内存区域进行使用。比如,物理内存仅剩余128M,但是我们还要运行一个程序要消耗156M的内存,物理内存不够用应用程序申请的。所以,可以将这个程序放到虚拟内存上(尽管在物理内存上),然后再通过MMU(内存管理单元 memory manage unit )映射到物理内存上,每次跑完一部分程序后,将内存空间换出,然后将需要的程序跑到物理内存上。二:虚拟内存的空间...原创 2021-04-20 10:20:54 · 163 阅读 · 0 评论 -
Linux系统编程-进程间通信-共享内存
//shm_w.c#include<stdio.h>#include<stdlib.h>#include<sys/shm.h>#include<sys/types.h>#include<unistd.h>#include<string.h>#include<sys/ipc.h>#define SEGSIZE 4096 // 定义共享内存容量typedef struct { char name[8].原创 2021-03-27 22:36:51 · 151 阅读 · 0 评论 -
Linux系统编程-进程间通信-信号量
#include<stdio.h>#include<stdlib.h>#include<sys/sem.h>// 自用共用体union semu{ /* data */ int val; struct semid_ds* buf; unsigned short* array; struct seminfo* _buf;};static int sem_id;//设置信号量值static int set_semvalue(){.原创 2021-03-27 22:35:44 · 87 阅读 · 0 评论 -
Linux系统编程-进程间通信-消息队列
//msgsend.c#include<stdio.h>#include<stdlib.h>#include<string.h>#include<sys/msg.h>#define MSG_TEXT 512// 消息结构体struct my_msg_st{ /* data */ long int my_msg_type;// 消息类型 char anytext[MSG_TEXT]; // 消息数据};int main(in.原创 2021-03-27 22:36:35 · 81 阅读 · 0 评论 -
Linux系统编程-进程间通信-命名管道mkfifo
// fifo_w.c#include<stdio.h>#include<unistd.h>#include<errno.h>#include<stdlib.h>#include<sys/types.h>#include<string.h>#include<sys/stat.h>#include<fcntl.h>/*命名管道不同于匿名管道,命名管道是可以在没有血缘关系的进程之间进行通信的.原创 2021-03-27 22:36:06 · 221 阅读 · 2 评论 -
Linux系统编程-进程间通信-管道、信号、共享映射区
Linux 内核编程-IPC进程间通信进程间通信模式管道 信号 信号量 共享映射区 (共享内存) 套接字 文件 消息队列进程间通信的本质是需要借助内核的a 进程把数据从用户空间拷贝到内核空间b 进程把数据从内核空间拷贝到用户空间一般的进程间通信需要拷贝两次内存,除了 mmap, binder驱动需要拷贝一次管道 使用简单无名管道 半双工通信 (只有向一个方向流)管道可以简单理解为一种特殊的文件形式,可以用文件的读写方法,不是一种简单的文件,只会占用内存 管道.原创 2021-03-27 22:35:22 · 113 阅读 · 0 评论 -
Linux系统编程-线程pthread
#include<stdlib.h>#include<stdio.h>#include<pthread.h>#include<unistd.h>#include<string.h>void* thread_run(void* argc){ printf("I am a work thread!\n"); printf("work--pid=%d, tid=%lu\n", getpid(), pthread_sel...原创 2021-03-16 18:52:01 · 725 阅读 · 0 评论