进程的调用
来源:互联网 发布:linux下查看当前用户 编辑:程序博客网 时间:2024/06/05 00:40
每个进程都有一个非负整数的唯一ID,用pid_t结构表示其ID,其中ID为0的是调度进程,常被称为交换进程。是内核的一部分为系统进程,ID为1的是init进程,他是一个普通用户进程,但用root权限运行。我们可以调用fork函数来分支产生子进程,子进程是父进程的副本,得到其数据空间,推和栈的副本。子进程会用dup函数复制父进程表项,从而实现文件共享,两进程维护同一张文件表项,返回给父进程的是子进程的ID,返回给子进程的是0,子进程可通过getppid得到父进程的ID;
vfork也可产生子进程,其产生的子进程并将父进程的地址空间全部复制到子进程中,在父进程的空间中运行,所以子进程进行调用函数,修改数据等操作都会产生不确定的结果。且其是保证子进程先运行,等他调用exec或exit时,父进程才开始被调度运行。
进程一共有5种正常退出方式与3种异常退出方式,不管进程如何终止,最后都会执行内核中的同一段代码,为相应进程关闭打开的描述符,释放其所用的储存器。因为父进程与子进程执行时间不同,可能父进程先结束,此时子进程的父进程会变成init,等子进程结束,init会调用wait自动保存它的相关信息,若子进程先结束,而父进程没提供相关处理函数wait,waitpid,则此子进程会成为僵死进程,占用系统内存。
wait与waitpid获得的整形常量包含了,子进程的退出状态,信号编号以及有个指示是否产生了core文件,可通过系统定义的宏来进行判断。waitid与waitpid相似但它提供了两个参数来表示要等待的子进程所属的类型。wait3,wait4则允许内核返回由终止进程及所有子进程的资源概况。如CPU时间总量,缺页次数等。
因为父进程与子进程的执行时间并不确定,有可能子进程先执行完,有可能父进程先执行完,可通过多个进程之间某种形式的信号发送与接受的方法,解决该问题。
exec函数可启动另一个程序,用一个磁盘上的新程序来替换当前进程的正文段,数据段,堆段与栈段。
setuid与setgid可设置实际用户ID与实际用户ID,若有root权限,则更改全部的实际用户ID,有效用户ID与保存的设置用户ID。若无,则只能更改有效ID变为uid。其中保存的设置ID可用于权限的该变,在需要提升特权时,可设置程序文件的设置用户ID而得到额外的权限。而不需要时,则返回实际用户的权限,使进程的权限控制更具灵活性。
- Linux的进程调用
- 进程的调用
- 进程的调用和进程切换
- 调用别的进程的可执行文件
- 调度进程的系统调用
- 进程管理相关的系统调用二
- 两个调用子进程的方法
- windows下调用进程的函数
- 找到调用内核接口的上层进程
- 32进程调用64dll的解决方法
- Linux下进程相关的系统调用
- android callRemoteService 调用其他进程的service
- 进程相关的系统调用1
- 进程相关的系统调用2
- 进程相关的系统调用3
- gdb调用正在运行的进程
- 查看进程调用的so动态库
- 【UNIX】什么是进程的系统调用
- Scala入门到精通——第十六节 泛型与注解
- [Drools]JAVA规则引擎 -- Drools
- PROBLEM_J: Gym 100345J - Zen Garden
- RESTful
- yarn架构-概述
- 进程的调用
- 一个树莓派raspberry pi 操作系统开发网站
- 天声人語 20150802
- ACdream 1084 寒假安排(数论(k进制末位的0的数目+n!中v因子个数))
- 日经春秋 20150802
- 日经社説 20150802 限界に近づく救急車の出動
- 日经社説 20150802 TPP交渉を漂流させずに早期決着を
- 小谈Java Enum的多态性
- 社説 20150802 最低賃金上げ 中小企業の体力強化が重要だ