Unix环境高级编程
oneMelon
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
进程间的文件共享
UNIX操作系统中,不同的进程之间可以共享打开文件。用一张图片可以说明内核用于I/O的数据结构:图中展示了三种表:进程表项中的文件描述符表,文件表项和v节点结构。1. 文件描述符表:每个进程在进程表中都有一个记录项,记录项中包含一张打开的文件描述符表。将其看作一个矢量,每个描述符占用一项。其含有一个指向文件表项的指针。2. 文件表项:对每一个打开的文件,都有一张文件表,其含有文件状态标志(只读只写等等,与文件描述符标志不同,文件描述符标志仅作用于进程的一个描述符,而文件状态标志应用于指向该.原创 2020-11-17 10:39:14 · 751 阅读 · 0 评论 -
ISO C, POSIX, XSI三大标准提供的限制值及设备间的可移植性
为了提高不同设备之间程序的可移植性,ISO C,POSIX,XSI三个标准对一些值作出了限制,如int最大值的下限(在ISO C中,即实现的int的最大值必须大于这个值),每个进程能够打开的文件数的下限(在POSIX中),路径名中字节数(在XSI中)。这些编译时限制的常量都列在头文件<limits.h>当中;而还有一些限制值需要在运行时确定,使用函数 sysconf, pathconf, fpathconf 确定。使用这些限制的常量而非系统实际支持的量或幻数可以提高程序的可移植性。举例来说,守护原创 2020-11-10 12:22:29 · 441 阅读 · 0 评论 -
系统调用与库函数的联系与差异
虽然从用户的角度来看,系统调用与库函数的行为没有什么不同;但从实现者的角度来看,系统调用与库函数是完全不同的两回事。这里介绍一点两者之间的差异。系统调用,可以理解为直接进入内核的入口点。UNIX为每一个系统调用都在标准C库中设置了一个具有相同名字的函数,这些函数用系统要求的技术调用相应的内核服务。从应用的角度来看,系统调用与C函数的行为看起来完全一致。而通用库函数并非内核的入口点,它们可能会调用大于等于0个的系统调用。比如printf会调用write系统调用来输出字符串;而strcpy与atoi不使原创 2020-11-08 11:10:41 · 575 阅读 · 0 评论 -
Unix环境高级编程-“apue.h“的导入与使用
对于 #include"XX.h",编译器会先在当前路径下搜索,因此可以把这个文件放在你要用到这个头文件的所有源码所在的目录下。或者,放在编译器的内定目录下,以供所有位置访问:首先找到编译器的文件搜索(include)路径,echo | gcc -v -x c++ -E -这一指令对clang同样有效。在这两行后可以看到头文件搜索的路径#include "..." search starts here:#include <...> search starts her原创 2020-11-05 22:05:13 · 286 阅读 · 0 评论
分享