在终端执行命令时,Linux会建立进程,程序执行完,进程会被终止;Linux是一个多任务的OS,允许多个进程并发运行;
Linxu中启动进程的两种途径:
①手动启动(前台进程(命令gedit)...后台进程(命令+‘&’))
②调度启动 --at/cron启动
at执行的命令一般不会在终端回显,可以采用重定向到文件就可以查看;
Linux环境下常见的进程操作命令:
ps--查看系统中的进程;
top--动态显示系统中的进程;
kil--终止进程(包括后台进程);
Linux环境下的进程会有一个唯一的进程标识符(pid),进程标识有进程号PID和它的父进程号PPID,PID唯一标识一个进程,其中,PID和PPID都是非零正整数。获得当前进程的PID和PPID的系统调用是getpid()和getppid()函数【头文件unistd.h】;
ps -ef|grep test1 (可以查找程序test1.c运行时的进程号);
3个特殊进程:
PID为0的调度进程,是内核的一部分,也被称为交换进程和系统进程;
PID为1的init进程(centos6及之前版本),init进程是内核启动并运行的第一个用户进程(不是内核中的系统进程),负责对系统进行初始化,并将系统引导到某个状态。init进程不能被终止。
PID为2的kthreadd内核进程,其是一个内核线程,负责执行后台操作。
进程相关函数:
exec函数族--在进程中启动另一个程序执行;
system--在进程中开始另一个进程;
fork--从已经存在的进程中复制一个新进程
sleep--让进程暂停运行一段时间;
exit/_exit--用来终止进程
wait/waitpid--暂停父进程,等待子进程完成运行;
Fork函数
进程调用一次fork函数创建一个新进程,新创建的新进程被称为子进程。该函数调用一次但是返回两次,子进程返回值是0,父进程返回新的子进程的pid。父、子进程并不共享这些存储空间部分,通常父、子进程共享代码段;子进程继承父进程的以下属性:已打开的文件描述符 实际UID、GID,有效UID、GID 当前工作目录 根目录 文件创建UMASK 环境 资源限制
exec函数族
例6-3:用fork函数创建一个子进程,在子进程中。要求显示子进程号和父进程号,然后显示当前目录下的文件信息,在父进程中同样显示子进程号和父进程号;
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <