Chinaunix首页 | 论坛 | 博客
  • 博客访问: 72946
  • 博文数量: 22
  • 博客积分: 141
  • 博客等级: 民兵
  • 技术积分: 140
  • 用 户 组: 普通用户
  • 注册时间: 2011-07-28 09:31
文章分类

全部博文(22)

文章存档

2012年(13)

2011年(9)

分类: LINUX

2012-01-29 12:41:09

1、  含义

程序:指令的集合

进程:程序的运行活动

2、进程的属性:

1)  动态性、具有生命周期:创建à运行à消亡

2)  独立性

进程的分类:(查看进程ps  -ef/pstree进程树)

交互进程

批处理进程

精灵进程/守护进程daemon:父进程为1,控制终端为“?”,即无终端。init是所有进程的父进程,进程号没有0

隐藏进程:一般黑客使用

3)  并发性

nice设置进程优先级

4)  异步性

3、进程的三态:

执行态、等待状态、就绪态

4、进程操作

32位的操作系统里,2^32=4G虚拟内存空间,3G4G为内核区

main()                     0G

cs(代码存储区)

文字存储区

data(初始化的静态变量),如static

栈,如auto

堆,如malloc

内核区

                          4G

虚拟地址à逻辑地址à物理地址,linux中得swap相当于windows的虚拟空间。

1)  创建子进程

fork,像staticauto变量在子进程中有独立存储空间,父子进程的地址一样。

vfork里必须是先执行子进程,主进程处于挂起状态,父子进程共用存储空间。

生产时一般不用vfork

2)  clone

3)  进程退出(cd /proc可以看到内核的映射,查看进程的描述信息与控制信息。)

自然退出(main

main函数里执行return语句,但是建议使用exit退出,如exit0)。

信号退出,trap  -l命令行查看信号的函数,如alarm2)时钟,执行2s后退出。

exit_exit函数退出

void exit(int  status)返回给操作系统,statusEXIT_SUCCESSEXIT_FAILURE

exit_exit的区别

exit

会刷新I/O缓冲区

属于标准c

在执行atexit/on_exit时会先注册再执行

_exit

不会刷新I/O缓冲区

属于posix

不会执行atexit

注:缓冲区就是内存,分三种情况:行缓冲,linux不会立即打印、全缓冲、无缓冲

setbuffer设置缓冲,printf立即输出---加入\n或者是在printf后面加上fflushstdout);

4)  进程等待

waitwaitpid:控制父进程在子进程后退出(把父进程挂起),以避免僵死进程发生。当子进程执行完后,在内核产生SIGCHLD信号给父进程,父进程然后给proc,父进程返回childID,然后父进程又继续执行,这样一级一级回收,最终给最终级进程。

pid_t  wait(int  *status)其中status是当前子进程怎样退出,当一个子进程退出返回一个id

pid_t  waitpid(……)

unix中还有wait3wait4

5)  kill -l 信号  //可以查看信号。具体看kill的用法,比如杀死僵死进程:kill它的父进程

kill  -kill  ID

kill  all  +进程名字  //停止多个同名的进程,主要针对守护进程。

kill函数、setsid函数---创建一个会话期session,并把它设置为主ID,脱离终端。

守护进程日志/var/log/messages文件

日志配置文件more  syslog.conf

日志守护进程ps  -ef|grep  syslogd

阅读(1491) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~