守护进程 and 进程通信

守护进程

1.        精灵进程(daemon)

2.        特点:

a)        父进程为1号进程init

b)       没有终端‘?’

c)       终端:

d)       在后台运行

3.        后台运行

a)        程序名&

b)       nohup 程序名 &(tail 查看tail –f nohup.out)

4.        脱壳操作:

a)        当前子进程的父进程退出,使当前子进程的父进程为1.

b)       linux中推荐fork两次退出两次。

5.        创建会话期(创建session)

a)        进程组:一个进程中有一组进程,进程组ID(getgid())相同

b)       会话期:有若干个进程组

c)       getsid()

6.        /dev/null

7.        /dev/zero

8.        /dev/random

9.        /dev/urandom

10.    mmap msync

11.    守护进程的日志

a)        /var/log系统日志

b)       管理 syslogd(/sbin/syslogd)配置文件: /etc/sylog.conf:格式:facility.level

c)       写系统函数openlog()

 

 

进程通信

1.        目的:

a)        数据传输

b)       资源共享

c)       通知时间

d)       进程控制

2.        方式:

a)        管道pipe和有名管道FIFO

b)       协同进程(双管道)

c)       信号signal

d)       文件锁

e)        IPC(interprocess communication)

                                      i.             消息队列

                                    ii.             共享内存

                                   iii.             信号量

f)        套接字(网络间通信)

 

管道(无名管道):

1.        具有亲缘关系的两个进程间的通信

2.        半双工通讯(一端读一端写)

3.        阻塞性设备

a)        放满,发生阻塞write

b)       取内容read

4.        fd[0]读端。fd[1]写端

5.        pipe()创建管道

6.        close()可以关闭管道

 

协同进程:两个管道

 

有名管道:

1.        管道文件

a)        创建命令mknod 文件名 P

b)       mkfifo 文件名

c)       函数:mkfifo()

d)       open close write read

2.        命名管道也是半双工通信

 

ps –ef | awk ‘{if($3 == 1&&6==  “?” ) print $0}’ grep

 

作业调度:

       crontab

shell脚本

你可能感兴趣的:(守护进程 and 进程通信)