zoukankan      html  css  js  c++  java
  • 迅为i.MX6ULL终结者进程基础-进程创建

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

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

    如果要销毁qtcreator进程,使用“kill -9 3001”可以销毁它,

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


    getpid():获取进程PID,

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

    打印结果:

    程序执行过程中第一次调用fork()进程2531创建子进程2532;第二次fork(),进程2531创建子进程2533,进程2532创建2534,创建过程如图 1.3:

  • 相关阅读:
    记一次oracle新建用户及分配指定表权限的操作记录
    [转]word中不显示mathtype公式,只显示方框,双击后可以再mathtype里面看到公式
    C、C++成员变量对齐
    include头文件:C++标准库与C标准库
    [转]本专业部分国际会议及刊物影响因子排名
    使用Winbase.h
    [转]printf 字符串格式化
    1.6.2如何使用位逻辑运算(例如与、或、位移)来实现位向量?
    文章中图表自动编号
    取样问题 总数n事先不知道,等概率取样 (编程珠玑chapter12 课后题10)
  • 原文地址:https://www.cnblogs.com/liyue3/p/14474097.html
Copyright © 2011-2022 走看看