==============进程========
ps -ef
ps -aux
pstree
---------------------------
fork
#include <unistd.h>
返回值
成功 等于0 表示子进程
大于0 表示父进程,子进程的ID
失败 -1
注意:
子进程产生是父进程的复制品
父子进程谁先执行是不定的
getpid
#include <sys/types.h>
#include <unistd.h>
返回值 成功不返回
失败-1
exec
#include <unistd.h>
返回值 成功 ---》不返回
失败 ---》-1
注意:最后一个必须是NULL
wait
#include <sys/types.h>
#include <sys/wait.h>
pid_t wait(int *status);
pid_t waitpid(pid_t pid, int *status, int options);
status --->获取子进程退出状态
注意
WIFEXITED(status) //检测子进程是不是正常死亡,如果是,表示为真
WEXITSTATUS(status) //获取子进程正常退出的状态值
WIFSIGNALED(status)
WTERMSIG(status) //获取子进程异常退出的状态值
WCOREDUMP(status)
WIFSTOPPED(status)
WSTOPSIG(status)
WIFCONTINUED(status)
由父进程调用,用来等待子进程退出,如果子进程没有退出,父进程就等着
exit
#include <stdlib.h>
void exit(int status);
void _exit(int status);
exit相当于_exit函数的再次加工,
在退出之前多出以下操作
关闭之前打开的所有文件
刷新输出缓冲区
执行atexit函数
atexit
#include <stdlib.h>
int atexit(void (*function)(void));
返回值 成功 --->0
失败 --->非0
================进程间通信==========
pipe
#include <unistd.h>
int pipe(int pipefd[2]);
返回值
成功 --->0
失败 --->-1
注意
读0写1
只能存在于有亲缘关系的进程间
半双工
不能使用lseek
mkfifo
#include <sys/types.h>
#include <sys/stat.h>
int mkfifo(const char *pathname, mode_t mode);
pathname --->创建的有名管道的路径名
mode --->文件权限 0666
返回值
成功 --->0
失败 --->-1
注意
不能使用lseek
如果创建路径下的管道文件已经存在那个是创建不成功的
可以使用access函数检测文件是否存在
不能只有读端或者只有写端
access
#include <unistd.h>
int access(const char *pathname, int mode);
参数
pathname --->路径名
mode --->你要选择检测的模式:
R_OK
W_OK
X_OK
F_OK --->检测文件存在
返回值 成功 --->0
失败 --->-1
功能
access函数检测文件相关信息
进程函数用法
最新推荐文章于 2024-08-23 17:37:15 发布
本文详细介绍了C语言中进程管理(如fork、getpid、exec、wait和exit)以及进程间通信(如pipe、mkfifo和access)的关键函数,包括它们的使用、返回值和注意事项。
摘要由CSDN通过智能技术生成