具体命令参数信息如下: ps 命令详细参数: -e:显示所有进程 -l:长格式显示更加详细的信息 -f 全部列出,通常和其他选项联用 表头 含义 F 进程标志,说明进程的权限,常见的标志有两个: 1:进程可以被复制,但是不能被执行; 4:进程使用超级用户权限; S 进程状态。进程状态。常见的状态有以下几种:
-D:不可被唤醒的睡眠状态,通常用于 I/O 情况。
-R:该进程正在运行。
-S:该进程处于睡眠状态,可被唤醒。
-T:停止状态,可能是在后台暂停或进程处于除错状态。
-W:内存交互状态(从 2.6 内核开始无效)。
-X:死掉的进程(应该不会出现)。
-Z:僵尸进程。进程已经中止,但是部分程序还在内存当中。
-<:高优先级(以下状态在 BSD 格式中出现)。
-N:低优先级。
-L:被锁入内存。
-s:包含子进程。
-l:多线程(小写 L)。
-+:位于后台。 UID 运行此进程的用户的 ID; PID 进程的 ID; PPID 父进程的 ID; C 该进程的 CPU 使用率,单位是百分比; PRI 进程的优先级,数值越小,该进程的优先级越高,越早被 CPU 执行; NI 进程的优先级,数值越小,该进程越早被执行; ADDR 该进程在内存的哪个位置; SZ 该进程占用多大内存; WCHAN 该进程是否运行。"-"代表正在运行; TTY 该进程由哪个终端产生; TIME 该进程占用 CPU 的运算时间,注意不是系统时间; CMD 产生此进程的命令名;
实时查看进程命令如下: top 查看进程动态信息 shift +> 后翻页 shift +< 前翻页 top -p PID 查看某个进程
改变进程优先级 nice 按用户指定的优先级运行进程 nice [-n NI值] 命令 NI 范围是 -20~19。数值越大优先级越低 普通用户调整 NI 值的范围是 0~19,而且只能调整自己的进程。 普通用户只能调高 NI 值,而不能降低。如原本 NI 值为 0,则只能调整为大于 0。 只有 root 用户才能设定进程 NI 值为负值,而且可以调整任何用户的进程。 renice 改变正在运行进程的优先级 renice [优先级] PID
设置优先级案例如下:
改变优先级案例如下:
进程相关命令 jobs 查看后台进程 bg 将挂起的进程在后台运行 fg 把后台运行的进程放到前台运行 ctrl + z 把运行的前台进程转为后台并停止
上述编译错误分析: 1.createP_t.c:14:36: warning: passing argument 3 of ‘pthread_create’ from incompatible pointer type [-Wincompatible-pointer-types] ret = pthread_create(&tid,NULL,testThread,NULL); In file included from createP_t.c:1:0: /usr/include/pthread.h:233:12: note: expected ‘void * (*)(void )’ but argument is of type ‘int * ()(char )’ 意义:表示pthread_create参数3的定义和实际代码不符合,期望的是void * ()(void ) ,实际的代码是int * ()(char ) 解决方法:改为pthread_create(&tid,NULL,(void)testThread,NULL); 2.createP_t.c:(.text+0x4b):对‘pthread_create’未定义的引用 collect2: error: ld returned 1 exit status --------这个链接错误, 表示pthread_create这个函数没有实现 解决方法:编译时候加 -lpthread 注意事项:1. 主进程的退出,它创建的线程也会退出。 线程创建需要时间,如果主进程马上退出,那线程不能得到执行
取消点函数如下: int pthread_cancel(pthread_t thread); 注意:线程的取消要有取消点才可以,不是说取消就取消,线程的取消点主要是阻塞的系统调用 运行段错误调试: 可以使用gdb调试 使用gdb 运行代码,gdb ./youapp (gdb) run 等待出现Thread 1 “pcancel” received signal SIGSEGV, Segmentation fault. 输入命令bt(打印调用栈) (gdb) bt #0 0x00007ffff783ecd0 in vfprintf () from /lib/x86_64-linux-gnu/libc.so.6 #1 0x00007ffff78458a9 in printf () from /lib/x86_64-linux-gnu/libc.so.6 #2 0x00000000004007f9 in main () at pcancel.c:21 确定段错误位置是pcancel.c 21行 如果没有取消点,手动设置一个 void pthread_testcancel(void); 设置取消使能或禁止 int pthread_setcancelstate(int state, int *oldstate); PTHREAD_CANCEL_ENABLE PTHREAD_CANCEL_DISABLE 设置取消类型 int pthread_setcanceltype(int type, int *oldtype);
Kotlin for loop: in、 until、 step、 downTo fun loop1() {for (i in 0..5) {print("$i ")}println("\n1-end\n")
}fun loop2() {for (i in 0 until 5) {print("$i ")}println("\n2-end\n")
}fun loop3() {for (i in 0 until (5)) {…