C++学习之路--10

守护进程

会话:进程组的更高一级,多个进程组对应一个会话。
进程组:多个进程在同一个组,第一个进程默认是进程组的组长,创建会话的时候,组长不可以创建,必须是组员创建。
创建会话的步骤:创建子进程,父进程去死,子进程自当会长。
守护进程的步骤:
创建子进程fork,父进程退出,子进程当会长setsid,切换工作目录$HOME ,设置掩码umask 关闭文件描述符0,1,2 为了避免浪费资源, 执行核心逻辑, 退出。
nohup指令可以达到守护进程创建的效果
nohup cmd [> 1.log] &

线程

线程man page 安装
sudo apt-get install manpages-posix-dev
线程的概念:轻量级的进程,一个进程内部可以有多个线程,默认情况下一个进程只有一个线程。
线程是最小的执行单位,进程是最小的系统资源分配单位。内核实现都是clone函数实现的
ps -Lf 进程号 查看指定线程的LWP号
线程共享资源:内存共享空间
线程非共享资源:线程ID, 处理器线程和栈指针,独立的栈空间,errno变量,信号屏蔽字,调度优先级
获得错误码对应的信息:char * strerror(int errnum);
优点:提高并发性,占用资源小,通信方便
缺点:调试麻烦,库函数不稳定,对信号支持不好。
shell中vi的快捷键
set -o vi
在家目录下.bashrc增加
alias echomake=‘cat~/bin/makefile.template>>makefile’
线程退出函数
pthread_exit 或者 return
exit退出进程
pthread_join 回收线程
pthread_create();创建一个线程
pthread_cancel()杀死一个线程
pthread_cancel()需要传入tid,成功返回0,被pthread_cancel杀死的线程,退出状态为PTHREAD_CANCELED #define pthread_canceled (void*) -1)
pthread_testcancel强制设置取消点
pthread_detach()线程分离
pthread_equal函数,比较两个线程是否相等
restrict约束该块内存区域对应的数据,只能通过后面的变量进行访问修改

猜你喜欢

转载自blog.csdn.net/weixin_43615373/article/details/91496322