1.进程标识符(PID):通常是一个取值从2~32768的正整数
数字1一般是为特殊进程Init保留的,Init进程负责管理其他进程
2.进程有自己的栈空间,用于保存函数中的局部变量和控制函数的调用和返回
进程有自己的环境空间,包含专门为这个进程建立的环境变量
进程还必须维护自己的程序计数器,用来记录它执行到的位置
3.启动新进程的方法
a.库函数system方式: system("ps ax")
b.替换进程映像的exec系列函数: exec函数把当前进程替换为另一个新进程,新进程由path和file参数指定。 execl("/bin/ps","ps","ax",0)
execl() / execlp() / execle()
execv() / execvp() / execve()
c.复制进程映像的fork()函数:fork函数复制当前进程,在进程表中创建一个新的表项,新表中的许多属性与当前进程是相同的。新进程和原进程几乎一模一样,执行的代码也完全一样,担心进程有自己的数据空间、环境和文件描述符。
pid_t newpid
newpid = fork();
4.等待一个进程wait
int sta_val;
pid_t child_pid;
child_pid = wait(&sta_val); //wait返回子进程Pid, sta_val显示子进程执行的状态信息
5.信号
信号是UNIX和Linux系统响应某些条件而产生的一个事件。
生成\捕获\响应\忽略
信号名称在signal.h中定义的,都以SIG开头。
6.核心转储文件core
如果进程接收到某些信号,但事先没有安排捕获他,进程将会立刻停止。通常,系统将生成核心转储文件core,并将其放在当前目录下。该文件是进程在内存中的映像,他对程序的调试很有用处。
7.常用信号名称
SIGABRT 进程异常终止 6 SIGALRM 超时告警 SIGFPE 浮点运算异常 SIGHUP 连接挂断 SIGILL 非法指令 SIGINT 终端中断 2 SIGKILL 停止进程(此信号不能被忽略或捕获) SIGPIPE 向没有读的管道写入数据 SIGSEGV 无效内存段访问 SIGQOUT 终端退出 3 SIGTERM 终止 SIGUSR1 用户定义信号1 SIGUSR2 用户定义信号2 SIGCHLD 子进程已经停止或退出 SIGCONT 如果被停止则继续执行 SIGSTOP 停止执行 SIGTSTP 终端停止信号 SIGTOUT 后台进程请求进行写操作 SIGTTIN 后台进程请求进行读操作
8.signal函数简介
signal函数作用是 给某个信号signum注册一个信号处理函数handler
typedef void (*sighandler_t)(int); sighandler_t signal(int signum, sighandler_t handler); signal函数 作用1:站在应用程序的角度,注册一个信号处理函数 作用2:忽略信号,设置信号默认处理 信号的安装和回复 参数 --signal是一个带signum和handler两个参数的函数,准备捕捉或屏蔽的信号由参数signum给出,接收到指定信号时将要调用的函数有handler给出 --handler这个函数必须有一个int类型的参数(即接收到的信号代码),它本身的类型是void --handler也可以是下面两个特殊值:① SIG_IGN 屏蔽该信号 ② SIG_DFL 恢复默认行为