unix编程-fork

简介: unix编程-fork

进程状态

进程因为创建或时间片轮转(抢断)而就绪,因为调度而运行,因为i/o操作过长而等待。

linux内核态实现

linux创建0号进程用来调度其他进程

通常调度第一个1号进程(用户进程)

#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <signal.h>
#include <errno.h>
int main(void)
{    
    pid_t pid;
    //signal(SIGCHLD,SIG_IGN);
    printf("befor fork pid:%d \n",getpid());
    pid = fork();
    if(pid == -1)
    {
        printf("pid<0 err.\n");
        return -1;
    }
    else if(pid == 0)
    {    
         printf("child:%d,parent:%d\n",getpid(),getpid());            
    }
    printf("fork after...\n");
    return 0;
}

操作系统fork大家可以看我前面的博客,这个章节以实践为主

#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <signal.h>
#include <errno.h>
int main(void)
{    
    pid_t pid;
    signal(SIGCHLD,SIG_IGN);
    printf("befor fork pid:%d \n",getpid());
    int a = 10;
    pid = fork();
    if(pid == -1)
    {    
        printf("pid<0 err.\n");
        return -1;
    }
    else if(pid == 0)
    {    
        a++;
         printf("child:%d,parent:%d\n",getpid(),getppid());            
        printf("child a:%d\n",a);
    }
    else if(pid > 0){
        a++;
        a++;
         printf("parent:%d\n",getpid());            
        printf("parent a:%d\n",a);
        sleep(1);
    }
    printf("fork after...\n");
    return 0;
}

这里可以看到stack并不共享,每个并发的进程都有自己的stack

相关文章
|
Unix Linux C语言
计算机操作系统实验一 Unix/Linux编程开发环境
计算机操作系统实验一 Unix/Linux编程开发环境
186 0
|
19天前
|
Unix Shell API
组合思维:Unix 哲学到底给现代编程带来哪些重要启示?
Unix哲学提供了一套简洁而强大的设计理念,这些理念在现代编程中依然具有重要的指导意义。通过模块化设计、组合工具、避免过早优化以及注重可复用性和可扩展性,开发者可以构建出更高效、更健壮的软件系统。希望本文能够帮助读者深入理解Unix哲学,并在实际开发中应用这些宝贵的设计原则。
43 25
|
5月前
|
算法 Unix 数据安全/隐私保护
Python编程--UNIX口令破解机
Python编程--UNIX口令破解机
47 1
|
9月前
|
Unix
Unix环境高级编程(第三版)中apue.h头文件及其依赖安装教程
Unix环境高级编程(第三版)中apue.h头文件及其依赖安装教程
187 0
|
Unix Shell Python
unix高级编程-fork和execve
unix高级编程-fork和execve
79 0
|
Ubuntu Unix Shell
unix高级编程-fork之后父子进程共享文件
unix高级编程-fork之后父子进程共享文件
79 0
|
Unix Linux
unix高级编程-僵尸进程和孤儿进程
unix高级编程-僵尸进程和孤儿进程
74 0
|
Unix Shell Windows
UNIX Shell 编程(1)
版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/4070059 UNIX Shell 编程(1) Unix只能识别3种基本的文件类型:普通文件、目录文件和特殊文件。
789 0
|
10月前
|
Unix Shell Linux
在Unix/Linux操作系统中,Shell脚本广泛用于自动化任务
在Unix/Linux操作系统中,Shell脚本广泛用于自动化任务
98 2
|
24天前
|
安全 Unix Linux
Unix:Linux的“祖师爷”
Unix的诞生 Unix操作系统诞生于1969年,由肯·汤普逊(Kenneth Lane Thompson)和丹尼斯·里奇(Dennis MacAlistair Ritchie)在AT&T的贝尔实验室开发。其初衷是为了在闲置的PDP-7计算机上开发一个简单的操作系统,以便进行编程和游戏。最初的Unix是用汇编语言编写的,但随后为了更高效的开发和更好的可移植性,里奇和汤普逊用C语言重写了Unix的大部分代码,这奠定了Unix的基础,并促进了C语言的广泛应用。
31 2