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编程开发环境
163 0
|
1月前
|
算法 Unix 数据安全/隐私保护
Python编程--UNIX口令破解机
Python编程--UNIX口令破解机
|
5月前
|
Unix
Unix环境高级编程(第三版)中apue.h头文件及其依赖安装教程
Unix环境高级编程(第三版)中apue.h头文件及其依赖安装教程
109 0
|
Unix Shell Python
unix高级编程-fork和execve
unix高级编程-fork和execve
55 0
|
Ubuntu Unix Shell
unix高级编程-fork之后父子进程共享文件
unix高级编程-fork之后父子进程共享文件
59 0
|
Unix Linux
unix高级编程-僵尸进程和孤儿进程
unix高级编程-僵尸进程和孤儿进程
60 0
|
Unix Shell Windows
UNIX Shell 编程(1)
版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/4070059 UNIX Shell 编程(1) Unix只能识别3种基本的文件类型:普通文件、目录文件和特殊文件。
779 0
|
Unix Shell
UNIX Shell 编程(2)
版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/4072516 UNIX Shell 编程(2)   字符匹配星号(*)匹配0个以上的字符;而问号(?)则匹配1个字符。
653 0