努力学习Day22【Linux进程部分】

本文介绍了Unix/Linux系统中用于创建新进程的fork函数,通过示例代码展示了如何辨别父子进程,主要关注点在于进程的pid标识。通过比较fork前后getpid()的值,可以确定进程的身份,从而实现父子进程的区分和相应操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 今天需要学习的是父子进程相关的内容:

Fork函数:

对于fork函数我们需要使用手册来查看如何使用,fork函数能够创建一个新的进程(子进程),基于原来的进程(父进程)。

我们先看一下fork函数能带来什么:

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

int main()
{

	pid_t pid;
	pid=getpid();
	fork();

	printf("my pid is %d\n",pid);
	while(1);

	return 0;
}

 可以看到我们使用的fork函数后输出了两个结果,这就代表了有一个结果是由于fork函数创造的,这个新创建的便是子进程,但是我们如何去分辨一个子进程和父进程呢?

答案就是昨天学习的内容,每个进程都有它独特的pid,我们可以用pid来分辨他们。

我们废话不多说,来编写实战看看代码如何使用:

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

int main()
{

	pid_t pid;
	pid=getpid();
	fork();

	if(pid==getpid())  //当前进程和获取的进程一致则为父进程
	{
		printf("this is father print,father pid=%d\n",pid);
	}
	else  //当前进程和获取的初始进程不一致,则为子进程
	{
		printf("this is child print,child pid= %d\n",getpid());  
	}
	return 0;
}

 我们先来编译运行:

可以看到我们的父子进程的pid号不一致,那么我们就可以通过这种方式去判断父子进程到底是哪个了。

另外我们也可以这么表示:

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

int main()
{

	pid_t pid;
	pid_t pid2;
	pid=getpid();
	printf("before fork: pid = %d\n",pid);//fork函数前pid号,即得到父进程pid
	fork();  //可以理解为生了个孩子(子进程)
	pid2=getpid(); //父子获取的pid不一样

	if(pid==pid2)
	{
		printf("this is father print");
	}
	else
	{
		printf("this is child print,child pid= %d\n",getpid());
	}
	return 0;
}


 OK,多说无益,我们来看一看运行的结果如何:

 这也是一个好方式。

完成!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值