首页 > 代码库 > 一、进程与信号的结构
一、进程与信号的结构
认识进程
ps -ef |moreUID PID PPID C STIME TTY TIME CMDroot 1 0 0 19:06 ? 00:00:04 /sbin/init auto nopromptroot 2 0 0 19:06 ? 00:00:00 [kthreadd]root 3 2 0 19:06 ? 00:00:00 [ksoftirqd/0]root 4 2 0 19:06 ? 00:00:00 [kworker/0:0]root 5 2 0 19:06 ? 00:00:00 [kworker/0:0H]
进程在内核中的结构
内核进程task_struct通过file_struct 操作文件
linux内核源码task_struct
cd /usr/src/linux-headers-4.4.0-28/include/linuxls sched.hvim sched.h vi 下搜索 进程指针结构体:/task_struct1380 struct task_struct {1381 volatile long state; /* -1 unrunnable, 0 runnable, >0 stopped */1382 void *stack;1383 atomic_t usage;1384 unsigned int flags; /* per process flags, defined below */1385 unsigned int ptrace;vi 下搜索 文件指针结构体:/struct file1564 /* open file information */1565 struct files_struct *files;
C程序启动过程
内核启动特殊例程
启动例程
在进程的main函数执行前会启动
该例程放在在/lib/libc.so**中
编译器在编译时会启动例程编译进可执行文件中
启动例程作用
搜索命令行参数传递给main函数中的argc、argv
搜索环境信息构建环境表并传递给main函数
等级进程终止函数
进程终止
正常终止
main函数返回
调用exit(标准库函数)
调用_exit或者_Exit(系统调用)
最后一个线程从启动例程返回
最后一个线程pthread_exit
异常终止
调用abort
接受一个信号并终止返回
最后一个线程对取消请求做处理相应
进程返回
成功返回0,否则非0
shell中查看进程返回(echo $?)
自定义终止函数
#include <stdlib.h>int atexit(void(*function)(void))成功返回0,否则非0
一、进程与信号的结构
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。