本篇博文参考自csapp。
因为详细内容书上已经讲的很清楚,所以这里我就只记一下各个函数所需要的参数以及返回值。
函数
getpid()
返回调用进程的PID。
头文件: <unistd.h>
函数原型: pid_t getpid(void);
参数: 无
返回值: 调用进程的PID。
getppid()
返回它的父进程的PID。
头文件: <unistd.h>
函数原型: pid_t getppid(void);
参数: 无
返回值: 返回它的父进程的PID。
fork()
返回两个值: 在主进程中返回子进程的id,在子进程中返回0。
头文件: <unistd.h>
函数原型: pid_t fork(void);
参数: 无
返回值: 如果当前进程是主进程,返回fork出的子进程的进程id;如果当前进程是子进程,返回0。
waitpid()
根据不同的参数表现出不同的行为返回不同的值。
头文件: <wait.h>
函数原型: pid_t waitpid(pid_t pid, int *statusp, int options);
参数:
- pid: 如果pid > 0,那么等待集合就是一个单独的子进程,它的进程ID等于pid。如果pid = -1,那么等待集合就是由父进程的所有子进程组成的。
- statusp: 该参数反映了已回收子进程的状态。
- options: 该参数设置了函数的行为。
由于该函数稍微复杂,非三言两语可以讲明白,若欲详细了解相关内容及其参数的作用请移步百度百科: waitpid。
sleep()
sleep函数将一个进程挂起一段时间。
头文件: <unistd.h>
函数原型: unsigned int sleep(unsigned int secs);
参数: 秒速
返回值: 如果请求的时间量已经到了,secs返回0; 否则返回还剩下要休眠的秒数。
变量
errno
头文件: <errno.h>
如果waitpid的调用进程没有子进程,那么waitpid会把errno设置为ECHILD。如果waitpid函数被一个信号中断,那么它会设置errno为EINTR。
未完待续。