Linux学习:预处理相关
概述 预处理阶段的本质 对源码做文本级别的变换,把编译器不认识的预处理指令(#开头的东西)全部处理掉,输出一个纯粹的、编译器可以直接解析的 C/C++ 代码文件 宏替换是其中最核心的操作,但 #include 展开和条件编译同样重要——实际项目中,#include 展开带来的代码...
概述 预处理阶段的本质 对源码做文本级别的变换,把编译器不认识的预处理指令(#开头的东西)全部处理掉,输出一个纯粹的、编译器可以直接解析的 C/C++ 代码文件 宏替换是其中最核心的操作,但 #include 展开和条件编译同样重要——实际项目中,#include 展开带来的代码...
信号 信号是进程在运行过程中,由自身产生或由进程外部发过来的消息(事件)。 信号是硬件中断的软件模拟(软中断)。 每个信号用一个整型常量宏表示,以SIG开头,比如SIGCHLD、SIGINT等,它们在系统头文件中定义,也可以通过在shell下键入* kill –l查看信号列表,或...
三组I/O复用对比 概述 上述select,poll和epoll都能同时监听多个文件描述符。它们将等待由timeout参数指定的超时时间,直到一个或多个文件描述符上有事件发生时,返回值是就绪的文件描述符的数量。返回0表示没有事件发生。 这3个函数都通过某种结构体变量来告诉内核监听...
archive 功能说明:新闻组文件备存程序。 语 法:archive [-fmr][-a<备存目录>][-i<索引文件>][源文件] 补充说明:archive会读取新闻组的文件,然后加以备存。archive备存时,会保存[源文件]中文件的目录阶层。 参...
信号 概述 /usr/include/ 信号是进程间通信(IPC)的一种简单机制 信号提供了一种向进程传递通知和信息的方式,以便进程可以相应地做出反应 信号类型 SIGINT:当用户按下CTRL-C时,通常发送这个信号来中断进程 SIGTERM:用于正常终止进程,是kill命令的...
线程的互斥 在Posix Thread中定义了一套专门用于线程互斥的mutex函数。mutex是一种简单的加锁的方法来控制对共享资源的存取,这个互斥锁只有两种状态(上锁和解锁),可以把互斥锁看作某种意义上的全局变量。为什么需要加锁,就是因为多个线程共用进程的资源,要访问的是公共区...
TCP特点 面向连接 字节流 可靠传输 关于TCP 使用TCP通信的双方必须先建立连接,然后才能开始数据的读写。 双方都必须为该连接分配必要的内核资源,以管理连接的状态和连接上数据的传输。 TCP连接是全双工的,双方的数据读写可以通过一个连接进行。完成数据交换之后,通信双方都必须...
概述 编译阶段 编译阶段是整个编译流水线中最复杂、最核心的阶段——它是编译器的"大脑" 定义 编译阶段把预处理后的 C/C++ 源码(纯文本)翻译成汇编语言(或 LLVM IR) 这个阶段要完成"理解高级语言的含义,并用低级语言表达出来"这...
文件描述符 内核为每个进程维护一个已打开文件的记录表,文件描述符是一个较小的正整数(0—1023),它代表记录表的一项,通过文件描述符和一组基于文件描述符的文件操作函数,就可以实现对文件的读、写、创建、删除等操作。 常用基于文件描述符的函数有open(打开)、creat(创建)、...
概述 信号是由用户 、系统或者进程发送给目标进程的信息,以通知目标进程某个状态的改变或系统异常。 Linux信号产生条件: 对于前台进程,用户可以通过输入特殊的终端字符来给它发送信号。 比如Ctrl+C通常会给进程发送一个中断信号。 系统异常。 比如浮点数异常和非法内存段访问。 ...
搜索当前分类