qq:78080458 学习交流群:150633458
分类: 嵌入式
2014-05-08 15:22:50
进程ID(PID)父进程ID(PPID) 进程用户ID(UID)
#include
#include
#include
pid_t getpid(void) 获取本进程ID
pid_t getppid(void) 获取父进程ID
pid_t fork(void) 创建进程,fork 奇妙之处在于,调用一次,返回两次,有3种不同的返回值
在父进程中返回新建的父进程PID
在子进程中返回0
出现错误返回负值
fork的子进程会复制父进程的数据块,共享代码段,父进程和子进程的运行次序不确定,例子
int main ()
{
pid_t pid;
int count=0;
pid=fork();
count++;
printf(“count=%d\n”,count);
}程序执行的结果是1 1 并非1 2
pid_t vfork () 创建子进程,共享父进程的数据块,子进程先运行,例子
int main ()
{
pid_t pid;
int count=0;
pid=vfork();
count++;
printf(“count=%d\n”,count);
}程序执行的结果是1 2 并非1 1
exec函数族,启动一个新程序,替换原有的进程,进程ID不变,即PID不变
int execl(const char *path,const char *arg1,....)
path是一个程序的完整路径
arg1~argn被执行程序锁需要的命令行参数,包含程序名,以空指针NULL结束
int execlp(const char *path,const char *arg1,....)
path程序名,不包含路径,将从path环境变量中查找该程序
arg1~argn被执行程序锁需要的命令行参数,包含程序名,以空指针NULL结束
int execv(const char *path,char *const argv[])
path是一个程序的完整路径
arg[]被执行程序锁需要的命令行参数数组,包含程序名,以空指针NULL结束
int system(const char *string)
调用fork产生一个子进程,然后由子进程调用“/bin/sh -c string ”来执行参数string所代表的命令
pid_t wait (int *status)阻塞进程,直到某个子进程退出