C语言fork函数创建新进程的实现方式

Pid_t fork(void)l功能:创建一个新进程。
返回值:一次调用两次返回,失败返回-1(当进程数超出系统的限制,创建就会失败)。
1、两此返回分别是进程ID和0,父进程会拿到子进程的ID,子进程返回0,借此可以分别出父子进程,编写不同的处理分支
2、通过fork创建的子进程就是副进程的副本(拷贝)
子进程会获取父进程的数据段,BSS段、堆、栈、IO流(共享文件指针和文件描述符)
、缓冲区,与父进程共享代码段。
3、子进程会继承父进程的信号处理方式。
4、fork函数调用后,父子进程各自执行,谁先返回不一定,谁先返回不一定,但可以使用一些手法来确定谁先

#include <stdio.h>
#include <unistd.h>

int main()
{
	pid_t id = fork();
	if(0 == id)
	{
		// 子进程分支
		printf("我是子进程%u,我的父进程是%u\n",getpid(),getppid());
		for(;;)
		{
			printf("*\n");
			sleep(1);
		}
	}
	else
	{
		// 父进程分支
		printf("我是父进程的%u,我的子进程是%u\n",getpid(),id);
		for(;;)
		{
			printf("#\n");
			sleep(1);
		}
	}![在这里插入图片描述](https://img-blog.csdnimg.cn/20190807222556418.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值