linux下同时创建多个进程

同时创建多个进程

      • 我的问题及解决
      • 查看进程命令

好久没有写博客了,最近在学校做实验的时候遇到一个同时创建两个进程的实验,让我对多进程编程有了新的认识,就一个进程退出的问题让我纠结了几天!

我的问题及解决

#include
#include
#include

int main(int argc, char **argv)
{
    pid_t        pid;

    printf("the parent process id[%d]\n", getppid());

    pid = fork();
    if(pid < 0)
    {
          printf("failture\n");
          return -1;
    }
    else if(pid == 0)
    {
          printf("child1 start running, the id[%d]\n", getpid());
          return 0;
          //exit(1);
    }
    pid = fork();
    {
         printf("failture\n");
         return -1;
    }
    else if(pid == 0)
    {
        printf("child2 start running, the id[%d]\n", getpid())
        return 0;
        //exit(1);
    }
    return 0;
}

刚开始创建进程时总会出现乱码,进程抢占的问题没有规定,也就是究竟哪个进程先运行没有约定,所以运行的结果是乱的
在这里插入图片描述然后这样的话,在创建第一个子进程后,这时的父进程和子进程不知道哪个先运行由系统决定,所以这里便会出现乱的,解决方法就是在创建第一个子进程后return 0或exit(1)让他退出,让父进程继续运行接着创建第二个子进程。
在这里插入图片描述
这时就是有序的运行两个子进程,打印的东西也是按照我们写的内容走的!

同时创建多个子进程其实就是调用多次fork()函数,这里可以用for循环,或者像我这样一个一个的调,但是在创建的之后记得要退出,不然会很乱!

查看进程命令

查看进程的命令我们用的多的就是ps,但是top命令也可以查看,但是它“不纯”。PS工具标识进程的5种状态码: D 不可中断 uninterruptible sleep (usually IO) R 运行 runnable (on run queue) S 中断 sleeping T 停止 traced or stopped Z 僵死 a defunct (”zombie”) process
linux下同时创建多个进程_第1张图片

ps查看正处于Running的进程
在这里插入图片描述
ps aux查看所有的进程:
linux下同时创建多个进程_第2张图片

top命令经常用来监控Linux的系统状况,比如cpu、内存的使用top 运行中可以通过 top 的内部命令对进程的显示方式进行控制。内部命令如下
linux下同时创建多个进程_第3张图片
直接输入top命令如下:
linux下同时创建多个进程_第4张图片
上面显示的第一行是系统运行时间和平均负载,第二行是任务,第三行是目前cpu的状态,第四五行是内存的使用情况,下面的内容就是各个进程的运行情况!

你可能感兴趣的:(linux下同时创建多个进程)