码迷,mamicode.com
首页 > 系统相关 > 详细

一、进程与信号的结构

时间:2016-08-27 11:07:58      阅读:210      评论:0      收藏:0      [点我收藏+]

标签:

认识进程

ps -ef |more

UID         PID   PPID  C STIME TTY          TIME CMD
root          1      0  0 19:06 ?        00:00:04 /sbin/init auto noprompt
root          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/linux

ls sched.h

vim sched.h  

vi 下搜索 进程指针结构体
:/task_struct

1380 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 file

1564 /* 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

 

 

一、进程与信号的结构

标签:

原文地址:http://www.cnblogs.com/peixiguang/p/5812460.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!