首页 > 系统相关 >父子进程

父子进程

时间:2024-02-22 20:47:27浏览次数:27  
标签:status include pid 父子 printf 进程 pi waitpid

父子进程

#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/wait.h>
int main(void)
{
	int i=0,j=0,k=0,n=0;;
	pid_t pid[5];
	pid_t pid_d[5];
	pid_t pid_d_cpy[5];
	pid_t pid_cpy[5];
	pid_t pi;
	int *status;
	printf("pid=%d ppid=%d\n",getpid(),getppid());
_go:
	pid[j]=fork();
	if(pid[j]==0)
	{
			printf("i=%d pid=%d ppid=%d\n",i,getpid(),getppid());
_DOT:
			pid_d[k]=fork();
			if(pid_d[k]==0)
			{
					printf("i=%d pid=%d ppid=%d\n",i,getpid(),getppid());
					sleep(1);
			}
			else if(pid_d[k]>0)
			{
					k++;
					if(k<5)
					{
							goto _DOT;
					}
					for(n=0;n<k;n++)
					{
						if(pid_d[n]>pid_d[n+1])
						{
							pi=pid_d[n];
							pid_d[n]=pid_d[n+1];
							pid_d[n+1]=pi;
						}
					}
					waitpid(pid_d[0],status , 0);
					waitpid(pid_d[1],status , 0);
					waitpid(pid_d[2],status , 0);
					waitpid(pid_d[3],status , 0);
					waitpid(pid_d[4],status , 0);
			}
	}
	else if(pid[j]>0)
	{
			i++;
			j++;
			if(i<5)
			{
					goto _go;
			}
			for(n=0;n<i;n++)
			{
				if(pid[n]>pid[n+1])
				{
					pi=pid[n];
					pid[n]=pid[n+1];
					pid[n+1]=pi;
				}
			}
			waitpid(pid[0],status , 0);
			waitpid(pid[1],status , 0);
			waitpid(pid[2],status , 0);
			waitpid(pid[3],status , 0);
			waitpid(pid[4],status , 0);
	}
	printf("pid=%d will exit\n",getpid());
	return 0;
}

标签:status,include,pid,父子,printf,进程,pi,waitpid
From: https://www.cnblogs.com/yesiming/p/18028110

相关文章

  • 进程的CPU绑定是否有意义 —— 进程的 CPU 亲和性
    好多年前就学习过进程的CPU亲和性这个概念,说直白些就是CPU的进程绑定,也就是指定某个进程绑定到某个CPU核心上,以此提高进程切换时缓存的命中率,加快进程的运算速度。虽然在编程的时候中会遇到这个进程的CPU绑定操作,但是总觉得这个好像也不是很有用,自己也编写过一些这方面的代码......
  • python 多进程交互
    frommultiprocessingimportProcess,QueueclassEngine:def__init__(self):self.info="EngineInfo"self.order_queue=Queue()#创建一个用于接收订单的队列self.orders=[]defget_info(self):returnself.info......
  • 当systemd停止父python脚本时,子进程退出
    KillMode参数contorl-group(默认)#当前控制组里所有的子进程都会被杀掉process:#只杀主进程mixed:#主进程将收到SIGTERM(终止进程)信号,子进程将收到SIGKILL(无条件终止)信号none:  #没有进程会被杀掉,只是执行服务的stop命令 解决办法将KillMode改成process或non......
  • 线程池和进程池
    线程池和进程池(1)简介在Python中,线程池(ThreadPoolExecutor)和进程池(ProcessPoolExecutor)是用于并发执行任务的两种机制。它们都可以有效地管理并发执行的任务,并且能够自动管理线程或进程的生命周期,从而简化了并发编程。(1)线程池基于线程的并发:线程池利用了线程的并发执行来......
  • day17_进程管理
    linux资源管理篇昨日内容回顾1.先看状态,再去启动systemctlstatusfirewalldsystemctlrestartfirewalldsystemctllist-unit-files|grepfirewalld1.先理解服务的意思,服务,就是你安装的软件名字2.服务就是一个软件程序,会提供可用的命令,去操控这个软件3.firewall......
  • 【c&c++】linux守护进程设置开机自启动的两种方式
    linux守护进程设置开机自启动的两种方式前期准备第一种方式第二种方式 前期准备首先,我们创建一个守护进程1、守护进程初始化程序init.c文件如下:#include<unistd.h>#include<signal.h>#include<sys/param.h>#include<sys/types.h>#include<sys/stat.h>voidinit......
  • C#中获取进程当前路径各种方法的测试
    C#中获取进程当前路径各种方法的测试在CSharp中,获取当前进程的路径有很多种方式。同一个api在不同的运行和发布方式中,又会产生不同的效果。下面我用代码来测试一下效果,运行环境是:Windows10,.Net8。测试程序为放在``D:\的CurrentPathTest`目录。//不同的发布及运行方式//1.......
  • 如何利用内核跟踪点排查短时进程问题?
    在排查系统CPU使用率高的问题时,很可能遇到过这样的困惑:明明通过 top 命令发现系统的CPU使用率(特别是用户CPU使用率)特别高,但通过 ps、pidstat 等工具都找不出CPU使用率高的进程。这是什么原因导致的呢?一般情况下,这类问题很可能是以下两个原因导致的:第一,应用程序里面......
  • Fork - 进程管理中一个重要的函数
    思考问题:当首次调用新创建进程时,其入口在哪里?系统调用fork函数是如何创建进程的?系统调用exec系列函数是如何更换进程的可执行代码的?1.1进程是如何创建的?在Linux系统启动时,最早通过init_task产生的进程是idle进程,也称为swapper进程,其pid为0。该进程会调用......
  • Eralng 学习笔记第六天, Fun,进程,电子邮件,数据库,端口
    ErlangFun  示例:-module(helloworld). -export([start/0]). start() ->    A = fun(X) ->       io:fwrite("~p~n",[X])       end,    A(5).输出5----------------------------------------------------module(helloworld). -export(......