i.MX6ULL终结者进程基础 进程创建

本文探讨了Linux系统中的进程基础知识,包括进程的类型(交互进程、批处理进程、守护进程)、状态(运行态、等待态、终止态等)以及进程的创建。通过`fork()`系统调用创建子进程,并介绍了父进程与子进程的关系,特别强调了资源的写时拷贝技术。同时,文章提到了进程的结束和资源回收,如僵尸进程和孤儿进程的处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

进程指正在运行的程序,资源分配的最小单位,可以通过“ps ”或“top”等命令查看正在运行的进程,线程是系统的最小调度单位,一个进程可以拥有多个线程,同一进程里的线程可以共享此进程的同一资源。本章代码在process/目录下。
进程类型:
1.交互进程:由shell启动,用户和计算机进行问答的进程。
2.批处理进程:不与特定终端相关联,将任务提交到等待队列按顺序执行的进程。
3.守护进程:后台运行的特殊进程,用户不能和它进行会话。
进程的三种状态:
在这里插入图片描述

图 1

1.运行态,正在运行或在运行队列中等待。
2.可中断等待态,休眠, 在等待申请的资源有效或等待中断,信号唤醒。
3.不可中断等待态,休眠等待资源有效,不能被中断或信号唤醒。
4.终止态,进程被停止或者被跟踪状态,收到SIGCONT信号时,又会恢复运行状态。
5.僵尸态,进程因某种原因而中止运行,但进程描述符仍存在,不可被Kill。
如果想销毁某一进程,可在终端输入“ps -elf”查看进程号,如图 2:
在这里插入图片描述

图 2

如果要销毁qtcreator进程,使用“kill -9 3001”可以销毁它,
在这里插入图片描述

图 3

1进程创建

所有的进程都是由其他进程创建(除了pid为0号的idle进程),pid号为1的init进程是系统启动后运行的第一个进程,是所有进程的父进程,init进程会初始化一部分系统服务,创建其他进程。
创建新进程的那个进程称为父进程,新进程称为子进程,父进程和子进程拥有相同的代码段数据段,有各自独立的地址空间。采用写时拷贝技术,即创建的新进程不会立即把父进程的资源空间复制过来,只有在修改时才会复制资源,另外父进程挂起的信号和文件锁不会被子进程继承。
子进程结束后,它的父进程要回收它的资源,否则就会成为僵尸进程 。
如果父进程先结束,子进程会被init进程收养,称为孤儿进程。
终端输入“ps -el”查看进程状态,PID为进程号,PPID为此进程的父进程号,如图 1.1,1505号进程的父进程为1366进程。
在这里插入图片描述
在这里插入图片描述

图1.1

getpid():获取进程PID,
#include <sys/types.h>
#include <unistd.h>
pid_t getpid(void);//获取此进程PID
pid_t getppid(void);//获取父进程PID
返回值为PID号。

fork():系统调用,创建一个进程,
#include <unistd.h>
pid_t fork(void);
调用成功父进程返回子进程号,子进程返回0,失败返回-1。
如以下代码:
for.c:

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
 
int main(int argc, const char *argv[])
{
    pid_t pid;
    int i;
    for(i=0;i<2;i++){
        pid=fork();
        if(pid>0){
            printf("进程%d\n",getpid());
        }else if(pid == 0){
            printf("进程%d\n",getpid());
        }
    }
     
    return 0;
}

打印结果:
在这里插入图片描述

图 1.2

程序执行过程中第一次调用fork()进程2531创建子进程2532;第二次fork(),进程2531创建子进程2533,进程2532创建2534,创建过程如图 1.3:
在这里插入图片描述

图 1.3

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值