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. ios最新设置状态栏字体颜色总结

    状态栏的字体为黑色:UIStatusBarStyleDefault 状态栏的字体为白色:UIStatusBarStyleLightContent 一.在info.plist中,将View contro ...

  2. activeMQ公布订阅模式中中经常使用工具类

    package com.jms; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import javax.j ...

  3. 学习笔记—— 一些UPDATE语句

    UPDATE语句原来还有许多种写法,有的还很复杂,孤陋寡闻的我甚至闻所未闻.幸甚至哉,记而志之. 0.UPDATE 表名 SET 字段... FROM ...的方式 USE AdventureWork ...

  4. mysql数据库字符编码修改

    mysql数据库字符编码修改 修改数据库的字符集mysql>use mydb mysql>alter database mydb character set utf8; 创建数据库指定数据 ...

  5. 使用U-Boot的NFS(远程/网络用户空间)

    前提条件 假设您的主机PC运行的是Ubuntu 14.04.1 LTS或更高版本,并且与您的开发平台在同一个本地网络上;为了简单起见,我们假设网络上也有DHCP服务器.如果使用Juno,请确保使用的是 ...

  6. Wireshark抓取RTP包,还原语音

    最近在做基于SIP的VoIP通信研究,使用Wireshark软件可以对网络流量进行抓包. VoIP使用RTP协议对语音数据进行传输,语音载荷都封装在RTP包里面.要对传输中的语音进行截获和还原,需要通 ...

  7. PCB MongoDB数据库 备份与还原

    一. MongoDB数据库 备份与还原工具介绍: 数据备份工具  mongodump.exe 数据还原工具   mongorestore.exe 二. MongoDB数据库备份 mongodump - ...

  8. thinkphp的ip地址定位

    在WEB应用中,根据IP地址定位和记录相关访问日志也是非常常见的需求,在ThinkPHP中你可以轻松的实现IP地址获取和定位. 获取扩展类库 可以在官网的http://www.thinkphp.cn/ ...

  9. [Apple开发者帐户帮助]三、创建证书(5)创建WatchKit服务证书

    WatchKit服务证书允许您使用Apple推送通知(APN)将更新推送到Apple Watch上的复杂功能. 所需角色:帐户持有人或管理员. 在证书,标识符和配置文件中,从左侧的弹出菜单中选择iOS ...

  10. php函数 array_values()

    array_values() 函数返回一个包含给定数组中所有键值的数组,但不保留键名. 提示:被返回的数组将使用数值键,从 0 开始并以 1 递增. $a=array("Name" ...