1. 进程号和父进程号
获取进程号:
#include <unistd.h>
pid_t getpid(void);
// always successfully returns process ID of caller
可以通过 Linux...
阅读全文...
【Linux/UNIX系统编程】文件I/O 2
1. 文件控制操作:fcntl()
#include <fcntl.h>
int fcntl(int fd, int cmd, ...);
// return on success depends on cmd, or -1 on error...
阅读全文...
阅读全文...
【Linux/UNIX系统编程】通用I/O模型
本章重点介绍用于文件输入/输出的系统调用。本章开篇会讨论文件描述符的概念,随后会逐一讲解构成通用 I/O 模型的系统调用,其中包括:打开文件、关闭文件、从文件中读数据和向文件中写数据。
所有执行 I/O 操作的系统调用都以文件描述符,一个非负整数(通常...
阅读全文...
阅读全文...
【Linux/UNIX系统编程】 系统编程概念
1. 系统调用
以x86平台为例,分析系统调用:
应用程序通过调用 C 语言函数库中的外壳(wrapper)函数,来发起系统调用
对系统调用中断处理例程来说,外壳函数必须保证所有的系统调用参数可用。通过堆栈,这些参数传入外壳函数,但内核却希望将这些参数...
阅读全文...
阅读全文...
【C/C++】函数指针
函数指针
基础知识
1. 获取函数地址
只要使用函数名,后面不跟参数即可,也就是说,如果 think() 是一个函数,那么 think 就是该函数的地址。
传递参数时一定要区分传递的是函数地址还是函数返回值
process(think) // 传递thi...
阅读全文...
阅读全文...
【makefile】使用make更新函数库文件
【原文作者:陈皓】 【原文地址】
函数库文件也就是对Object文件(程序编译的中间文件)的打包文件。在Unix下,一般是由命令 ar 来完成打包工作。
10.1 函数库文件的成员
一个函数库文件由多个文件组成。你可以用如下格式指定函数库文件及...
阅读全文...
阅读全文...
【Makefile】隐含规则
【原文作者:陈皓】 【原文地址】
在我们使用Makefile时,有一些我们会经常使用,而且使用频率非常高的东西,比如,我们编译C/C++的源程序为中间目标文件(Unix下是 .o 文件,Windows下是 .obj 文件)。本章讲述的就是一些在...
阅读全文...
阅读全文...
【Makefile】make的运行
【原文作者:陈皓】 【原文地址】
一般来说,最简单的就是直接在命令行下输入make命令,make命令会找当前目录的makefile来执行,一切都是自动的。但也有时你也许只想让make重编译某些文件,而不是整个工程,而又有的时候你有几套编译规则,...
阅读全文...
阅读全文...
【Makefile】函数
【原文作者:陈皓】 【原文地址】
在Makefile中可以使用函数来处理变量,从而让我们的命令或是规则更为的灵活和具有智能。make 所支持的函数也不算很多,不过已经足够我们的操作了。函数调用后,函数的返回值可以当做变量来使用。
7.1 函数的...
阅读全文...
阅读全文...
【Makefile】条件判断
【原文作者:陈皓】 【原文地址】
使用条件判断,可以让make根据运行时的不同情况选择不同的执行分支。条件表达式可以是比较变量的值,或是比较变量和常量的值。
6.1 示例
下面的例子,判断 $(CC) 变量是否 gcc ,如果是的话,则使用GN...
阅读全文...
阅读全文...