网站群建设目标,创业怎么做网站,安庆专业做淘宝网站,网络营销软件推广注册赚钱管道的作用#xff1a;进程间的通信
无名管道#xff1a;
只能在父子进程中进行通信 pipe int pipe(int pipefd[2]); 功能: 创建一个无名管道 参数: pipefd[0]:读管道文件描述符 pipefd[1]:写管道文件描述符 …管道的作用进程间的通信
无名管道
只能在父子进程中进行通信 pipe int pipe(int pipefd[2]); 功能: 创建一个无名管道 参数: pipefd[0]:读管道文件描述符 pipefd[1]:写管道文件描述符 返回值: 成功返回0 失败返回-1 无名管道特性: 1.管道中至少有一个写端: 读取数据时,如果管道中有数据直接读取,管道中没有数据阻塞等待直到有数据写入读出,继续向后执行 2.管道中没有写端: 读取数据时,如果管道中有数据直接读取,管道中没有数据不阻塞等待直接向下执行 3.管道中至少有一个读端: 写入数据时,如果管道中没有存满,则直接写入,管道中如果存满,则阻塞等待直到有数据读出,才能继续写入 4.管道中没有读端: 写入数据时,会产生管道破裂错误,导致程序崩溃 有名管道 打开管道文件 - 读写管道文件 - 关闭管道文件 注意:有名管道必须读写两端同时加入才能继续向下执行 1.mkfifo int mkfifo(const char *pathname, mode_t mode); 功能: 创建一个管道文件 参数: pathname:管道文件路径 mode:权限 返回值: 成功返回0 失败返回-1
有名管道的双工通信代码编写
思路两个文件每个文件设两个进程a进程用于发送信息b进程用于接受信息 memset函数 void *memset(void *s, int c, size_t n); 功能将S中的值全赋成c-----将s初始化。
2.信号
实现内核层与用户层的信息交互或者进程间的通信
2.1信号的种类
kill-l 查询信号
kill -信号序号 进程pid 对进程进行操作
2.2信号处理方式
2.2.1缺省默认方式
2.2.2忽略不相应信号
2.2.3捕捉按自定义方式处理 9号SIGKILL19号SIGSTOP不能被忽略和捕捉 SIGINT:Ctrlc SIGQUIT:ctrl\ SIGTSTP:ctrlz
2.2.4signal void fun(int a); signal(SIGN,fun); 功能: 改变信号的处理方式 参数SIGN:信号名称 fun:遇到信号后的处理方式的函数 返回值: 成功返回之前处理函数的首地址 失败返回SIG_ERR