首页 > 系统相关 >Linux学习记录(九)----进程(四)

Linux学习记录(九)----进程(四)

时间:2024-08-19 14:25:01浏览次数:8  
标签:cnt pid ---- 终止 exit Linux 进程 include

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录


上篇:进程(一)
中1:进程(二)
中2:进程(三)

8.vfork创建进程

vfork也可以创建进程,与fork有什么区别呢?

  • 区别一:vfork可以直接使用父进程存储空间,不拷贝

  • 区别二:vfork可以保证子进程先运行,当子进程调用exit退出后,父进程才执行

#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>

int main()
{
	int cnt = 0;
	pid_t pid;
	pid = vfork();
	if(pid == -1)
	{
		printf("craete process failed\n");
		return -1;
	}
	else if(pid > 0)
	{
		while(1)
		{
			printf("cnt = %d\n",cnt);
			printf("parent process pid is %d\n",getpid());
			sleep(1);
		}

	}
	else if(pid == 0)
	{
		while(1)
		{

			cnt++;
			printf("cnt = %d\n",cnt);
			printf("child process pid is %d,ppid is %d\n",getpid(),getppid());
			sleep(1);
			if(cnt > 3)
			{
				exit(0);
			}
		}
	}
	return 0;
}

在这里插入图片描述

9.进程退出

1.正常退出
  • 1.main函数调用return

  • 2.进程调用exit(),标准C库

  • 3.进程调用 _exit() 或者 _Exit(),属于系统调用

补充:

  • 4.进程最后一个线程返回

  • 5.最后一个线程调用pthread_exit

2.异常退出
  • 1.调用abort函数

  • 2.当进程收到某些信号时,比如ctrl +C

  • 3.最后一个线程对取消(cancellation)请求做出相应

不管进程如何终止,最后都会执行内核中的同一段代码,这段代码和相应进程关闭所有打开描述符,释放它所使用 的存储器等。 对上述任一一种终止情形,我们都希望终止进程能够通知其父进程它是如何终止的。对于三个终止函数(exit, _exit 和 _ Exit),实现这一点的方法是,将其退出状态(exit status)作为参数传送给函数,在异常终止情况下,内核(不是 进程本身)产生一个指示其异常终止原因的终止状态(termination status)。在任意一种情况下,该终止进程的父进 程都能用wait或waitpid函数取得终止状态。

#include <stdlib.h>
void exit(int status);
#include <unistd.h>
void _exit(int status);
#include <stdlib.h>
void _Exit(int status);

标签:cnt,pid,----,终止,exit,Linux,进程,include
From: https://blog.csdn.net/qq_63556165/article/details/141088071

相关文章

  • 从经济角度来看历史战争,从历史角度来看经济周期
    该文主要通过上世纪二战前的两个历史事件,来聊聊经济的周期萧条和复苏。从经济周期看历史战争,从历史战争看经济周期。这才是一个整个大循环,也就是人们常说的康波周期鉴于多数财经媒体对这个机构的描述太课本化,太简单,存在一些误解,所以该文要结合历史上发生过的事情,把加息......
  • Linux学习记录(十一)———进程间的通信(消息队列)
    文章目录4.消息队列4.1特点4.2.相关函数ftok函数消息队列进程间的通信消息队列全双工通信4.消息队列消息队列,是消息的链表,存放在内核中,一个消息队列由一个标识符(队列ID)来标识。查看消息队列指令ipcs-q4.1特点消息队列是面向记录的,其中的消息具有特......
  • 使用云服务器部署项目----保姆级教程
    1.注册云服务器首先需要一个云服务器2.登录云服务器大家在选择服务器版本的时候尽量选择CentOS7的版本3.注册宝塔Linux面板安装宝塔时选在线安装,输入ip密码就可以自动安装了安装完成后会弹出宝塔访问链接和用户名密码在登录宝塔面板之前,在平台上随便开启一个端口,作为......
  • 该如何面对大量的简历筛选和繁琐的面试流程???
    在当今这个人才竞争激烈的时代,招聘工作变得越来越复杂和具有挑战性。HR在招聘过程中需要从成百上千的简历中筛选出符合岗位要求的候选人,然后面试官通过面试进一步评估他们的技能和文化适应性。过程不仅耗时而且效率低下,尤其是对于大型企业而言,面对海量的简历和面试,如何快速而准......
  • JAVA常用API
     目录1.Math1.1Math类概述1.2Math中方法的调用方式1.3Math类的常用方法2.System 2.1System类的常用方法2.2示例代码3.Object类的toString方法3.1Object类概述3.2查看源代码的方式3.3重写toString方法的方式3.4toString方法的作用4.Object类的equals方......
  • 不会吧不会吧,身为HR的你还不知道智能招聘???
    身为HR的你是否遇到这样的困惑,每天面对大量的简历等着你去筛选,选出基本符合岗位需求的然后再邀请到线下面试,流程重复且工作量大,还不一定能找到符合所要的条件,这时候我们可以适当借助已有的智能工具,来辅助我们,帮助我们提高招聘的效率以及减少招聘的成本。那么在AI发展迅速的时......
  • 在繁忙的编码生活中寻找平衡:高效工作与持续学习的艺术
    目录前言1.高效编码实践:提升工作效率的关键1.1代码复用与模块化设计1.2持续集成与自动化测试2.时间管理技巧:合理规划工作与学习时间2.1番茄工作法与专注力管理2.2时间块规划:分配专属的学习时间3.学习路径选择:广泛涉猎还是专注深入3.1广泛涉猎:适应多变的技术环......
  • 洛谷 P5461 赦免战俘
    赦免战俘题目背景借助反作弊系统,一些在月赛有抄袭作弊行为的选手被抓出来了!题目描述现有2n×2......
  • 常见面试题问题及答案
    常见面试题问题及答案1、什么是API端点(APIendpoint)?说说相关技术点用于访问特定资源或功能的网络地址或URI,代表了API的一个具体操作或服务,并定义了客户端与服务器之间进行交互的方式;1:URI(统一资源标识符),包含了协议(如HTTP/HTTPS)、主机名、路径、查询参数等2:请求方法,GET(获......
  • Bug改不完,迭代总延期,项目又是倒排期怎么破局?
    前言随着互联网的兴起,版本交付越来越频繁,企业开始了敏捷转型、DevOps落地,项目组雄心勃勃,期望产品能按迭代快速交付。然而常见的现象是,到了迭代的最后一天,还有不少Bug来不及修复,迭代无法产生潜在可交付成果,延期成了必然。然后发现连续几个迭代都是这样,团队没有成就感,士气低落。迭......