linux下同时创建多个进程

这篇博客分享了在Linux环境下如何同时创建并有序执行多个进程的经验。通过解决进程抢占导致的运行混乱问题,作者指出在创建第一个子进程后,父进程应退出以确保后续进程按预期顺序运行。此外,还介绍了使用`fork()`函数创建进程以及利用`ps`和`top`命令查看系统进程的方法。

同时创建多个进程

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

我的问题及解决

#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>

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
在这里插入图片描述

ps查看正处于Running的进程
在这里插入图片描述
ps aux查看所有的进程:
后面还有很多,我就没有截图了

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值