首页 > 试题广场 >

在Linux上,对于多进程,子进程继承了父进程的下列哪些?

[不定项选择题]
在Linux上,对于多进程,子进程继承了父进程的下列哪些?
  • 进程地址空间
  • 共享内存
  • 信号掩码
  • 已打开的文件描述符
  • 以上都不是

正确答案是BCD

  • 参考CSDN BlogCSDN了解更多。
  • 子进程继承父进程
    • 用户号UIDs和用户组号GIDs
    • 环境Environment
    • 堆栈
    • 共享内存
    • 打开文件的描述符
    • 执行时关闭(Close-on-exec)标志
    • 信号(Signal)控制设定
    • 进程组号
    • 当前工作目录
    • 根目录
    • 文件方式创建屏蔽字
    • 资源限制
    • 控制终端
  • 子进程独有

    • 进程号PID
    • 不同的父进程号
    • 自己的文件描述符和目录流的拷贝
    • 子进程不继承父进程的进程正文(text),数据和其他锁定内存(memory locks)
    • 不继承异步输入和输出
  • 父进程和子进程拥有独立的地址空间和PID参数。

  • 子进程从父进程继承了用户号和用户组号,用户信息,目录信息,环境(表),打开的文件描述符,堆栈,(共享)内存等。
  • 经过fork()以后,父进程和子进程拥有相同内容的代码段、数据段和用户堆栈,就像父进程把自己克隆了一遍。事实上,父进程只复制了自己的PCB块。而代码段,数据段和用户堆栈内存空间并没有复制一份,而是与子进程共享。只有当子进程在运行中出现写操作时,才会产生中断,并为子进程分配内存空间。由于父进程的PCB和子进程的一样,所以在PCB中断中所记录的父进程占有的资源,也是与子进程共享使用的。这里的“共享”一词意味着“竞争”
发表于 2017-03-30 10:06:11 回复(0)
各进程的地址空间和内存都是独立的,不存在继承关系
发表于 2023-04-17 23:17:08 回复(0)
CD
各进程的地址空间和内存都是独立的
发表于 2017-02-25 21:22:32 回复(0)

B. 共享内存 子进程会继承父进程所拥有的共享内存段。这意味着子进程可以访问父进程已经创建的共享内存段,从而实现进程间的共享数据。

C. 信号掩码 子进程会继承父进程的信号掩码,即父进程中通过sigprocmask设置的信号屏蔽字会被子进程继承。这影响了子进程对各种信号的处理方式。

D. 已打开的文件描述符 子进程会继承父进程已经打开的文件描述符。这意味着子进程可以直接使用父进程已经打开的文件,而无需重新打开。

A. 进程地址空间 子进程会获得与父进程相同的代码段、数据段、堆和栈等进程地址空间的副本。这样子进程就可以直接执行父进程的代码,以及访问相同的变量和数据。

编辑于 2023-11-13 17:15:04 回复(0)
进程id不一样,进程地址空间当然不一样
发表于 2023-06-09 07:35:06 回复(0)
各进程的地址空间和内存是独立的
发表于 2022-06-16 15:16:52 回复(0)
ABD
发表于 2017-02-25 19:03:26 回复(0)