什么是父进程和子进程?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了什么是父进程和子进程?相关的知识,希望对你有一定的参考价值。
什么是父进程和子进程,他们的关系是怎么样的?
应该是树行结构子进程继承的父进程的属性:
实际UID,GID和有效UID,GID.
. 环境变量.
. 附加GID.
. 调用exec()时的关闭标志.
. UID设置模式比特位.
. GID设置模式比特位.
. 进程组号.
. 会话ID.
. 控制终端.
. 当前工作目录.
. 根目录.
. 文件创建掩码UMASK.
. 文件长度限制ULIMIT.
这些根据不同的调用,不同
常用的多进程编程的系统调用
1.fork()
功能:创建一个新的进程.
2.system()
功能:产生一个新的进程, 子进程执行指定的命令.
4.popen()
功能:初始化从/到一个进程的管道.
5.pclose()
功能:关闭到一个进程的管道.
6.wait()
功能:等待一个子进程返回并修改状态
7.waitpid()
功能:等待指定进程号的子进程的返回并修改状态
8.setpgrp()
功能:设置进程组号和会话号.
9.exit()
功能:终止进程.
10.signal()
功能:信号管理功能
11.kill()
功能:向一个或一组进程发送一个信号.
12.alarm()
功能:设置一个进程的超时时钟.
13.msgsnd()
功能:发送消息到指定的消息队列中.
14.msgrcv()
功能:从消息队列中取得指定类型的消息.
15.msgctl()
功能:消息控制操作
16.msgget()
功能:取得一个消息队列. 参考技术A 就好比是树行结构,父代表根,子代表叶或者支干。
当然子进程是包含在父进程里的一个进程 参考技术B 在程序设计时,某一个具体的功能模块可以通过函数或是线程等不同的形式来实现。对于同一进程而言,这些函数、线程都是存在于同一个地址空间下的,而且在执行时,大多只对与其相关的一些数据进行处理。如果算法存在某种错误,将有可能破坏与其同处一个地址空间的其他一些重要内容,这将造成比较严重的后果。为保护地址空间中的内容可以考虑将那些需要对地址空间中的数据进行访问的操作部分放到另外一个进程的地址空间中运行,并且只允许其访问原进程地址空间中的相关数据。具体的,可在进程中通过CreateProcess()函数去创建一个子进程,子进程在全部处理过程中只对父进程地址空间中的相关数据进行访问,从而可以保护父进程地址空间中与当前子进程执行任务无关的全部数据。对于这种情况,子进程所体现出来的作用同函数和线程比较相似,可以看成是父进程在运行期间的一个过程。为此,需要由父进程来掌握子进程的启动、执行和退出。 参考技术C 1、父进程
指已创建一个或多个子进程的进程。在UNIX里,除了进程0以外的所有进程都是由其他进程使用系统调用fork创建的,这里调用fork创建新进程的进程即为父进程,而相对应的为其创建出的进程则为子进程,因而除了进程0以外的进程都只有一个父进程,但一个进程可以有多个子进程。
2、子进程
指的是由另一进程(对应称之为父进程)所创建的进程。子进程继承了对应的父进程的大部分属性,如文件描述符。在Unix中,子进程通常为系统调用fork的产物。在此情况下,子进程一开始就是父进程的副本,而在这之后,根据具体需要,子进程可以借助exec调用来链式加载另一程序。
扩展资料
父子进程之间的关系
1、关于资源
子进程得到的是除了代码段是与父进程共享的意外,其他所有的都是得到父进程的一个副本,子进程的所有资源都继承父进程,得到父进程资源的副本,既然为副本,也就是说,二者并不共享地址空间。两个是单独的进程,继承了以后二者就没有什么关联了,子进程单独运行。
2、关于文件描述符
继承父进程的文件描述符时,相当于调用了dup函数,父子进程共享文件表项,即共同操作同一个文件,一个进程修改了文件,另一个进程也知道此文件被修改了。
参考资料来源:百度百科-父进程
参考资料来源:百度百科-子进程
以上是关于什么是父进程和子进程?的主要内容,如果未能解决你的问题,请参考以下文章