Linux--进程--vfork与fork区别

这篇具有很好参考价值的文章主要介绍了Linux--进程--vfork与fork区别。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

vfork:

所需头文件:
#include <sys/types.h>

#include <unistd.h>

pid_t vfork(void);
功能:

vfork() 函数和 fork() 函数一样都是在已有的进程中创建一个新的进程,但它们创建的子进程是有区别的。

参数:

返回值:

成功:子进程中返回 0,父进程中返回子进程 ID。pid_t,为无符号整型。

失败:返回 -1。

与fork区别:

1.fork(): 父子进程的执行次序不确定。

   vfork():保证子进程先运行,在它调用 exec(进程替换) 或 exit(退出进程)之后父进程才可能被调度运行。

2.fork(): 子进程拷贝父进程的地址空间,子进程是父进程的一个复制品。

   vfork():子进程共享父进程的地址空间(准确来说,在调用 exec(进程替换) 或 exit(退出进程) 之前与父进程数据是共享的)

总结:vfork先运行子进程,遇到exit退出运行父进程;

            fork父子进程争夺先后运行次序


代码:

注意退出子进程要用exit函数,不然会破坏内存;造成data错误

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


int main()
{
	pid_t pid;
	int fd = 0;
	int data = 0;
	while(1){
		printf("please input data,1 creats child process\n");
		scanf("%d",&data);

		if(data == 1){

			fd = fork();

			if(fd==0){

				while(1)



				{

					printf("do net request,pid = %d\n",getpid());
					sleep(2);


				}
			}
		}
		else 
		{	
			printf("do nothing  wait please \n");
		}

	


	}
	return 0;
}

结果:

Linux--进程--vfork与fork区别,嵌入式Linux学习,linux文章来源地址https://www.toymoban.com/news/detail-693686.html

到了这里,关于Linux--进程--vfork与fork区别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux学习(嵌入式硬件知识)

           GPU(Graphics Processing Unit,图形处理单元)和 CPU(Central Processing Unit,中央处理单元)是计算机中两种不同的处理器。它们在功能、设计和用途上有所不同。 CPU(中央处理单元): CPU 是计算机中的主要处理器,负责执行计算机程序中的指令。 CPU 主要用于执行通用计算

    2024年04月27日
    浏览(38)
  • ARM+LINUX嵌入式学习路线

    嵌入式学习是一个循序渐进的过程,如果是希望向嵌入式软件方向发展的话,目前最常见的是嵌入式Linux方向,关注这个方向,大概分3个阶段: 1、嵌入式linux上层应用,包括QT的GUI开发 2、嵌入式linux系统开发 3、嵌入式linux驱动开发 嵌入式目前主要面向的几个操作系统是,

    2024年02月02日
    浏览(51)
  • 嵌入式学习day22 Linux

    文件IO:     1. lseek        off_t lseek(int fd, off_t offset, int whence);        功能:             重新设定文件描述符的偏移量        参数:             fd:文件描述符             offset:偏移量             whence:                 SEEK_SET    文件开头                 SEEK_CUR

    2024年02月21日
    浏览(30)
  • 零到大师:嵌入式Linux学习书单分享

    大家好,我是知微! 上一篇推荐的书单嵌入式软件必读10本书_单片机篇,收到反响很好。再推荐一篇嵌入式Linux相关的书单。 鸟哥的Linux系列适合零基础小伙伴,从电脑基础到文件系统、shell脚本等等,通俗易懂。作者写作风格生动幽默,不拘一格。虽然书有点厚,但对于新

    2024年02月22日
    浏览(33)
  • 嵌入式Linux学习DAY21--目录io

    对主函数传参: ./a.out +参数1(指针数组),参数2....... 在代码中,要写成 int main(参数数量,const char *指针数组) lseek(a,b,c):                功能:重新设定文件描述符的偏移量                参数:a:文件描述符                           b:偏移量         

    2024年02月20日
    浏览(34)
  • 嵌入式学习之进程

    1.进程间通信概述 UNIX系统IPC是各种进程通信方式的统称。 2.管道通信原理 特点: 1.它是半双工的(即数据只能在一个方向上流动),具有固定的读端和写端。 2.它只能用于具有亲缘关系的进程之间通信(也是父子进程或者兄弟进程之间)。 3.它可以看成是一种特殊文件,对

    2024年02月10日
    浏览(26)
  • 要单片机和RTOS有必要学习嵌入式linux吗?

    学习嵌入式 Linux 是否有必要,取决于你的项目需求和职业发展目标。以下是一些考虑因素: 项目需求:如果你的项目需要处理复杂的网络、文件系统、多任务管理等功能,嵌入式 Linux 可能是更适合的选择。Linux 提供了丰富的开源软件包和驱动程序,可以加速开发过程并提供

    2024年02月14日
    浏览(43)
  • 【嵌入式环境下linux内核及驱动学习笔记-(10-内核内存管理)】

    对于包含MMU(内存管理单元)的处理器而言,linux系统以虚拟内存的方式为每个进程分配最大4GB的内存。这真的4GB的内存空间被分为两个部分–用户空间 与 内核空间。用户空间地地址分布为0~3GB,剩下的3 ~ 4GB 为内核空间。如下图。 用户进程通常只能访问用户空间的虚拟地址

    2024年02月11日
    浏览(40)
  • 《嵌入式系统开发实践》实验三 进程通信

    一、 实验目的 掌握无名管道与有名管道的进程通信; 掌握消息队列的读写操作; 掌握共享内存的通信机制。 二、 实验任务与要求 管道读写程序的编写与应用; 消息队列的发送和接收程序的编写和应用; 共享内存的创建、连接和分离编程和应用。 三、 实验工具和环境

    2024年02月07日
    浏览(33)
  • 【嵌入式环境下linux内核及驱动学习笔记-(5-驱动的并发控制机制)】

    在讨论并发前,先要了解以下几个概念:执行流,上下文,共享与临界等。 什么叫执行流: 【执行流】:有开始有结束总体顺序执行的一段代码 又称 上下文 。 上下文分类: 【任务上下文】:普通的,具有五种状态(就绪态、运行态、睡眠态、暂停态、僵死态),可被阻塞

    2023年04月21日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包