APUE
文章平均质量分 97
Apollon_krj
岁月悠悠,衰微只及皮肤;热忱抛却,颓唐必至灵魂。
展开
-
进程创建与fork()的恩怨情仇
一、述说进程:1、进程(process)是个什么?狭义定义:进程是正在运行的程序的实例(an instance of a computer program that is being executed),或者更加简称之为“运行中的程序”(但并非一个程序这么简单)。 广义定义:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元(CPU调度单位)。2、概念解原创 2016-11-30 16:27:06 · 1116 阅读 · 1 评论 -
Linux环境C语言编译与头文件等知识点小结
一、C语言的有关文件类型:虽然,在Linux下“一切皆文件”,并且文件类型这个概念不是那么重要,一个“.c”文件可以用gcc编译,一个“.abcdef”文件照样可以用gcc编译。但是有类型的文件毕竟比无类型的文件更加具有直观性,所以我们还是得说说这个文件类型。 C语言的有关文件类型如下所示:.c/*源代码文件*/.h/*C语言头文件*/.i/*经过预处理之后的源代码文件*/.s/*汇编代码文原创 2016-12-04 17:34:26 · 5813 阅读 · 1 评论 -
Linux静态链接库与动态链接库
一、静态库与动态库基本概念:Windows中静态连接库为.lib文件,动态链接库为.dll文件,这两种文件在平时生活中使用Windows我们就见过很多回,而今天我们来说说Linux的动态链接库(又称为共享链接库)(.so文件)与静态链接库(.a文件)。有关于环境变量与编译的基本内容,可参照: Linux环境变量与系统编程学习笔记 Linux环境C语言编译与头文件等知识点小结 1、静态库与共享原创 2016-12-18 19:27:02 · 579 阅读 · 0 评论 -
内存管理与分页机制
一、问题提出:我们经常会使用malloc()以及free()函数进行堆区内存申请与释放。那么你是否会这样做:int * p = malloc(0);/*malloc分配了0个字节吗,如果是那么p指向谁呢,是NULL吗*/free(p);/*假如malloc分配了0个字节,p指向了NULL,那么free(NULL)不会出现段错误吗*/我想很少有人这样做,因为除了喜欢“打破砂锅问到底”,或者经常使用测原创 2016-12-25 12:25:44 · 13509 阅读 · 11 评论 -
系统调用与内存管理(sbrk、brk、mmap、munmap)
一、系统调用(System Call):在Linux中,4G内存可分为两部分——内核空间1G(3~4G)与用户空间3G(0~3G),我们通常写的C代码都是在对用户空间即0~3G的内存进行操作。而且,用户空间的代码不能直接访问内核空间,因此内核空间提供了一系列的函数,实现用户空间进入内核空间的接口,这一系列的函数称为系统调用(System Call)。比如我们经常使用的open、close、read、原创 2017-01-16 18:50:49 · 21077 阅读 · 4 评论 -
Linux环境变量与系统编程学习笔记
1、基本概念:环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数。 系统环境变量有多种多样,比如:PATH:指定可执行程序的搜索路径(命令也属于程序)LD_LIBRARY_PATH:指定动态库的搜索路径举个简单的例子: 我们查看PATH这个变量,可以发现该目录下有许多路径(每个路径用冒号(:)分隔),其中包括shell命令目录。若果我们原创 2016-12-18 12:06:36 · 1422 阅读 · 0 评论 -
进程创建与相关函数等知识点总结
1、进程基本概念:进程:一个在内存中运行的程序,我们叫进程。(1)、进程常见状态: S:休眠状态Sleep(省资源) s:表该进程有子进程 O:可运行状态 R:正在运行状态 Z:僵尸进程(僵尸状态),已经结束但资源没有完全回收(2)、Linux中查看进程: ①ps:查看本终端启动的进程(一个shell一个ps): ②ps -aux:Linux专用查看进程(ps -原创 2017-02-06 15:46:06 · 666 阅读 · 0 评论 -
Linux&C编程之Linux系统命令“ls -l”的简单实现
一、基础知识:1、获取文件详细信息的函数:(1)、获取文件信息的函数:#include<sys/stat.h>int stat(const char * path,struct stat * buf);/*将path参数(文件或目录)的文件信息写到buf中,buf为传出参数*/(2)、文件信息结构体:/*用不到的成员被注释掉,只需了解需要的成员即可*/struct stat{ //dev原创 2017-01-24 21:15:57 · 9046 阅读 · 10 评论 -
Linux进程间通信(一):管道与mmap文件-内存映射
一、无名管道、有名管道与进程间通信:1、IPC–进程间通信与管道基本概念:(1)、IPC(进程间通信):所谓IPC就是两个或者多个进程之间的数据交互(在不能直接进行信息交互的两个进程间增加一个“交互媒介”以达到信息交互的目的)。为什么不能直接交互?因为我们知道在应用程序执行时(即进程运行时),其占有的用户空间只有0~3G,而用户空间不共享,不共享就无法传递信息;内核空间共享,所以要实现两个进程之间的原创 2017-02-17 01:09:03 · 2751 阅读 · 0 评论 -
Linux下用C语言实现简单的密码登录
通常,我们在切换计算机用户时,会需要输入密码。在Linux下,密码不可见;在Windows下,密码显示的则是··········的一串小黑点,或者登陆某一网站账号时密码为********的一串星号,其目的都是来隐藏密码。而这种密码的显示方式怎样是怎样实现的呢,今天,我就用C语言在Linux下简单实现一下。一、输入密码不回显:1、首先,我们需要了解几个函数以及结构体:(1)、结构体struct ter原创 2016-10-16 21:03:50 · 4434 阅读 · 0 评论 -
Linux&C语言文件学习笔记(四):文件I/O与系统API续
一、sync()和fsync()函数:1、sync作用简述:由于不同设备文件读写速度的差异(或者速度不匹配),而为解决过大速度差异带来的一系列问题,我们在不同速度的设备之间加入缓冲区(buffer),缓冲区的加入,使得这一种或者这一类问题得到了有效的解决。在UNIX/Linux内核中有这样一个系统调用:sync()(sync是同步之意,即缓冲区内容与磁盘数据同步),其作用就是将缓冲区中的内容刷新冲洗原创 2017-01-22 22:13:23 · 697 阅读 · 2 评论 -
Linux信号产生与处理机制学习笔记(二)
接着Linux信号产生与处理机制学习笔记(一) 来说。一、sigaction()信号注册函数于struct sigaction结构体:1、sigaction()函数:int sigaction(int signum, const struct sigaction * act, struct sigaction * oldact);/*参数:int signum:信号编号const struct原创 2017-02-20 23:26:38 · 596 阅读 · 0 评论 -
Linux&C语言文件学习笔记(三):文件I/O与系统API
一、文件描述符、文件表:1、文件描述符:操作系统中喜欢用整数来代表一系列内容,比如:内存地址是十进制整数的十六进制形式、errno错误类型标志(0表示SUCCESS,无errno)、进程标识符(pid)(0表示内核交互进程)、线程标识符(tid)、都是非负整数。那么我们所说的文件描述符也是由一系列非负整数表示,其中0、1、2这三个数在每一个进程被创建时就已经被占用(0表示标准输入设备文件、1表示标准原创 2017-01-18 23:51:07 · 1156 阅读 · 0 评论 -
Linux信号产生与处理机制学习笔记(一)
一、信号基本概念:中断:就是终止当前代码转而执行其他代码,中断有软件中断与硬件中断。信号的本质:是一系列非负整数(操作系统就是这么爱用整数)。UNIX常用信号1–48,Linux常用信号1–64。每个信号都有一个宏名称(宏变量),宏变量都是以SIG(signal)开头。信号的产生时间是无规律的,不知道什么时候回来,因此对于信号的处理采取异步处理方式(函数指针信号中断)。信号是不连续的;有些信号是不存原创 2017-02-20 00:26:05 · 818 阅读 · 0 评论 -
TFTP协议分析与实现
闲暇之余做一个模块化的TFTP DEMO程序,记录一下。1、TFTP协议与功能点介绍:TFTP采用UDP协议进行TFTP协议的文件传输,其默认的协议socket为:UDP + port 69;UDP不支持顺序传输,但是TFTP有ACK的回复,因此TFTP协议可以顺序传输,但是可能会发生重传过程中产生的已过时ACK/DATA传输到对端的等问题。TFTP适合在局域网传输文件大小不太大的文件,标...原创 2019-10-02 21:58:33 · 2833 阅读 · 0 评论