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掉:此外还有类似关机或 ...
随机推荐
- MVC.Net:将Reponse Redirect从Get变为Post
在我们使用Response.Redirect命令的时候,有时候希望以POST的方式将参数传递过去.那么Redirect支持这种做法吗?答案是不支持... ======= 怎么办呢? ======= 我 ...
- HDU 5387 Clock (MUT#8 模拟)
[题目链接]:pid=5387">click here~~ [题目大意]给定一个时间点.求时针和分针夹角,时针和秒针夹角,分针和秒针夹角 模拟题,注意细节 代码: #include&l ...
- Html5笔记 表格 布局
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Google Code Jam在线測试题目--Alien Language
Problem After years of study, scientists at Google Labs have discovered an alien language transmitte ...
- 【BZOJ 1398】 Necklace
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=1398 [算法] 最小表示法 [代码] #include<bits/stdc++ ...
- Rocky(模拟)
http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2718 题意:如果没有障碍就按原方向直走,否则就 ...
- jFinal基于maven简单的demo
JFinal 是基于Java 语言的极速 web 开发框架,其核心设计目标是开发迅速.代码量少.学习简单.功能强大.轻量级.易扩展.Restful.在拥有Java语言所有优势的同时再拥有ruby.py ...
- 【NOI1999、LOJ#10019】生日蛋糕(搜索、最优化剪枝、可行性剪枝)
主要是剪枝的问题,见代码,讲的很详细 #include<iostream> #include<cstdio> #include<cmath> #include< ...
- [Luogu 2216] [HAOI2007]理想的正方形
[Luogu 2216] [HAOI2007]理想的正方形 题目描述 有一个a*b的整数组成的矩阵,现请你从中找出一个n*n的正方形区域,使得该区域所有数中的最大值和最小值的差最小. 输入输出格式 输 ...
- ACM_城市交通线(简单并查集)
城市交通线 Time Limit: 2000/1000ms (Java/Others) Problem Description: A国有n座城市,编号为1~n,这n个城市之间没有任何交通线路,所以不同 ...