Linux进程控制1-创建子进程

Linux进程控制-创建进程/进程共享

  • 创建子进程
#include<unistd.h>
#include<stdio.h>
#include<stdlib.h>

int main()
{ 
	printf("*****************\n");
	/*******************************************************
	*函数:fork() 
	*头文件:#include <unistd.h>
	*格式:pid_t fork(void);//创建的子进程会从fork()函数向下执行,父进程fork()之前的函数,子进程也有,但不执行.此时子父进称共同抢占cpu的执行权限.
	*作用:创建子进程
	*返回值:两个返回值,一个是父进程返回的子进程的pid值,若父进程返回-1表示子进程创建失败;另一个是子进程返回的0,表示子进程创建成功 
	********************************************************/
  	/*******************************************************
   	*函数:getpid() 
   	*头文件:#include <unistd.h> #include <sys/types.h>
    	*格式:pid_t getpid(void);//获取当前进程的ID;
	*      pid_t getppid(void);//获取当前进程的父进程的ID;
    	*返回值:对应进程的ID值
   	********************************************************/
      
	//创建多个子进程,注意:不能子进程产生子进程.
	int pid;
	int i;
	for( i=0;i<5;i++)
	{
		pid=(int)fork();
		if(pid==-1)
		{
			perror("fork error:");
			exit(1);//#include<stdlib.h>
		}
		//防止子进程产生子进程.
		if(pid==0)
		{
			break;
		}
	}
	//子进程干子进程的事
	if(i<5)
	{
		printf("##########\n");
return 0;
		printf("%dth进程的ID为%d\n",i+1,getpid());
	}
	//一个父进程产生多个子进程.没有5个父进程.
	else{
		sleep(1);//这里不加sleep(),会造成子进程,父进程,shell进程随机抢占cpu,造成下面图片的运行结果.
		printf("父进程的ID为%d\n",i,getppid());
	}
	if(i=5&&pid>0)
	printf("****************\n");
	return 0;
}
  • 进程共享
    在这里插入图片描述

1>父子进程遵循:读时共享(公用),写时复制的原则(各用个的).
2>父子进程间共享:文件描述符(fd);mmap建立的映射区

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值