UNIX C 进程Part2
1.获取进程ID
#include <unistd.h> pid_t getpid(void); //获取子进程id
pid_t getppid(void);//获取父进程id
2.获取实际用户ID和实际用户组ID
#include <unistd.h> uid_t getuid(void);
uid_t getgid(void);
3.有效用户ID和有效组ID
#include <unistd.h> uid_t geteuid(void);
uid_t getegid(void);
4.进程创建
#include <unistd.h> pid_t fork(void);//写时复制方式创建进程,把父进程资源复制到子进程,只要代码区是共享
这种进程退出方式 --exit(status)
pid_t vfork(void);//和父进程共享资源
退出进程函数_exit(status)
5.进程正常退出
exit退出处理函数
#include <stdlib.h> void exit(int status); exit退出函数在执行退出函数的时候会做下面三步
.检查或执行遗言函数atexit、on_exit
.关闭I\O流
.删除tmpfile函数创建的临时文件
_exit()和_Exit()
#include <unistd.h> void _exit(int status);//vfork()相对应的退出函数 #include <stdlib.h> void _Exit(int status);//和exit函数相似
退出前处理以下三件事儿
.关闭文件描述符
.将子进程交给init进程收养
.向调用的父进程发SIGCHLD()信号
6.遗言函数
#include <stdlib.h> int atexit(void(*function)(void));
成功返回0,失败非0 int on_exit(void(*function)(int,void*),void* arg);
成功返回0,失败返回非0 --function:函数指针
--arg:泛型指针(万能指针),该参数指向function处理函数
7.异常终止进程
#include <stdlib.h> void abort(void);
不返回 进程解除SIGABRT()信号阻塞,然后导致进程阻塞
8.进程回收处理
wait
#include <sys/wait.h> pid_t wait(int* status);//为子进程收尸,回收系统资源 成功返回子进程ID,失败-
waitpid
#include <sys/wait.h> pid_t pid = waitpid(pid_t pid,int* status,int option);
成功返回子进程pid或0,失败返回- --pid:可取下值
< - ;等待特定进程组的任意子进程
-;等待并回收任意子进程和wait函数一样
;回收同进程组的调用进程中任意子进程
>;回收特定子进程(由pid标识) --option:可取下值
;阻塞模式,直至子进程终止
WNOHANG,非阻塞模式,子进程仍在运行返回 ;
9.exec在一个进程上创建新的进程,但pid会不变
#include <unistd.h> int execl(const char* path,const char *arg,...)
int execlp(const char* file,const char *arg,...)
int execle(const char* path,const char *arg,...,char const envp[]);
int execv(const char* path,char* const arg[]);
int execvp(const char* file,char* const arg[]);
int execve(const char* path,char* const arg[],char* const envp[]); --l 即list 字符指针 命令行 列表参数
--p 即path 根据环境变量中文件
--e 即env 环境字符指针数组
--v 即vector 命令行参数 exec函数,不返回
10.system函数
#include <stdlib.h> int system(const char* command); --command 命令字符串
UNIX C 进程Part2的更多相关文章
- Unix守护进程
问题描述: Unix守护进程 问题解决: Unix守护进程没有控制终端,终端名设置为问号(?),终端前台进程组ID设置(TPGID)为-1 守护进程编写规则: (1) ...
- Linux/Unix分配进程ID的方法以及源代码实现
在Linux/Unix系统中.每一个进程都有一个非负整型表示的唯一进程ID.尽管是唯一的.可是进程的ID能够重用.当一个进程终止后,其进程ID就能够再次使用了. 大多数Linux/Unix系统採用延迟 ...
- 利用lsof去查看Unix/Linux进程打开了哪些文件
利用lsof去查看Unix/Linux进程打开了哪些文件 今天用了一下lsof,发现这个linux的小工具,功能非常强大而且好用. 我们可以方便的用它查看应用程序进程打开了哪些文件或者对于特定的一个文 ...
- 编写Linux/Unix守护进程
原文: http://www.cnblogs.com/haimingwey/archive/2012/04/25/2470190.html 守护进程在Linux/Unix系统中有着广泛的应用.有时,开 ...
- unix/linux 进程间文件锁
转自 http://www.cnblogs.com/hjslovewcl/archive/2011/03/14/2314333.html 有三种不同的文件锁,这三种都是“咨询性”的,也就是说它们依靠程 ...
- unix/linux进程详解
技术分享 启动新进程 stdlib.hintsystem(const char *string)whichequals to "sh -c string" 替换进程映像unistd ...
- UNIX环保进程
学习的过程之前,先来了解下过程中的操作环境. main功能 过程总是开始main功能开始执行,我们编程,程序从main功能进行,它是原型例如,下面的: int main(int argc, char ...
- UNIX基础--进程和守护进程
进程和守护进程 Processes and Daemons 进程(Processes) FreeBSD 是一个多任务操作系统. 这就意味着好像一次可以运行一个以上的程序. 每个占用一定时间运行的程序就 ...
- Unix 让进程安全地退出
终止一个进程有很多方法(暂只说linux环境):前台运行的进程,如果没有提供退出功能,我们通常会Ctrl+C进行终止:后台或守护进程,如果也没有提供退出命令啥的,咱通常会kill掉:此外还有类似关机或 ...
随机推荐
- DSP、Media、AdExchanger之间的关系及交互流程
广告商,如以下的樱花日语,淘宝卖家.其须要推广自己的产品. Zampdsp(晶赞) 是DSP平台.其与非常多广告商合作,广告商在平台上公布广告创意,并托付平台代为投放. tanx.com 是adExc ...
- LeetCode——Permutation Sequence
The set [1,2,3,-,n] contains a total of n! unique permutations. By listing and labeling all of the p ...
- Test for Job (poj 3249 记忆化搜索)
Language: Default Test for Job Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 9733 A ...
- crmjs区分窗口是否是高速编辑(2)
随着crm的版本号不同,有些功能不能使用,这里提供了第二种写法: function loadFrom() { var formType = Xrm.Page.ui.getFormType(); ...
- SqlService Date 格式化
<choose> <when test="dateFlag=='day'"> ), FRI.INVOICE_DATE, ) AS CREATED_ON, & ...
- Transaction count after EXECUTE indicates a mismatching number of BEGIN and COMMIT statements
Transaction count after EXECUTE indicates a mismatching number of BEGIN and COMMIT statements 开始想写一个 ...
- Android中使用Gson解析JSON数据
Android中使用Gson解析JSON数据 在Android中可以使用Gson解析JSON数据 首先,从 code.google.com/p/google-gson/downloads/list ...
- thinkphp 上传多张图片
tp3.23 没有找到同时上传多张图片 手册有讲过:http://www.kancloud.cn/manual/thinkphp/1876 其实可以通过,多张图片多次上传来到达效果 hmlt: < ...
- B - Alyona and mex(构造)
Problem description Alyona's mother wants to present an array of n non-negative integers to Alyona. ...
- 在linux系统中,使用tomcat的shutdown.sh脚本停止应用,但是进程还在的解决办法
基本原理为启动tomcat时记录启动tomcat的进程id(pid),关闭时强制杀死该进程 第一步 :vi 修改tomcat下bin/catalina.sh文件,增加几行脚本,主要是记录tomcat的 ...