
APUE
hjhomw
今天的苦逼是为了不这样一直苦逼下去,坚持,坚持,坚持!
展开
-
宏:整数常量 O_ACCMODE
Macro: int O_ACCMODE This macro stands for a mask that can be bitwise-ANDed with the file status flag value to produce a value representing the file access mode. The mode will be O_RDONLY, O_WRONL转载 2016-03-30 15:19:37 · 442 阅读 · 0 评论 -
getaddrinfo函数
getaddrinfo 函数允许将将一个主机名和一个服务名映射到一个地址。函数原型:#include <sys/socket.h>#include <netdb.h>int getaddrinfo(const char *restrict host, const char *restrict service, const struct addrinfo *restrict hint, struct原创 2016-04-11 21:27:08 · 513 阅读 · 0 评论 -
FIFO
FIFO有时被称为命名管道。未命名的管道只能在两个相关的进程之间使用,而且这两个相关的进程还要有一个共同的创建了它们的祖先进程。但是,通过FIFO,不相关的进程也能交换数据。FIFO是一种文件类型。通过stat结构的st_mode成员的编码可以知道文件是否是FIFO类型。可以用S_ISFIFO宏对此进行测试。创建FIFO类似于创建文件。FIFO的路径名存在于文件系统中。#include <sys/s原创 2016-04-11 14:50:26 · 3452 阅读 · 0 评论 -
使用文件描述符存取打开文件与直接使用文件名相比有何优点?
首先,文件名是一个字符串,操作速度慢且占空间大,而文件描述符为一整数,其处理效率明显高于字符串。其次,文件被打开后其控制信息(FCB)被缓冲到内存系统空间,文件描述符作为用户打开文件表中的入口地址直接与内存FCB建立起联系,而文件名无法做到这一点。转载 2016-04-14 17:09:31 · 640 阅读 · 0 评论 -
dup和dup2函数
dup和dup2都可用来复制一个现存的文件描述符,使两个文件描述符指向同一个file结构体。如果两个文件描述符指向同一个file结构体,File Status Flag和读写位置只保存一份在file结构体中,并且file结构体的引用计数是2。如果两次open同一文件得到两个文件描述符,则每个描述符对应一个不同的file结构体,可以有不同的File Status Flag和读写位置。请注意区分这两种情原创 2016-04-11 10:45:22 · 325 阅读 · 0 评论 -
init进程
init进程,它是内核启动的第一个用户级进程。init有许多很重要的任务,比如像启动getty(用于用户登录)、实现运行级别、以及处理孤立进程。1. 简介 对于Linux系统的运行来说,init程序是最基本的程序之一。但你仍可以大部分的忽略它。一个好的Linux发行版本通常随带有一个init的配置,这个配置适合于绝大多数系统的工作,在这样一些系统上不需要对init做任何事。通常,只有你在碰到诸如串原创 2016-04-10 21:29:22 · 1363 阅读 · 0 评论 -
UNIX域套接字轮询XSI消息队列
UNIX域套接字用于在同一台计算机上运行的进程之间的通信。这点比用因特网域套接字效率更高。因为UNIX域套接字仅仅复制数据,并不执行协议处理,不要添加或删除网络报头,无需计算校验和, 不要产生顺序号,无需发送确认报文。 UNIX域套接字提供流和数据包两种接口。UNIX域数据报服务是可靠的,既不会丢失报文,也不会传递出错。UNIX域套接字就像是套接字和管道的混合。可以使用它们面向网络的域套接字接口或使原创 2016-04-13 17:08:10 · 598 阅读 · 0 评论 -
父、子进程同步的5个例程的两种实现方式
1. 使用信号实现static volatile sig_atomic_t sigflag; /* set nonzero by sig handler */static sigset_t newmask, oldmask, zeromask;static void sig_usr(int signo) /* one signal handler for SIGUSR1 and SIGUSR2原创 2016-04-09 10:53:15 · 1106 阅读 · 0 评论 -
close_on_exec 标志位
close_on_exec 是一个进程所有文件描述符(文件句柄)的位图标志,每个比特位代表一个打开的文件描述符,用于确定在调用系统调用execve()时需要关闭的文件句柄(参见include/fcntl.h)。当一个程序使用fork()函数创建了一个子进程时,通常会在该子进程中调用execve()函数加载执行另一个新程序。此时子进程将完全被新程序替换掉,并在子进程中开始执行新程序。若一个文件描述符在原创 2016-04-08 14:54:40 · 480 阅读 · 0 评论 -
Linux系统编程之错误处理:perror,strerror和errno
1,在系统编程中错误通常通过函数返回值来表示,并通过特殊变量errno来描述。errno这个全局变量在< errno.h>头文件中声明如下:extern int errno;errno是一个由POSIX和ISO C标准定义的符号,看(用)起来就好像是一个整形变量。当系统调用或库函数发生错误的时候,比如以只读方式打开一个不存在的文件时,它的值将会被改变,根据errno值的不同,我们就可以知道自己的程序转载 2016-04-08 09:21:10 · 1196 阅读 · 0 评论 -
linux 系统调用与标准库调用的区别详细解析
1、系统调用和库函数的关系 系统调用通过软中断int 0x80从用户态进入内核态。 函数库中的某些函数调用了系统调用。 函数库中的函数可以没有调用系统调用,也可以调用多个系统调用。 编程人员可以通过函数库调用系统调用。高级编程也可以直接采用int 0x80进入系统调用,而不必通过函数库作为中介。 如果是在核心编程,也可以通过int 0x80进入系统调用,此时不能使用函数库。因为函数库中的函数是内转载 2016-04-07 10:44:42 · 565 阅读 · 0 评论 -
unix环境多进程编程----用到的32个系统调用详解
一.多进程程序的特点代码: 由于UNIX系统是分时多用户系统, CPU按时间片分配给各个用户使用, 而在实质上应该说CPU按时间片分配给各个进程使用, 每个进程都有自己的运行环境以使得在CPU做进程切换时不会”忘记… 一.多进程程序的特点 代码: 由于UNIX系统是分时多用户系统, CPU按时间片分配给各个用户使用, 而在 实质上应该说CPU按时间片分配给各个进程使用, 每个进程都有转载 2016-04-05 20:22:24 · 1684 阅读 · 0 评论 -
C语言中const,volatile,restrict的用法总结
1. const变量声明中带有关键词const,意味着不能通过赋值,增量或减量来修改该变量的值,这是显而易见的一点。指针使用const则要稍微复杂点,因为不得不把让指针本身成为const和指针指向的值成为const区别开来、下面的声明表示pf指向的值必须是不变的constfloat *pf;而pf则是可变的,它可以指向另外一个const或非const值;相反,下面的声明说明pf是不能改变的,而pf所转载 2016-03-30 17:01:54 · 662 阅读 · 0 评论 -
功能测试宏
UNIX的功能测试宏,在头文件中定义了很多POSIX.1和XPG3的符号。但是除了POSIX.1和XPG3定义外,大多数实现在这些头文件中也加上了他们自己的定义。如果在编译一个程序时,希望它只是用POSIX定义而不使用任何实现定义的限制,那么就需要定义常数_POSIX_SOURCE,所有POSIX.1头文件中都是用此常数。当该常数定义时,就能排除任何实现专有的定义。常数_POSIX_SOURCE及对原创 2016-03-30 16:28:47 · 2599 阅读 · 0 评论 -
I/O重定向
1、基本概念 a、 I/O重定向通常与 FD有关,shell的FD通常为10个,即 0~9; b、 常用FD有3个,为0(stdin,标准输入)、1(stdout,标准输出)、2(stderr,标准错误输出),默认与keyboard、monitor、monitor有关; c、 用 < 来改变读进的数据信道(stdin),使之从指定的档案读进; d、 用 > 来改变送出的数据信道(st转载 2016-03-30 16:14:05 · 320 阅读 · 0 评论 -
select()函数以及FD_ZERO、FD_SET、FD_CLR、FD_ISSET
select函数用于在非阻塞中,当一个套接字或一组套接字有信号时通知你,系统提供select函数来实现多路复用输入/输出模型,原型:int select(int maxfd,fd_set *rdset,fd_set *wrset,fd_set *exset,struct timeval *timeout); 所在的头文件为:#include <sys/time.h> 和#include <un转载 2016-05-01 12:45:42 · 251 阅读 · 0 评论