首页 > 系统相关 >第八章 进程控制

第八章 进程控制

时间:2024-02-27 13:55:45浏览次数:21  
标签:fork 控制 void pid 第八章 进程 include ID

进程标识

#include <unistd.h>
pid_t getpid(void);
pid_t getppid(void); // 父ID
uid_t getuid(void); // 实际用户ID
uid_t geteuid(void); // 有效用户ID
gid_t getgid(void); // 实际组ID
gid_t getegid(void); // 有效组ID

fork 创建新进程

#include <unistd.h>
pid_t fork(void); // 子进程返回0,父进程返回子进程ID,出错返回-1

父进程和子进程是两个堆栈空间,子进程改变不了父进程堆栈空间里的数据。有一项需要注意,IO缓冲区如果有数据,子进程也会复制过去

#include <unistd.h>
#include <stdio.h>
int main()
{
    setvbuf(stdout, nullptr, _IOFBF, 0);  // 设置标准输出为全缓冲
    printf("abc\n");	// 数据在缓冲区不立即输出
    fork();	// 创建子进程,子进程输出缓冲区也有数据
    return 0;
}
/*
结果会打印两次abc
*/

父子进程共享在fork之前的文件描述符,并且会相互影响文件偏移量。本质是共享一个打开文件表项。

img

标签:fork,控制,void,pid,第八章,进程,include,ID
From: https://www.cnblogs.com/hellozhangjz/p/17670888.html

相关文章

  • 第八章读后感
    这一章详细地解释了如何将人类编写的源代码转化为机器可以执行的二进制代码,这其中涉及到了编译和链接两个关键步骤。编译是将源代码转化为汇编代码的过程,这一步主要关注语法和语义的正确性。编译器首先会检查源代码中的语法错误,确保代码的结构是正确的。一旦语法检查通过,编译器会......
  • gin中间件&控制器
    中间件Gin框架允许开发者在处理请求的过程中,加入用户自己的钩子(Hook)函数。这个钩子函数就叫中间件,中间件适合处理一些公共的业务逻辑,比如登录认证、权限校验、数据分页、记录日志、耗时统计等。通俗的讲:中间件就是匹配路由前和匹配路由完成后执行的一系列操作路由中间件Gi......
  • flume进程关闭
    #!/usr/bin/python3#coding=utf-8importsubprocessimportsysimportpsutildefproc(key):foriin['hadoop102','hadoop103']:ifkey=='start':print(f"---------------{i}节点,日志采集开启----------......
  • Spring Security权限控制框架使用指南
    在常用的后台管理系统中,通常都会有访问权限控制的需求,用于限制不同人员对于接口的访问能力,如果用户不具备指定的权限,则不能访问某些接口。本文将用waynboot-mall项目举例,给大家介绍常见后管系统如何引入权限控制框架SpringSecurity。大纲如下,一、什么是SpringSecurityS......
  • 【13.0】JavaScript之流程控制
    【一】if判断【1】语法//if-elseif(条件){条件成立执行的代码块}else{条件不成立时执行的代码块}//if-elseif-elseif(条件){条件成立执行的代码块}elseif(条件){条件成立执行的代码块}else{条件不成立时执行的代码块}//()条件{}执行的代码块【2】if~e......
  • 《程序是怎样跑起来的》第八章读后感
    本地代码:本地代码的内容就是数值的罗列集合(二进制的数据展示)。编译器:负责将源代码转换为本地代码,每种语言都有其专用的编译器。由于cpu类型不同,本地代码的类型也不同,编译器可以将源代码编译成不同cpu类型的本地代码。交叉编译:在当前平台编译另外平台的本地代码,例如在wi......
  • 第八章 异常控制流
    1.异常从给处理器加电开始,直到你断电为止程序计数器假设一个值的序列(\(a_k\)是\(I_k\)的地址)每次从\(a_k到a_{k+1}\)的过渡称为控制转移,这样的控制转移称为处理器的控制流系统必须对系统状态的变化(\(I_k和I_{k+1}\)的地址不相邻)做出反应,这些变化不是一些必要的机制(比如......
  • 多进程拷贝数据文件
    多进程拷贝数据#include<sys/types.h>#include<sys/stat.h>#include<fcntl.h>#include<sys/mman.h>#include<sys/wait.h>#include<unistd.h>#include<stdio.h>#include<string.h>intmmap_mamcpy(char**argv){......
  • 《程序是怎样跑起来的》第八章——从源文件到可执行文件
    编译(Compilation):首先,程序员使用文本编辑器编写源代码,然后通过编译器将源代码转换为目标代码。编译器会进行词法分析、语法分析、优化和代码生成等步骤,最终生成可执行文件或库文件。链接(Linking):如果程序包含多个源文件或库文件,链接器会将这些文件中的目标代码连接在一起,形成最......
  • 硬件控制
    对电子计算机硬件数据计算系统准确性的控制硬件控制是对电子计算机硬件数据计算系统准确性的控制。包括:(1)硬件性能设计控制。主要采取双重电路、双重读出和回波校验等方法。双重电路可执行双重计算并比较两个计算结果;双重读出即以两个阅读器分别阅读卡片、磁带,或随机存......