源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

unix 编程进程控制详细介绍

  • 时间:2021-06-11 04:13 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:unix 编程进程控制详细介绍
[b] unix 编程进程控制:[/b] [b]fork函数[/b] fork创建子进程,子进程是父进程的副本,会得到父进程数据空间、堆、栈的副本。 然后文件的共享这块也比较复杂,父进程和子进程各自都有文件描述符表,但是文件表示公用的(而一般两个进程,文件表是每个进程独有的),也就是说文件的偏移量是一致。一个文件在父进程中打开,在子进程中也会被打开一遍,因此如果在子进程中不使用这个文件,先要close这个文件。 [b]vfork函数[/b] 和fork函数有如下区别: 1:vfork子进程先执行,并且子进程调用exec函数 2:vfork子进程不会copy父进程的地址空间,也就是会公用。 [b]exit函数[/b] exit函数会关闭所以I/O流 [b]wait waitpid函数 [/b] 如果所有子进程还在运行,阻塞 如果一个子进程已终止,父进程立刻获取其终止状态,返回。 如果没有任何子进程,出错返回。 [b]waitpid 函数[/b] 1.pid==-1 等待任何一子进程 2. pid > 0 等待指定pid 3.pid==0 等待组ID等于调用进程组ID的任一进程 4.等待组ID等于pid绝对值的任一子进程 当然这两个函数也可以设置成不阻塞 [b]exec函数[/b] fork进程后,子进程往往会调用exec函数,exec函数不创建进程,进程ID不变。exec只是用磁盘上一个新程序替换了当前进程的正文段,数据段,堆段,栈段。 execl ,execv,execle,execve,execlp,execvp,fexecve 这几个函数其中 l代表list,每个命令都是一个独立参数,最后一个参数需要写成(char *)0 char*pathname ,char *arg0,...char *argn, (char *)0 p代表filename作为参数,从PATH中寻找可执行文件。 v代表vector,是一个数组,参数从数组中得到。 e代表环境,可以给子进程指定一个环境变量。 还有一点,之前有FD_CLOEXEC标志,代表执行exec是就关闭该描述符。因为fork子进程默认打开在父进程打开的描述符。 [b]更改用户ID和组ID[/b] 这个需要注意,进程是否有权限读写每个文件,主要看进程的有效用户ID。 特别注意一点,当程序文件设置了设置用户ID位。exec函数执行这个程序时,会设置根据这个程序文件的uid有效用户ID。如果 没有设置用户ID位,exec函数不会改变有效用户ID,维持现有值。 [b]解析器文件 [/b] #! pathname 参数 文件中遇到这种就是解释器文件 当执行execl函数的时候,会先执行这个命令。 [b]函数system [/b] 其实就是类似在shell中打命令,其实就是fork一个进程,然后执行exec [b]进程调度 [/b] 可以使用nice函数设置进程的优先级  感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部