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

相关文章
|
7月前
|
Unix Shell Python
unix高级编程-fork和execve
unix高级编程-fork和execve
35 0
|
7月前
|
Ubuntu Unix Shell
unix高级编程-fork之后父子进程共享文件
unix高级编程-fork之后父子进程共享文件
39 0
|
7月前
|
Unix Linux
unix高级编程-僵尸进程和孤儿进程
unix高级编程-僵尸进程和孤儿进程
43 0
|
Unix Java Shell
UNIX Shell 编程(6)
版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/4084651 UNIX Shell 编程(6)   变量UNIX Shell允许把值存在变量中。
902 0
|
Unix Shell Windows
UNIX Shell 编程(1)
版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/4070059 UNIX Shell 编程(1) Unix只能识别3种基本的文件类型:普通文件、目录文件和特殊文件。
765 0
|
Unix Shell
UNIX Shell 编程(2)
版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/4072516 UNIX Shell 编程(2)   字符匹配星号(*)匹配0个以上的字符;而问号(?)则匹配1个字符。
638 0
|
Unix Shell 存储
UNIX Shell 编程(3)-UNIX Shell的正则表达式
版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/4073384 UNIX Shell 编程(3)-UNIX Shell的正则表达式   匹配任何单个字符:句点(.)比如:r.表示匹配r后跟任一个字符的模式。
751 0
|
Unix Shell Perl
UNIX Shell 编程(4)
版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/4074997 UNIX Shell 编程(4)   cut命令可以从数据文件或者命令的输出中截取所需的数据域。
1034 0
|
Unix Shell Perl
UNIX Shell 编程(5)
版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/4076089 UNIX Shell 编程(5)   过滤器tr用来转换来自标准输入的字符。
682 0
|
1月前
|
缓存 网络协议 Unix
Linux(UNIX)五种网络I/O模型与IO多路复用
Linux(UNIX)五种网络I/O模型与IO多路复用
122 0