date: 2014-10-24 12:09
1 用户空间的编程接口
这部分详情请参考APUE(第2版)第8章。
1.1 六种exec函数
有6种不同的exec函数可供使用,这些函数最终都是通过系统调用execve来实现的:
int execl(const char *pathname, const char *arg1, ... /* (char*)0 */ );
int execlp(const char *filename, const char *arg1, ... /* (char*)0 */ );
int execle(const char *pathname, const char *arg1, ...
/* (char*)0, char * const *envp */);
int execv(const char *pathname, char * const argv[]);
int execvp(const char *filename, char * const argv[]);
int execve(const char *pathname, char * const argv[], char * const envp[]);
它们间的关系如下图:
1.2 进程相关的ID
在《进程四要素》中我们简单看了下task_struct结构,其中有6个与进程相关的ID:
ID
意义
备注
uid/gid
实际用户ID/实际组ID
我实际上是谁
euid/egid
有效用户ID/有效组ID
我还具有哪些额外的“特权”
<