(待续)进程控制(四)---父子进程之间的复制

用户缓冲区:

  由 fork函数创建的子进程会继承父进程的用户缓冲区。如果在父进程调用 fork 函数创建子进程之前缓冲区中仍然有数据在其中的话,那么子进程将会复制父进程的缓冲区。

文件共享:

  由 fork 函数创建的子进程会继承父进程打开的所有文件描述符,而且父子进程相同的文件描述符是指向同一个文件表项(共享一个读写偏移指针)。IPC(进程间通信)中的 无名管道 就是利用子进程会继承父进程的文件描述符这一特点来实现的。

时间: 2024-10-25 11:52:37

(待续)进程控制(四)---父子进程之间的复制的相关文章

进程控制之孤儿进程

#include<stdio.h> #include<sys/types.h> #include<sys/wait.h> #include<unistd.h> #include<signal.h> int main( void ) { daemon_init(); fprintf(stderr, "main进程[%d]\n", getpid() ); while( 1 ) { } exit(0); } int daemon_i

linux c编程:进程控制(四)进程调度

当系统中有多个进程到时候,哪个进程先执行,哪个进程后执行是由进程的优先级决定的.进程的优先级是由nice值决定的.nice值越小,优先级越高.可以看做越友好那么调度优先级越低.进程可以通过nice函数获取更改它的nice值,进程只能影响自己的nice值,不能影响其他进程的nice值 #include <unistd.h> int nice(int incr) incr参数被增加到调用进程的nice值上,如果nice值太大,系统直接将它降到最大合法值. 可以通过nice命令来查看系统的默认nic

进程控制(一)---PCB(进程控制块)

 进程是对程序的动态描述,是操作系统进行资源分配的最小单位(线程是操作系统执行实体的最小单位). 对于多道程序系统来说,其内存中可能存在着很多个进程,为了方便管理这些进程,操作系统内核为每个被创建的进程都建立一个结构体来保存与其相关的信息.这个结构体就是PCB,也就是进程控制块,进程控制块存在于进程的高 1 G空间,也就是内核空间中.在具体linux内核实现中,使用一个名为task_struct的结构体来描述的,在内核/include/linux/sched.h头文件中有具体定义. 操作系统组织

[linux]进程(四)——进程的创建

11,进程的创建 linux的进程创建可以分为两个步骤,分别为fork()和exec()函数,fork()负责创建一个子进程,和父进程的差别仅仅是PID PPID以及一些统计量,exec()函数负责读取可执行文件载入地址空间运行. fork()函数原型 pid_t fork(void); 子进程返回0,父进程返回子进程的PID,fork()函数一次创建两次返回. fork()函数的实现fork()采用了写时拷贝(copy-on-write)的技术,刚创建子进程的时候父进程和子进程拥有相同的地址空

进程控制(1):进程标识符

进程标识符(PID)是一个进程的基本属性,其作用类似于每个人的身份证号码.根据进程标识符,用户可以精确地定位一个进程.一个进程标识符唯一对应一个进程,而多个进程标识符可以对应同一个程序.本文将深入探讨进程标识符及其相关操作. 1 进程标识符 每个进程在系统中都有唯一的一个ID标识它,这个ID就是进程标识符(PID).因为其唯一,所以系统可以根据它准确定位到一个进程.进程标识符的类型为pid_t,其本质上是一个无符号整型的类型别名(typedef). 接下来,我们来简单介绍一个进程与程序的关系.所

进程控制、孤儿进程和僵尸进程

一.进程控制 1.进程标识 1.操作系统里每打开一个进程都会创建一个进程ID,这是唯一标识进程的编号,即PID. 2.PID 在任何时刻都是唯一的,但是可以重用.当进程终止并被回收以后,其 PID 就会被系统回收 3.进程的 PID 由系统内核根据延迟重用算法生成,以确保新进程的 PID 不同于最近终止进程的 PID. 4.进程PID的最大值是有限的(因系统的不同而不同),需要及时回收 2.特殊进程 0 号进程:通常是调度进程,常常被称为交换进程(swapper).该进程是内核的一部分,所有进程

进程控制(六)---孤儿进程和僵尸进程

考虑下面两种情况: 第一种:父进程 先于 子进程 退出. 发生此种情况的时候,子进程便成为 孤儿进程.系统中的所有孤儿进程都会被 init 进程领养,init 进程的进程 ID 始终为 1.系统内当有进程终止的时候,内核会去检查所有的进程是否为该终止进程的子进程,如果是,则将其父进程 ID 修改为 1,即被 init 进程领养.init 进程保证会去 wait 每个子进程的退出.这样一来,就可以保证系统内的所有进程都有父进程.当一个孤儿进程被 init 进程领养的时候,孤儿进程将会由前台进程转为

进程控制(十一)---更改进程的用户ID和组ID

Linux提供了setuid函数和seteuid函数来更改与进程相关的用户ID,和进程相关的用户ID有“实际用户ID.有效用户ID和保存的设置用户ID” ====================================================== 函数原型: 函数参数: uid:要设置的用户ID 返回值: 调用成功时返回 0 调用失败时返回 -1 ==================================================== 当进程的有效用户ID是roo

Linux进程控制知识总结

目录 一:进程标识符(ID) 二:进程操作 2.1创建一个进程 2.2 fork函数出错情况 2.3创建一个共享空间的子进程 2.4退出程序 2.5设置进程所有者 三:执行程序 3.1 exec函数 3.2 执行解释器文件 3.3在程序中执行Shell命令 四:关系操作符 4.1等待进程退出 4.2 等待指定的进程 进程控制 -- 一步 一:进程标识符(ID) 进程ID是用来标识进程的编号,就像身份证一样.不同的进程有不同的ID,可以通过ID来查询进程.进程标识符的类型是pit_t,其本质是一个