
linux API
千年的塔
Go语言和MySQL技术专家,著有《Go语言核心编程》一书。
展开
-
Linux 中的read系统调用到底是阻塞还是非阻塞的
Linux 中的read系统调用到底是阻塞还是非阻塞的2011-03-30 10:32read函数只是一个通用的读文件设备的接口。是否阻塞需要由设备的属性和设定所决定。一般来说,读字符终端、网络的socket描述字,管道文件等,这 些文件的缺省read都是阻塞的方式。如果是读磁盘上的文件,一般不会是阻塞方式的。但使用锁和fcntl设置取消文件O_NOBLOCK状态,转载 2012-05-27 00:52:48 · 5055 阅读 · 0 评论 -
setuid seteuid setreuid 三个函数讲解
int setuid(uid_t uid)1) 若进程具有超级用户权限,则setuid将实际用户ID、有效用户ID及保存的设置用户ID设置为uid2) 若进程没有超级用户权限,但是uid等于实际用户ID或保存的设置用户ID,则setuid只将有效用户ID设置为uid int seteuid(uid_t uid)1) 若进程具有超级用户权限原创 2013-03-13 20:03:58 · 13085 阅读 · 1 评论 -
uid euid suid 相关函数
real uid, saved uid, effecitve uid//*************************************int setreuid(uid_t ruid, uid_t euid)int setregid(gid_t rgid, gid_t egid)int setuid(uid_t uid)int setgid(gid_t gid)转载 2013-03-13 19:56:48 · 1010 阅读 · 0 评论 -
文件描述符的FD_CLOEXEC标志
close_on_exec 是一个进程所有文件描述符(文件句柄)的位图标志,每个比特位代表一个打开的文件描述符,用于确定在调用系统调用execve()时需要关闭的文件句柄(参见include/fcntl.h)。当一个程序使用fork()函数创建了一个子进程时,通常会在该子进程中调用execve()函数加载执行另一个新程序。此时子进程将完全被新程序替换掉,并在子进程中开始执行新程序。若一个文件描述符转载 2013-03-12 22:24:08 · 2831 阅读 · 0 评论 -
文件描述符标志和文件状态标志区别
文件描述符标志,是体现进程的文件描述符的状态,fork进程时,文件描述符被复制;目前只有一种文件描述符:FD_CLOEXEC文件状态标志, 是体现进程打开文件的一些标志,fork时不会复制file 结构,而是两个进程文件描述符指向同一个file(当FD的exec标志为0时)1.文件描述符标志: struct task_struct--->struct files_struc原创 2013-03-12 22:15:04 · 10225 阅读 · 1 评论 -
文件描述符,文件指针,文件路径三者转换
定义FILE *fp; //文件指针、句柄int fd; //文件描述符char pathname[1024]; //文件路径1、pathname --> fp,fdfp = fopen(pathname,"r");fd = open(pathname,O_RDONLY);2、fd --> fp,pathnamefp =转载 2013-02-21 14:07:32 · 1309 阅读 · 0 评论 -
linux 文件描述符和库函数FILE文件指针关系
文件描述符:在linux系统中,设备也是以文件的形式存在,要对该设备进行操作就必须先打开这个文件,打开文件就会获得文件描述符,它是个很小的正整数。每个进程在PCB(Process Control Block)中保存着一份文件描述符表,文件描述符就是这个表的索引,每个表项都有一个指向已打开文件的指针。文件描述符的优点:兼容POSIX标准,许多Linux和UNIX系统调用都依赖于它。文件描述符的缺点:原创 2013-02-21 10:50:10 · 3729 阅读 · 0 评论 -
Linux environ 环境变量指针
POSIX.1也规定应使用environ而不使用第三个参数。通常用getenv和putenv函数(7.9节将说明)来存取特定的环境变量,而不是用environ变量。但是,如果要查看整个环境,则必须使用environ指针。unistd.h:extern char **__environ;unistd.h:extern char **environ;#include ex原创 2013-03-04 16:50:57 · 5388 阅读 · 2 评论 -
dup,dup2函数的用法
linux下dup|dup2函数的用法系统调用dup和dup2能够复制文件描述符。dup返回新的文件文件描述符(没有用的文件描述符最小的编号)。dup2可以让用户指定返回的文件描述符的值,如果需要,则首先接近newfd的值,他通常用来重新打开或者重定向一个文件描述符。他的原型如下:#include int dup(int oldfd);int dup2(int oldfd,in转载 2013-02-20 17:26:59 · 4019 阅读 · 1 评论 -
结构化程序设计理念
一.程序结构1.顺序2.分支3.循环4.以上三种结构任意组合二.程序数据结构1.基本数据结构2.复杂数据结构:数组,链表,树三.程序算法各种算法四.程序组织形式1.函数封装2.递归调用五.库1.标准库2.OS API3.第三方库六.设计哲学思想1.高内聚,低耦合2.纵向分层3.横原创 2013-01-22 14:06:10 · 838 阅读 · 0 评论 -
linux网络编程常用头文件
sys/types.h:数据类型定义sys/socket.h:提供socket函数及数据结构netinet/in.h:定义数据结构sockaddr_inarpa/inet.h:提供IP地址转换函数netdb.h:提供设置及获取域名的函数sys/ioctl.h:提供对I/O控制的函数sys/poll.h:提供socket等待测试机制的函数其他在网络程序中常见的头文件转载 2012-11-05 14:57:02 · 622 阅读 · 0 评论 -
linux 时间格式化函数strftime和strptime使用
linux 时间格式化函数strftime和strptime使用这两个函数都是时间日期的格式控制函数,在功能上看起来正好相反。strftime将一个struct tm结构格式化为一个字符串,strptime则是将一个字符串格式化为一个struct tm结构。l strftime函数原型:size_t strftime(char *s,size_t maxsize,char原创 2012-10-19 15:52:49 · 35584 阅读 · 0 评论 -
#include time.h和 #include sys/time.h的区别
#include time.h和 #include sys/time.h的区别交叉编译情况下,两个文件的地址/opt/gcc-4.1.2-glibc-2.4/arm-xscale-linux-gnu/arm-xscale-linux-gnu/include/time.h/opt/gcc-4.1.2-glibc-2.4/arm-xscale-linux-gnu/arm-x转载 2012-10-18 19:07:56 · 2299 阅读 · 0 评论 -
sockaddr与sockaddr_in 意义
sockaddr与sockaddr_in 意义struct sockaddr {unsigned short int sa_family; /* address family, AF_xxx */char sa_data[14]; /* address */};sa_family是地址家族,是“AF_xxx”的形式。常设为“AF_INET”,代表Internet原创 2013-03-20 15:58:03 · 1094 阅读 · 0 评论