0
点赞
收藏
分享

微信扫一扫

Linux系统编程之多进程

一点读书 2022-04-25 阅读 67
linux


多进程控制:
进程简单点说就是一个正在运行的程序。
进程是系统中资源分配的最小单位,进程拥有自己的代码段,数据段和堆栈段。

程序与进程的区别:
程序可以文件的形式保存在内存中(占用存储器的内存)、
而进程只能运行于系统内存中、
一个程序可以对应多个进程。

进程具有并发性:在同一个时间段,可以有多个进程运行。

多个进程从宏观上看是同时执行的,但是从微观上说,由于CPU同一时刻一次只能执行一个进程对应的代码,
所以说这些进程是交替运行的,并发执行使得CPU在这些进程之间进行快速的切换,让用户感觉是同时运行的。
但是这种切换是没有规律得,哪个进程抢到时间片,cpu则运行哪个进程。
时间片是linux的一种进程调度方式。

进程之间可以相互制约,使得进程之间具有间隙。---使用sleep(挂起)可以调节顺序

进程的状态分为就绪状态、执行状态、阻塞状态。

ps –aux查询当前系统下(进程的状态)或ps –ef ---查询当前系统下(父子进程关系)
R:表示正在运行的进程
S:表示阻塞状态
T:表示暂停状态 ---通过ctrl+z可以进入暂停状态  fg可以返回暂停的进程里面
Z:进程运行结束未被收回—僵尸状态
I:表示多进程
+:表示后台运行的进程组

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATGlsT25lMTIz,size_20,color_FFFFFF,t_70,g_se,x_16

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATGlsT25lMTIz,size_20,color_FFFFFF,t_70,g_se,x_16

 

进程0是系统级进程,1号进程为祖先进程,所有进程都是从祖先进程继承过来的。"1生万物"

kill -9 进程id(pid) 可以杀死进程

创建进程函数:pid_t fork(void);  pid_t就是一个int类型的数据
功能:创建一个子进程
返回值:在父进程中,用fork返回新创建子进程的进程ID
        在子进程中,fork函数返回值为0
        失败的话返回  负值
        
在程序中调用了fork()就会创建一个子进程,
子进程会复制调用fork()之前的用户空间(堆区、栈区、常量区、静态区)。
并且这些资源不是初始化的状态,而是处于栈区的状态。

可以通过exit()销毁进程,wait(NULL)来等待。
父子进程框架(本人常用):
pid = fork();  //创建一个子进程,主进程就是父进程
if(pid < 0)//异常处理
{
    perror("创建进程失败\r\n");  
    return 0;
}
if(pid == 0) //子进程要做的事
{
    while(1)
    {
        
    }
    exit(0);
}
else if(pid > 0) //父进程要做的事
{
    while(1)
    {
        
    }
    wait(NULL);  //等待子进程结束,再结束父进程
}
进程的阻塞也可以通过秒级睡眠sleep(),与微秒级睡眠usleep()实现;

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATGlsT25lMTIz,size_20,color_FFFFFF,t_70,g_se,x_16

 

举报

相关推荐

0 条评论