zoukankan      html  css  js  c++  java
  • 一起talk C栗子吧(第七十八回:C语言实例--创建进程)


    各位看官们,大家好。上一回中咱们说的是DIY ls命令续的样例。这一回咱们说的样例是:创建进程。闲话休提。言归正转。

    让我们一起talk C栗子吧!

    看官们。关于进程的概念,我们简单做个简单的介绍:进程就是在系统中执行着的程序。比方我们正在使用的vim就是一个进程。我们能够使用ps命令查看一下,在终端中输入ps x命令,能够得到以下结果:

      PID TTY      STAT   TIME COMMAND
     1550 ?        Ssl    0:00 cinnamon-session --session cinnamon
     ...                              //其他系统相关的进程,不一一列出
     5276 pts/2    Ss     0:00 bash   //我们使用的终端也是一个进程
     5297 pts/2    S+     0:00 vim    //我们使用的vim也是一个进程
     5298 pts/1    R+     0:00 ps x   //ps命令本身也是一个进程

    进程是一个比較抽象的概念。通过上面的实际展示,我想大家应该对进程有个直观的印象了吧。回忆我当年听到进程这个东西的时候,还在使用windows,于是便打开任务管理器来观看进程。

    如今想想,当时这样的做法也不错,假设有哪位看官在使用Windows系统,能够这样试试,哈哈。

    我们在终端中输入某个命令,然后敲下回车时就创建了一个进程。刚才,我们使用ps命令查看进程就是在系统中创建了一个进程,进程名字叫:ps,也就是上面执行结果中的COMMAND这一列。

    进程的名字都是字母,有时候比較长(比方上面执行结果中的第一个进程名就比較长)。因此。系统对进程进行编号管理。

    进程的编号叫作PID,也就是进程ID。上面执行结果中的第一列就是进程ID。

    进程ID是从0開始的整数,不同的系统对于创建的进程数量有限制,因此,进程ID是一个有限的整数。在这些ID中0和1是特殊的ID。系统保留下来,供自己使用。基于怎么使用,咱们以后再介绍。

    看官们,如今知道怎样创建进程了吗?“输入命令而且执行“。

    这位看官说的全然正确。

    接下来我们看看代码中是怎样创建进程的。在实际的代码中使用fork()函数创建进程

    该函数执行成功时会返回一个大于0的值,该值就是新创建进程的PID。假设执行失败。那么返回-1.接下来咱们举样例进行说明。

    把以下的代码写入文件里保存,然后编译而且执行。

    #include<unistd.h>
    #include<stdio.h>
    
    int main()
    {
        pid_t pid;
    
        pid = fork();
    
        sleep(5);
    
        if(pid > 0)
            printf("pid is: %d 
    ",pid);
        else
            return 0;
    
    }

    以下是程序的执行结果。请大家參考:

    ./s            //执行编译完的程序
    pid is: 5456   //显示新创建进程的PID

    又一次打开一个终端,而且使用ps命令查看当前系统中的进程,结果例如以下:

      PID TTY      STAT   TIME COMMAND
     1550 ?

    Ssl 0:00 cinnamon-session --session cinnamon ... //其他系统相关的进程。不一一列出 5375 pts/1 S+ 0:00 vim Ex060_CreatProcess.c 5434 pts/3 Ss 0:00 bash 5455 pts/2 S+ 0:00 ./s //该进程是我们编译后的程序s 5456 pts/2 S+ 0:00 ./s //从PID能够看出,该进程是程序s创建的新进程 5457 pts/3 R+ 0:00 ps x

    看官们,正文中就不写代码了,具体的代码放到了我的资源中,大家能够点击这里下载使用。

    各位看官。关于创建进程的样例咱们就讲到这里。欲知后面还有什么样例,且听下回分解。


  • 相关阅读:
    郊原的青草
    基本类型接口(二、EIMI)
    一个简单的委托
    基本类型泛型(二)
    基本类型可空值类型
    基本类型委托(二)
    类型的设计事件
    原码、补码和反码
    基本类型接口(一、您了解接口继承吗?)
    arcgis api for flex 开发入门(一)环境搭建<转>
  • 原文地址:https://www.cnblogs.com/jzssuanfa/p/7323975.html
Copyright © 2011-2022 走看看