linux学习之八 Linux进程基础知识

本文发布时间: 2019-Mar-22
一、linux进程linux是一个多用户多任务的操作系统。多用户是指多个用户可以在同一时间使用计算机;多任务是指linux可以同时执行几个任务。进程简单来说就是运行中的程序,Linux系统的一个重要特点是可以同时启动多个进程。根据操作系统的定义:进程是操作系统资源管理的最小单位。1.Linux进程的概念进程是一个动态的实体,是程序一次执行过程,并且进程是操作系统资源分配的基本单位。进程与程序的区别:进程是动态的,程序是静态的;进程是运行中的程序,而程序还是保存在硬盘上的可执行代码。进程与线程的区别:为了让计算机在同一时间内能执行更多任务,在进程内部又划分了许多线程。线程是在进程内部,比进程更小并且能独立运行的基本单元。进程在执行过程拥有独立的内存单元,但是线程基本上不拥有系统资源,它与同属一个进程的其他线程共享进程拥有的全部资源。2.Linux进程的标志Linux操作系统中,每个进程都是通过唯一的进程ID标识的。进程ID是一个非负数,每个进程除了进程ID外还有一些其他标识信息,它们都可以通过相应的函数获得。函数声明在unistd.h头文件中。getpid():获得进程IDgetppid():获得进程父进程的IDgetuid():获得进程实际用户IDgeteuid():获得进程有效用户IDgetgid():获得进程实际组IDgetegid():获得进程有效组ID3.Linux进程的结构Linux中的一个进程由3个部分组成:代码段、数据段、堆栈段。代码段:存放程序的可执行代码。数据段:存放程序的全局变量、常量、静态变量。堆栈段中的堆区:存放动态分配的内存变量。堆栈段中的栈区:用于函数调用,它存放着函数的参数、函数内部定义的局部变量。4.Linux进程的状态运行状态:进程正在运行或iozai运行队列中等待运行。可中断等待状态:进程正在等待某个事件完成。等待过程中可以被信号或定时器唤醒。不可中断等待状态:进程正在等待某个事件完成。等待过程中不可以被信号或定时器唤醒,必须等待直到等待的事件发生。僵死状态:进程已终止,但进程描述符依然存在,直到父进程调用wait()函数后释放。停止状态:进程因收到SIGSTOP、SIGSTP、SIGTIN、SIGTOU信号后停止运行或者该进程正在被跟踪(调试程序时,进程处于被跟踪状态)。5.Linux进程的控制Linux进程控制包括创建进程、执行新程序、退出进程以及改变进程优先级等。fork:用于创建一个新进程。exit:用于终止进程。exec:用于执行一个应用程序。wait:将父进程挂起,等待子进程终止。getpid:获取当前进程的进程ID。nice:改变进程的优先级。二、创建进程#include<stdio.h>#include<sys/types.h>#include<unistd.h>int main(){ pid_t pid; printf("Process Creation Study\n"); pid=fork(); switch(pid) { case 0: printf("Child process is tunning,CurPid is %d,ParentPid is %d\n", pid,getppid()); break; case -1: printf("Process creation failed\n"); break; default: printf("Parent process is running,ChildPid is %d,ParentPid is %d\n", pid,getpid()); break; } exit(0); return 0;}一般情况下,函数最多有一个返回值,但fork函数非常特殊,它有两个返回值,即调用一次返回两次。成功调用fork函数后,当前进程实际上已经分裂成两个进程,一个是原来的父进程,另一个是刚刚创建的子进程。父进程在调用fork函数的地方分开,fork函数有两个返回值,一个是父进程调用fork函数后的返回值,该返回值是刚刚创建子进程的ID;另一个是子进程中fork函数的返回值,该返回值是0。fork返回两次的前提是进程创建成功,如果进程创建失败,则只返回-1。由图可见,以上两次运行结果都算父进程先运行。一般来说,fork之后是父进程先执行还是子进程先执行是不确定的,这取决于内核所使用的调度算法。父进程调用fork函数后的返回值是刚刚创建子进程的ID(3465),通过getpid函数得到父进程ID(3464)。子进程调用fork函数后的返回值是0,子进程通过getppid函数得到父进程ID(3464)。


(以上内容不代表本站观点。)
---------------------------------
本网站以及域名有仲裁协议。
本網站以及域名有仲裁協議。

2020-Jul-13 01:13am
栏目列表