首页 > 其他分享 >fork函数

fork函数

时间:2024-10-17 21:19:29浏览次数:10  
标签:fork 函数 getppid pid getpid 进程

frok函数

目录

frok函数

getpidd/getppid函数


fork函数 

1.一个进程,包括代码、数据和分配给进程的资源。
2.fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。
3.一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进 程的所有值都复制到新的新进程中,只有少数值与原来的进程的值不同。相当于克隆了一个自己。

2.getpid/getppid函数

getpid:得到当前进程的PID
getppid:得到当前进程的父进程的PID

代码解析 :

使用fork函数创建了父子进程,用参数pid接收返回值,并通过判断参数pid的值让父子进程分别执行不同的代码,并用getpid和getppid函数得到当前进程的PID和当前进程的父进程的PID。 
#include<stdio.h>
#include <sys/types.h>
#include <unistd.h>
int main(int argc,int *argv[])
{
pid_t pid;
int i=0;
pid =fork();
if(pid>0)
{
printf("this is father process %d \n",getpid());
}
else if (pid==0)
{
printf("this is child process %d ppid is %d \n",getpid(),getppid());
}
for(i=0;i<4;i++)
printf("i=%d\n",i);
return 0;
}
执行完代码后可以看到是先执行父进程的代码,在返回来执行子进程的代码,并且返回时从代码开始位置开始执行。

标签:fork,函数,getppid,pid,getpid,进程
From: https://blog.csdn.net/m0_74224228/article/details/143028381

相关文章

  • 一.函数指针的创建 二.函数指针的使用
    一变量有地址,数组也有地址那么函数是否有地址呢?我们可以来试一下 我们可以看到函数有地址 之前我们知道对数组取地址是个地址,数组名拿到的也是个地址那对于函数来说呢?是不是也存在函数名和取地址函数名两个地址呢?我们可以通过代码来验证一下  那么这俩地址代表的有......
  • Hopfield 神经网络中能量函数的含义及其变化值 ΔE≤0 的证明
    Hopfield神经网络中能量函数的含义及其变化值\(\DeltaE\leq0\)的证明Ciallo~(∠・ω<)⌒★我是赤川鹤鸣,本期是学习Hopfield神经网络时,遇到能量函数的相关知识时的思考和总结,希望有能帮助到你.Hopfield神经网络中,能量函数的定义如下\[E=-\dfrac{1}{2}\sum_{i......
  • C语言函数
    1.C语言函数的定义C源程序是由函数组成的。最简单的程序有一个主函数main(),但实用程序往往由多个函数组成,由主函数调用其他函数,其他函数也可以互相调用。函数是C源程序的基本模块,程序的许多功能是通过对函数模块的调用来实现的,学会编写和调用函数可以提高编程效率。函数的定......
  • SQL 分析函数看这篇函数就够了
    数据库SQL分析函数/窗口函数专题,绝对值得收藏!此专题几乎涵盖所有主流数据库,如Oracle、Hive、MySQL8.0、MaxComputer等。在企业面试中,分析函数问题更是备受青睐,无论是笔试还是面试,基本都绕不开。分析函数主要分为以下四类:聚合分析函数SUM:用于计算组中表达式的累积......
  • 实验三: JavaScript数组与函数
    实验目的熟练掌握常用JavsScript的数组、自定义函数、作用域。实验内容数组定义及元素获取;数组的遍历;数组内容的增删改查;数组的排序;数组的反转、截取、合并、元素拼接函数的声明;函数的调用;匿名函数;作用域。实验步骤:数组定义及元素获取;数组的遍历;数组内容的增删改查......
  • C语言[数组作函数参数]
    输入10个整数作为一个数组,要求判断并且输出其中最大的值和它是数组中的第几位数。本次代码调用max函数数组元素为a[1]~a[9]代码如下:#include<stdio.h>intmain(){  intmax(intx,inty);  inti,m,n,a[10];  printf("enter10intergernumber:"); ......
  • MySQL 【日期】函数大全(六)
    目录1、TIME_FORMAT() 按照指定的格式格式化时间。2、TIME_TO_SEC() 将指定的时间值转为秒数。3、TIMEDIFF() 返回两个时间之间的差值。4、TIMESTAMP() 累加所有参数并将结果作为日期时间值返回。5、TIMESTAMPADD() 将指定的时间间隔加到一个日期时间值上并返回结果......
  • 鸿蒙开发黑科技:前端页面轻松调用 ArkTS 函数
    本文旨在深入探讨华为鸿蒙HarmonyOSNext系统(截止目前API12)的技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。在鸿蒙开发中,前端页面(HTML)有时候需要......
  • DiTAC:不知如何提升性能?试试这款基于微分同胚变换的激活函数 | ECCV'24
    非线性激活函数对深度神经网络的成功至关重要,选择合适的激活函数可以显著影响其性能。大多数网络使用固定的激活函数(例如,ReLU、GELU等),这种选择可能限制了它们的表达能力。此外,不同的层可能从不同的激活函数中受益。因此,基于可训练激活函数的兴趣日益增加。论文提出了一种基于有......
  • Z函数(扩展KMP)
    扩展KMP(Z函数)Z数组简单理解\(Z[i]\)表示字符串从i出发,与整体相比有多长的公共前缀aaabaac7210210可以先理解马拉车再来看首先,设置两个类似的东西,关键点\(c\)和最右边界\(r\),表示\(Z[c]\)是目前所有\(Z\)中,\(i+Z[i]\)最右边的那个对于: r01......