zoukankan      html  css  js  c++  java
  • linux中的fork函数

    fork函数简介

    作用

    创建一个子进程。

    原型

    pid_t fork(void)

    返回值

    失败返回-1;成功返回:① 父进程返回子进程的ID    ②子进程返回 0

    pid_t类型表示进程ID,但为了表示-1,它是有符号整型。(0不是有效进程ID,init最小,为1)

    (注意返回值,不是fork函数能返回两个值,而是fork后,fork函数变为两个,父子需【各自】返回一个。)

    创建一个子进程

    #include <stdio.h>
    #include <unistd.h>
    #include <sys/types.h>
    
    int count = 100;
    
    int main(int argc, const char* argv[])
    {
            pid_t pid;
    
            printf("start: 
    ");
            pid = fork();
            if(pid > 0)
            {
                    printf("I am a parent process, count = %d, pid = %d
    ", count,getpid());
                    count += 10;
                    printf("I am a parent process, count = %d, pid = %d
    ", count,getpid());
            }
            else if(pid == 0)
            {
                    printf("I am a child process, count = %d, pid = %d
    ", count,getpid());
                    count += 1;
                    printf("I am a child process, count = %d, pid = %d
    ", count,getpid());
            }
            printf("finish!
    ");
            return 0;
    }
    View Code

    循环的创建多个兄弟子进程

    #include <stdio.h>
    #include <unistd.h>
    #include <sys/types.h>
    
    int count = 100;
    
    int main(int argc, const char* argv[])
    {
            pid_t pid;
            int i = 0;
            int n = 2;
    
            for(; i < n; i++)
            {
                    pid = fork();
                    if(pid == 0)
                    {
                            break;
                    }
            }
    
            if(i == 0)
            {
                    printf("I am the first child process, pid = %d
    ", getpid());
            }
            else if(i == 1)
            {
                    printf("I am the second child process, pid = %d
    ", getpid());
            }
            else if(i == 2)
            {
                    printf("I am the parent process, pid = %d
    ", getpid());
            }
            else
            {
                    printf("error
    ");
            }
    
            return 0;
    }
    View Code
  • 相关阅读:
    Javascript获取本周,本月,本季,本年,上月,上周,上季,去年,上二周,上二月
    SQL SERVER 2008 评估期已过的解决办法
    习惯那些“小事”
    Oracle 测试语句
    整理js常用按键相关代码
    .NET 学习笔记
    lamda表达式学习
    使用Html.DropDownList
    ibatis
    MyBatis
  • 原文地址:https://www.cnblogs.com/xumaomao/p/13056192.html
Copyright © 2011-2022 走看看