unix 编程进程控制详细介绍

 更新时间:2017年01月20日 15:28:00   投稿:lqh  
这篇文章主要介绍了unix 编程进程控制详细介绍的相关资料,需要的朋友可以参考下

 unix 编程进程控制:

fork函数

fork创建子进程,子进程是父进程的副本,会得到父进程数据空间、堆、栈的副本。

然后文件的共享这块也比较复杂,父进程和子进程各自都有文件描述符表,但是文件表示公用的(而一般两个进程,文件表是每个进程独有的),也就是说文件的偏移量是一致。一个文件在父进程中打开,在子进程中也会被打开一遍,因此如果在子进程中不使用这个文件,先要close这个文件。

vfork函数

和fork函数有如下区别:

1:vfork子进程先执行,并且子进程调用exec函数
2:vfork子进程不会copy父进程的地址空间,也就是会公用。

exit函数

exit函数会关闭所以I/O流

wait waitpid函数

如果所有子进程还在运行,阻塞
如果一个子进程已终止,父进程立刻获取其终止状态,返回。
如果没有任何子进程,出错返回。

waitpid 函数

1.pid==-1 等待任何一子进程
2. pid > 0 等待指定pid
3.pid==0 等待组ID等于调用进程组ID的任一进程
4.等待组ID等于pid绝对值的任一子进程

当然这两个函数也可以设置成不阻塞

exec函数

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子进程默认打开在父进程打开的描述符。

更改用户ID和组ID

这个需要注意,进程是否有权限读写每个文件,主要看进程的有效用户ID。

特别注意一点,当程序文件设置了设置用户ID位。exec函数执行这个程序时,会设置根据这个程序文件的uid有效用户ID。如果

没有设置用户ID位,exec函数不会改变有效用户ID,维持现有值。

解析器文件

#! pathname 参数
文件中遇到这种就是解释器文件
当执行execl函数的时候,会先执行这个命令。

函数system

其实就是类似在shell中打命令,其实就是fork一个进程,然后执行exec

进程调度

可以使用nice函数设置进程的优先级

 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

相关文章

  • 详解IOS点击空白处隐藏键盘的几种方法介绍

    详解IOS点击空白处隐藏键盘的几种方法介绍

    本篇文章主要介绍了IOS点击空白处隐藏键盘的几种方法,非常具有实用价值,需要的朋友可以参考下。
    2016-12-12
  • iOS开发中UIWebView的加载本地数据的三种方式

    iOS开发中UIWebView的加载本地数据的三种方式

    这篇文章主要介绍了iOS开发中UIWebView的加载本地数据的三种方式,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-09-09
  • iOS实现折叠单元格

    iOS实现折叠单元格

    这篇文章主要为大家详细介绍了iOS实现折叠单元格,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-09-09
  • iOS11 WKWebView问题汇总

    iOS11 WKWebView问题汇总

    本文给大家分享的是作者在IOS11中使用WKWebView加载URL出现无法加载内容的情况的解决方法,有同样问题的小伙伴可以查看下
    2017-11-11
  • iOS仿高德首页推拉效果实例代码

    iOS仿高德首页推拉效果实例代码

    这篇文章主要给大家介绍了关于iOS仿高德首页推拉效果的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2021-11-11
  • iOS实现带遮罩的弹出选项卡

    iOS实现带遮罩的弹出选项卡

    这篇文章主要为大家详细介绍了iOS实现弹出选项卡,并附带遮罩,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-02-02
  • IOS中的webView加载HTML

    IOS中的webView加载HTML

    在日常开发中,我们为了效率会用到很多很多的WebView,比如在做某个明细页面的时候我们返回给你的可能是一个html字符串,我们就需要将当前字符串展示到webView上面,所以我们对HTML标签需要有一定的认识,下面我们来一起用html标签和JS写一个打地鼠游戏
    2016-02-02
  • iOS中从网络获取数据的几种方法的比较

    iOS中从网络获取数据的几种方法的比较

    IOS中获取网络数据一般有三种:1、NSURLCondition(已过时) 2、NSURLSession 3、三方库AFNetWorking。下面通过本文给大家比较这三种方法的区别对比
    2017-11-11
  • iOS开发学习TableView展现一个list实例

    iOS开发学习TableView展现一个list实例

    这篇文章主要为大家介绍了iOS系列学习TableView展现一个list实例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • iOS中FMDB事务实现批量更新数据

    iOS中FMDB事务实现批量更新数据

    这篇文章主要为大家详细介绍了iOS中FMDB事务实现批量更新数据,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11

最新评论