全球旧事资料 分类
个文件描述符:filedis0用于读管道,filedis1用于写管道。关闭管道只需将这两个文件描述符关闭即可,可以使用普通的close函数逐个关闭。管道用于不同进程间通信。通常先创建一个管道,再通过fork函数创建一个子进程,该子进程会继承父进程所创建的管道。必须在系统调用fork前调用pipe,否则子进程将不会继承文件描述符。命名管道(FIFO)和无名管道基本相同,但也有不同点:无名管道只能由父子进程使用;但是通过命名管道,不相关的进程也能交换数据。创建i
cludesystypeshi
cludesysstathi
tmkfifoco
stcharpath
amemode_tmodepath
ame:FIFO文件名mode:属性(见文件操作章节)
f一旦创建了一个FIFO,就可用ope
打开它,一般的文件访问函数(close、read、write等)都可用于FIFO。当打开FIFO时,非阻塞标志(O_NONBLOCK)将对以后的读写产生如下影响:1、没有使用O_NONBLOCK:访问要求无法满足时进程将阻塞。如试图读取空的FIFO,将导致进程阻塞。2、使用O_NONBLOCK:访问要求无法满足时不阻塞,立刻出错返回,err
o是ENXIO。信号sig
al机制是U
ix系统中最为古老的进程间通信机制,很多条件可以产生一个信号:1、当用户按某些按键时,产生信号。2、硬件异常产生信号:除数为0、无效的存储访问等等。这些情况通常由硬件检测到,将其通知内核,然后内核产生适当的信号通知进程,例如,内核对正访问一个无效存储区的进程产生一个SIGSEGV信号。3、进程用kill函数将信号发送给另一个进程。4、用户可用kill命令将信号发送给其他进程。下面是几种常见的信号:SIGHUP:从终端上发出的结束信号SIGINT:来自键盘的中断信号(CtrlC)SIGKILL:该信号结束接收信号的进程SIGTERM:kill命令发出的信号SIGCHLD:标识子进程停止或结束的信号SIGSTOP:来自键盘(CtrlZ)或调试程序的停止执行信号
f当某信号出现时,将按照下列三种方式中的一种进行处理:1、忽略此信号大多数信号都按照这种方式进行处理,但有两种信号却决不能被忽略。它们是:SIGKILL和SIGSTOP。这两种信号不能被忽略的原因是:它们向超级用户提供了一种终止或停止进程的方法。2、执行用户希望的动作通知内核在某种信号发生时,调用一个用户函数。在用户函数中,执行用户希望的处理。3、执行系统默认动作对大多数信号的系统默认动作是终止该进程。发送信号的主要函数有kill和raise。区别:Kill既可以向自身发送信号,也可以向其他进程发送信号。与kill函数不同的是,raise函数是向进程自身发送信号。i
cludesystypeshi
cludesig
alhi
tkillpid_tpidi
tsig
or
好听全球资料 返回顶部