zoukankan      html  css  js  c++  java
  • C语言 进程控制---创建进程fork()函数

    #include "sys/types.h"
    #include "stdio.h"
    #include "stdlib.h"
    #include "unistd.h"
    int main()
    {
    	
    	pid_t pid;
    	/*
    		需要引入sys/types.h 和 unistd.h两个头文件
    		创建进程 返回子进程的id 创建失败,返回-1;并提示错误信息,
    		EAGAIN:表示fork()函数没有足够的内存用于复制父进程的分页表和进程结构数据
    		ENOMEM:表示fork()函数分配必要的内核数据结构时,内存不足
    		fork()函数会复制进程的所有资源,包括进程环境、内存资源,不与父进程共享
    	*/
    	int var=1;	//测试是否共享堆栈段
    	pid = fork();
    	if (pid<0)
    	{
    		printf("fork error!
    ");
    	}
    	else if (pid==0)
    	{
    		var=var+1;
    		printf("in the child process! pid:%d,var:%d
    ",pid,var);
    	}
    	else
    	{
    		var=var+3;
    		printf("in the parent process pid:%d,var:%d
    ",pid,var);
    	}
    	exit(0);
     }

    打印结果:

    in the child process! pid:0,var:2
    in the parent process pid:4316,var:4
    [Finished in 0.5s]

    由此看出 fork()没有共享内存资源,仅仅是复制了父进程的所有资源


  • 相关阅读:
    List接口的实现类
    Java 容器概述
    PayPal支付接口方式(checkout)集成
    Java Bio、Nio、Aio区别
    Java Aio
    Java Nio
    Java Bio
    Java Io流
    Java 23种设计模式
    SQL检测超时工具类
  • 原文地址:https://www.cnblogs.com/zhengwenqiang/p/6804669.html
Copyright © 2011-2022 走看看