Ctrl-l Clear screen
//实验程序jmp.c: #include "apue.h" #include <setjmp.h> #define TOK_ADD 5 jmp_buf jmpbuffer; void cmd_add(void); int get_token(void); int main(void) { char line[MAXLINE]; if(setjmp(jmpbuffer) == 0) { printf("error\n"); } printf("-----------------------\n"); cmd_add(); exit(0); } void cmd_add(void) { int token; token = get_token(); if(token != 0) { printf("step into here!"); longjmp(jmpbuffer, 1); } }
step into here!-----------------------
这是setjmp函数和longjmp共同作用的的,
setjmp相当于设定跳转标号,而longjmp的作用长跳转到setjmp设置的标号。
一些命令:
Ctrl + C #终止正在执行的程序
ps -ef|grep jmp #查看后台执行的程序
xxx 4162 4052 0 13:55 pts/0 00:00:00 grep --color=auto jmp
kill 4162(进程号)
-------------------------------------------------------------------------------------------------------------
Ctrl +Z #挂起正在执行的程序jmp
jobs查看当前执行进程
fg %n 把后台执行程序放在前台执行
bg %n 将在后台挂起的进程,继续执行
-------------------------------------------------------------------------------------------------------------
ps命令进程查看命令
ps命令:process status
-e 显示所有进程
-f 全格式
-h 不显示标题
-l 长格式
-w 宽输出
a 显示终端上的所有进程,包括其他用户的进程
r 只显示正在运行的进程
x 显示没有控制终端的进程
最常用三个参数是u、a、x。
#ps axu的输出格式
USER:进程拥有者
PID:进程号
%CPU:占用的CPU使用率
%MEM:占用的内存使用率
VSZ;占用的虚拟内存大小
RSS:占用的内存大小
TTY:终端设备号
STAT:改进程状态
START:进程开始时间
TIME:执行的时间
COMMAND:所执行的指令
对于state(ps工具标识进程的5种状态码):
D:不可中断的休眠(通常表示该进程正在进行I/O动作)
R:正在执行中
S:休眠状态
T:暂停执行
Z:僵死 a defunct (”zombie”) process
<:高优先顺序的进程
N:低优先顺序的进程
L:有内存分页分配并锁在内存内(即时系统或定制I/O)
Kill:中断一个处理进程(process)
当中断一个前台进程是通常用ctrl+c;对于后台进程用kill命令
kill命令是通过向进程发送指定的信号来结束的。默认为TERM信号。TERM信号将终止所有不能捕获该信号的进程,对于能捕获该信号的进程需要使用kill –9信号,该信号是不能被捕获的。
kill杀终端,只能可以把终端的shell杀死,而退出终端,但终端不关闭
pkill 命令名 可以直接杀死进程
pkill qmail //直接杀死qmail程序进程