ps aux | grep 进程名
kill -TERM 进程号
如果你指的写程序, 那就参考 man pthread_exit
要了解进程的终止,你必须先了解进程结构体task_struct,期中有一些与进程终止相关的非常重要的域,task_struct在内核源代码的linux/sched.h中定义。进程终止有多种方式,无论何种方式,都会调用内核函数sys_exit()函数,而最终调用do_exit()函数(在kernel/exit.c中定义)在do_exit()函数中首先会做一些检测,包括确保要终止的进程ID不是0或者1,再保证该进程不是处在中断处理程序之中,之后将要终止进程的task_struct结构体中的flag域设置为PF_EXITING表示该进程已经结束,然后就是比较正式的销毁过程,释放进程占用的资源。比如释放其占用的的分配内存(exit_mm()),释放进程间通信的信号量(exit_sem()),释放进程创建或者打开的文件描述符(exit_files()),释放文件系统数据(exit_fs()),释放线程(exit_thread())等等,最后向其父进程发送SIGCHILD信号,将进程状态设置为终止,调用schedule(),将CPU控制权交给其他进程。
这是大概的销毁过程的,更详细的过程请参考linux
kernel
primer这本书以及linux内核源代码。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)