进程 fork exec,wait/waitpid
来源:互联网 发布:软件测试教学视频 编辑:程序博客网 时间:2024/05/29 08:52
1,函数原型为:pid_t fork();调用一次返回两次,返回调用进程的pid号。
pid_t pid;
pid=fork();
如果pid>0,则是子进程的进程号,说明此时调用进程是父进程;如果返回是0,则说明此时调用进程是子进程,若<0,则说明fork()出错。
因为读时共享和写时复制,子进程会复制父进程的代码,但是从fork下开始执行。但是,当在fork前定义父子进程都用到的变量的时候,这时候父子进程并不是同时操作这个变量,而是相互独立的,也就是说:子进程指定自己的n,不会在父进程的n的基础上操作。
pid_t getpid(void);返回调用进程的pid号
pid_t getppid(void);返回调用进程的父进程的pid号
依赖的头文件#include <unistd.h> #include<sys/types.h>
uid_t getuid(void); 返回实际用户ID
uid_t geteuid(void); 返回有效用户ID
gid_t getpid(void);返回实际用户组ID
gid_t getepid(void);返回有效用户组ID
2,exec
加载新的程序来替换当前进程的代码段和数据段。
int execl(constchar *path, const char *arg, ...);
int execlp(constchar *file, const char *arg, ...);
int execle(constchar *path, const char *arg, ..., char * const envp[]);
int execv(constchar *path, char *const argv[]);
int execvp(constchar *file, char *const argv[]);
int execvpe(constchar *file, char *const argv[], char *const envp[]);
l 命令行参数列表
p 搜素file时使用path变量
v 使用命令行参数数组
e 使用环境变量数组,不使用进程原有的环境变量,设置新加载程序运行的环境变量
3,wait/waitpid
僵尸进程: 子进程退出,父进程没有回收子进程资源(PCB),则子进程变成僵尸进程
孤儿进程: 父进程先于子进程结束,则子进程成为孤儿进程,子进程的父进程成为1号,进程init进程,称为init进程领养孤儿进程
依赖的头文件 #include <sys/types.h> #include <sys/wait.h>
pid_t wait(int *status);
pid_t waitpid(pid_t pid, int *status, int options);
如果不需要知道具体出错原因,就传wait(NULL),
pid:
<-1 回收指定进程组内的任意进程
-1 回收任意子进程
0 回收和当前调用waitpid一个组的所有子进程
>0 回收指定ID的子进程
options:
WNOHANG 非阻塞
具体如果不会用,不知道如何传参就用man函数来看一下。
- 进程 fork exec,wait/waitpid
- 进程控制 [fork() exec() wait() waitpid()]
- 进程控制 [fork() exec() wait() waitpid()]
- 进程控制 [fork() exec() wait() waitpid()]
- 进程控制 [fork() exec() wait() waitpid()]
- Linux学习之进程fork()、exec、exit()/_exit()、wait()/waitpid
- 进程控制开发[fork() exec exit _exit wait waitpid 守护进程]
- Linux进程相关,fork,wait,waitpid,WIFEXITED
- linux进程知识 程序存储、crontab、fork与vfork、exec、_exit()、wait()与waitpid()、孤儿和僵尸
- linux进程知识 程序存储、crontab、fork与vfork、exec、_exit()、wait()与waitpid()、孤儿和僵尸
- 进程(2)—— wait()/waitpid()、vfork+exec
- linux进程(fork/vfork)与wait/waitpid
- linux c学习笔记----进程创建(fork,wait,waitpid)
- linux学习-进程创建(fork,wait,waitpid)
- .linux进程知识 程序存储、crontab、fork与vfork、exec、_exit()、wait()与waitpid()、孤儿和僵尸 文件读写 文件锁、select、poll
- wait,waitpid和exec函数
- wait,waitpid和exec函数
- system popen -> exec fork waitpid
- merge conflicts in Git
- Andy's First Dictionary
- Shader 渐变纹理贴图参考代码
- shared_ptr基于引用计数智能指针实现
- 应对我院C++上机考试/作业的一些小技巧
- 进程 fork exec,wait/waitpid
- yum删除与回滚
- Datagridview解决列中间有空值时的排序出错问题
- 并查集详解
- laravel关闭浏览器释放session
- MPI介绍与实践——理论介绍
- XR20M1170IG16TR IIC转RS232调试不通的问题
- 掌贝打印SDK说明
- 快速排序