进程的系统调用函数接口:
exit函数
函数功能:退出进程,库函数调用
函数使用需要添加的头文件
#include <stdlib.h>
函数的原型
void exit(int status);
函数的参数说明
status:进程退出的状态值
0表示进程正常结束
其他值表示其他结果结束
函数的返回值说明
该函数无返回值
_exit函数
函数功能:退出进程,系统调用函数
函数使用需要添加的头文件
#include <unistd.h>
函数的原型
void _exit(int status);
函数的参数说明
status:进程退出的状态值
0表示进程正常结束
其他值表示其他结果结束
函数的返回值说明
该函数无返回值
exit和_exit函数的区别:
1. 一个是系统调用,一个是库函数调用
2. _exit函数在结束进程的时候不会刷新缓冲区内容
3. exit函数在结束进程的时候将会刷新缓冲区的内容
wait函数
函数功能:进程阻塞等待子进程结束
函数使用需要添加的头文件
#include <sys/types.h>
#include <sys/wait.h>
函数原型
pid_t wait(int *wstatus);
函数参数说明
wstatus:用指针来获取子进程退出的状态值
如果该参数指定为NULL,表示不关心子进程退出
的状态值
函数返回值说明
成功:返回退出进程的进程id
失败:返回-1
waitpid函数
函数功能:处理子进程结束
函数使用需要添加的头文件
#include <sys/types.h>
#include <sys/wait.h>
函数原型
pid_t waitpid(pid_t pid, int *wstatus,
int options);
函数参数说明
1.pid:
>0:等待处理指定进程id的子进程
-1:等待任意子进程退出,效果同wait
<-1:等待组id和pid绝对值相同的任一子进程
==0:等待其组ID等于调用进程的组ID的任一子
进程
2.wstatus:效果同wait函数,接收子进程退出的状
态值
3.options:
0:阻塞等待进程结束,效果同wait函数
WNOHANG:非阻塞处理子进程退出
如果没有子进程退出waitpid函数会立即
返回
如果子进程退出则处理子进程产生的资源
函数返回值说明
成功:
退出的子进程id
当option参数指定为WNOHANG:没有子进程退
出将返回0,有子进程退出则返回退出的子进程的id
失败:
-1
守护进程
在Linux系统启动的时候就会开始运行的进程,当系统关
闭时该进程才会结束,实际工作为周期性的完成某些特
定操作
daemo守护进程:不属于某个终端,也是一个后台进程
守护进程编写流程
1.创建子进程,父进程退出,子进程将变为
后台进程
2.摆脱终端,创建一个新的会话组,并使得
该子进程成为该会话组的组长
setsid函数
函数的功能:创建一个新的会话组,并使得调用该函数的进
程成为该会话组的组长
函数使用需要添加的头文件
#include <sys/types.h>
#include <unistd.h>
函数原型:
pid_t setsid(void);
函数参数说明:
该函数不需要传递参数
函数返回值说明:
成功:返回会话组id
失败:返回-1
3.改变该子进程的工作目录,建议修改为根
目录
chdir函数
函数的功能:创建一个新的会话组,并使得调用该函数的进
程成为该会话组的组长
函数使用需要添加的头文件
#include <sys/types.h>
#include <unistd.h>
函数原型:
pid_t setsid(void);
函数参数说明:
该函数不需要传递参数
函数返回值说明:
成功:返回会话组id
失败:返回-14. 重设文件掩码
umask函数
5. 关闭所有的已打开文件描述符
getdtablesize函数
函数的功能:改变工作目录
函数使用需要添加的头文件
#include <unistd.h>
函数原型:
int chdir(const char*path);
函数参数说明:
path:修改的目录文件的文件路径
函数返回值说明:
成功:0
失败:-1,并且设置错误号
4. 重设文件掩码
umask函数
函数的功能:改变工作目录
函数使用需要添加的头文件
#include <unistd.h>
函数原型:
int chdir(const char*path);
函数参数说明:
path:修改的目录文件的文件路径
函数返回值说明:
成功:0
失败:-1,并且设置错误号
函数的功能:重设文件掩码
函数使用需要添加的头文件
#include <sys/stat.h>
#include <sys/types.h>
函数原型:
mode_t umask(mode_t mode);
函数参数说明:
mode:重设的文件掩码的值
函数返回值说明:
该函数调用通常都是成功的,返回的是重设的文件掩
码值
5. 关闭所有的已打开文件描述符
getdtablesize函数
函数功能:获取打开的文件描述符数量
函数使用需要添加的头文件
#include <unistd.h>
函数原型:
int getdtablesize(void);
函数参数说明:
该函数不需要传递参数
函数返回值说明:
成功:已打开的文件描述符数
失败:-1,并且设置错误号
6. 守护进程相关功能
时间相关函数:
time:获取当前系统时间
localtime:获取显示时间的结构体
函数使用需要添加的头文件
#include <time.h>
函数原型:
struct tm *localtime(const time_t
*timep);
函数参数说明:
timep:系统时间
函数返回值说明:
成功:返回描述时间的结构体指针
失败:返回NULL
时间结构体说明
struct tm
{
int tm_sec; /* Seconds (0-60) */
int tm_min; /* Minutes (0-59) */
int tm_hour; /* Hours (0-23) */
int tm_mday; /* Day of the month
(1-31) */
int tm_mon; /* Month (0-11) */
int tm_year; /* Year - 1900 */
int tm_wday; /* Day of the week
(0-6, Sunday = 0) */
int tm_yday; /* Day in the year
(0-365, 1 Jan = 0) */
int tm_isdst; /* Daylight saving
time */
};