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的更多相关文章

  1. Unix守护进程

    问题描述:         Unix守护进程 问题解决:     Unix守护进程没有控制终端,终端名设置为问号(?),终端前台进程组ID设置(TPGID)为-1 守护进程编写规则:      (1) ...

  2. Linux/Unix分配进程ID的方法以及源代码实现

    在Linux/Unix系统中.每一个进程都有一个非负整型表示的唯一进程ID.尽管是唯一的.可是进程的ID能够重用.当一个进程终止后,其进程ID就能够再次使用了. 大多数Linux/Unix系统採用延迟 ...

  3. 利用lsof去查看Unix/Linux进程打开了哪些文件

    利用lsof去查看Unix/Linux进程打开了哪些文件 今天用了一下lsof,发现这个linux的小工具,功能非常强大而且好用. 我们可以方便的用它查看应用程序进程打开了哪些文件或者对于特定的一个文 ...

  4. 编写Linux/Unix守护进程

    原文: http://www.cnblogs.com/haimingwey/archive/2012/04/25/2470190.html 守护进程在Linux/Unix系统中有着广泛的应用.有时,开 ...

  5. unix/linux 进程间文件锁

    转自 http://www.cnblogs.com/hjslovewcl/archive/2011/03/14/2314333.html 有三种不同的文件锁,这三种都是“咨询性”的,也就是说它们依靠程 ...

  6. unix/linux进程详解

    技术分享 启动新进程 stdlib.hintsystem(const char *string)whichequals to "sh -c string" 替换进程映像unistd ...

  7. UNIX环保进程

    学习的过程之前,先来了解下过程中的操作环境. main功能 过程总是开始main功能开始执行,我们编程,程序从main功能进行,它是原型例如,下面的: int main(int argc, char ...

  8. UNIX基础--进程和守护进程

    进程和守护进程 Processes and Daemons 进程(Processes) FreeBSD 是一个多任务操作系统. 这就意味着好像一次可以运行一个以上的程序. 每个占用一定时间运行的程序就 ...

  9. Unix 让进程安全地退出

    终止一个进程有很多方法(暂只说linux环境):前台运行的进程,如果没有提供退出功能,我们通常会Ctrl+C进行终止:后台或守护进程,如果也没有提供退出命令啥的,咱通常会kill掉:此外还有类似关机或 ...

随机推荐

  1. 学习KNN算法体会和总结

    k-d树(k-dimensional树的简称),是一种切割k维数据空间的数据结构.主要应用于多维空间重要数据的搜索(如:范围搜索和近期邻搜索). 索引结构中相似性查询有两种主要的方式:一种是范围查询( ...

  2. HDU 5239 上海大都会 D题(线段树+数论)

    打表,发现规律是存在一定次数(较小)后,会出现a=(a*a)%p.可以明显地发现本题与线段树有关.设置标记flag,记录本段内的数是否均已a=a*a%p.若是,则不需更新,否则更新有叶子结点,再pus ...

  3. 读写锁(read-write lock)机制-----多线程同步问题的解决

    原文: http://blog.chinaunix.net/uid-27177626-id-3791049.html ----------------------------------------- ...

  4. maven出现不再支持源选项 1.5。请使用 1.6 或更高版本

    maven出现不再支持源选项 1.5.请使用 1.6 或更高版本 学习了:http://blog.csdn.net/sosous/article/details/78312867 错误: [ERROR ...

  5. 【struts2】中method={1}具体解释

    我们在使用struts2的时候,有时候为了简化struts2的配置项而採用通配符的方式,例如以下代码: <action name="ajaxregister!*" class ...

  6. 转:Java阳历转农历

    package cloud.app.prod.home.utils; import java.text.ParseException; import java.text.SimpleDateForma ...

  7. HDU5195 线段树+拓扑

    DZY Loves Topological Sorting Problem Description A topological sort or topological ordering of a di ...

  8. ubuntu下7z文件的解压方法

    apt-get install p7zip-full 控制台会打出以下信息: 正在读取软件包列表... 完成正在分析软件包的依赖关系树       正在读取状态信息... 完成       建议安装的 ...

  9. GitHub上排名前100的Android开源库介绍

    GitHub上排名前100的Android开源库介绍 文章来源: http://www.open-open.com/news/view/1587067#6734290-qzone-1-31660-bf ...

  10. UESTC--1253--阿里巴巴和n个大盗 (博弈)

     阿里巴巴和n个大盗 Time Limit: 1000MS   Memory Limit: 65535KB   64bit IO Format: %lld & %llu Submit St ...