zoukankan      html  css  js  c++  java
  • 2.1 linux C 进程与多线程入门--(1)进程和程序的区别

    进程和程序的区别:

    j进程是活动的程序,而程序是一个代码的集合。进程是加载到内存中的程序,而程序没有加载到内存中,只是在磁盘上存储着。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    #include<sys/types.h>
    #include<unistd.h>
    #include<stdio.h>
     
    int main()
    {
    pid_t pid ;
    char * message;
    printf("fork process staring ");
    pid = fork();
     
    switch(pid)
    {
    case -1:
    perrro("fork failed ");
    exit(1);
    case 0:
    mesage = "this is the child ";
    n = 5;
    break;
    default :
    message = "this is the parent ";
    n = 3;
    break;
    }
    for(; n>0 ;n-=1
    {
    puts(message);
    sleep(1);
    }
    exit(0);
    }

    (1)pid_t 是进程号,是唯一表示进程的id。

    (2)pid_t fork(void)函数 包含的头文件:#include<unistd.h>

    #include<sys/types.h>

    调用fork可以创建一个全新的进程,这个系统调用对当前进程进行复制。在进程表里创建一个新的项目,新项目的许多属性与当前进程是相同的。新进程河源进程几乎一样样的。执行的也是相同的代码,但新进程有自己的数据空间自己的环境等。

    (3)程序调用了fork函数的时候被分成了两个进程,。在父进程里,fork函数返回新进程的pid 进程号,新进程则返回0,这个可以作为区分父子进程的一句。

    父进程和子进程的执行的代码都和fork.c里的代码一致。但是,fork根据不同进程返回不同的pid,那么父子进程的实际有效代码部分是不同的,下面我只写实际有效的代码:



    也就是说,进程会根据pid的不同,有选择的执行各自的代码。这个程序将产生两个进程,新进程(子进程)会输出5此,而父进程3此。父进程会在子进程打印完他的全部信息之前推出。

    提醒大家一下:源文件虽然只有一个,但是运行的进程是两个,而不是1个。fork()函数在父进程里创建了新的进程,两个进程执行的是相同的代码,即代码是一样的。

  • 相关阅读:
    tomcat常见错误
    tomcat——大致简介和执行过程
    JSON的基本操作
    VS Code 终端显示问题
    VS Code在本地进行调试和打开本地服务器
    重做了一下我的音乐播放器
    Treimu更新记录1.2.9.0
    Android开发中Eclipse里的智能提示设置
    一次面试经历
    正确处理WPF中Slider值改变事件的方式
  • 原文地址:https://www.cnblogs.com/yjds/p/8597454.html
Copyright © 2011-2022 走看看