服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C/C++ - C++进程的创建和进程ID标识详细介绍

C++进程的创建和进程ID标识详细介绍

2022-08-26 19:07小小酥诶 C/C++

传统的C++(C++98)中并没有引入线程这个概念。linux和unix操作系统的设计采用的是多进程,进程间的通信十分方便,同时进程之间互相有着独立的空间,不会污染其他进程的数据,天然的隔离性给程序的稳定性带来了很大的保障

进程的ID

进程的ID,可称为PID。它是进程的唯一标识,类似于我们的身份证号是唯一标识,因为名字可能会和其他人相同,生日可能会与其他人相同……大多数的事件都可能会与其他人相同,而身份证号每个人都是不一样的,这是社会中自己的唯一标识。

当进程被创建的时候,系统就自动分配给进程一个唯一的PID,PID是正数。

在Linux中有两个系统调用函数,可以获取进程的ID。

?
1
2
pid_t getpid(void); //获取进程ID(PID)
pid_t getppid(void);//获取其父进程ID(PPID)

所需头文件

?
1
2
# include <sys/types.h>
# include <unistd.h>

getpid()返回的时调用该函数的进程的PID,getppid()返回的是调用该函数的进程的父进程ID(PPID),返回值类型是pid_t,实际上是无符号整型,这两个函数不会出现调用失败的情况

开始测试……

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
  //mycode.c文件
# include <stdio.h>
# include <sys/types.h>
# include <unistd.h>
int main(void)
{
  //创建子进程
  pid_t id = fork();
  if(id == 0)
  {
 //子进程
  printf("i am child, my id is %d\n",getpid());
  }
  else{                                                                                                                                                        
  //父进程
  printf("i am parent, my id is %d\n",getppid());
  }
  return 0;
}

//运行结果
i am parent, my id is 1593
i am child, my id is 7048

进程创建

【进程创建的主要事件】

1、新的批处理作业

2、由进程派生出一个进程

3、因为提供服务而创建

4、交互登录

操作系统创建进程包含的步骤

1、分配唯一的进程标识符

2、分配空间

3、初始化进程控制块(PCB)

4、修改连接

5、创建/扩充其他数据结构

对于“修改连接”,操作系统会把调度队列保存成某些数据结构,新的进程需要放置在数据结构里,所以需要重新连接。

在Linux系统中,可以创建新进程的系统调用函数只有一个fork

?
1
2
#include <unistd.h>
 pid_t fork(void);

描述:

fork()函数可以创建子进程,所需的头文件为unistd.h, 返回两次。

  • 如果返回的是0,则表示为子进程
  • 如果返回的是非0,则表示为父进程

到此这篇关于C++进程的创建和进程ID标识详细介绍的文章就介绍到这了,更多相关C++进程内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/qq_56870066/article/details/125091174

延伸 · 阅读

精彩推荐