第三章管道通信

pipe函数
所需头文件== #include<unistd.h>==
函数原型 int pipe(int fd[2])
调用时传入一个整型的2位数组fd,完成后数组存放着管道的两个文件描述符,之后就是可以直接操作者两个文件描述符。
成功返回0,失败返回-1,
例子
第三章管道通信
sprintf函数
所需头文件 标准库==#include <stdio.h>==
函数原型 int sprintf(char *str, const char format)
str – 这是指向一个字符数组的指针,该数组存储了 C 字符串。
format – 这是字符串,包含了要被写入到字符串 str 的文本。
例子
第三章管道通信
第三章管道通信
lockf函数
所需头文件 #include <sys/file.h> 如果不是就用#include <unistd.h>
函数原型 int lockf(int fd, int cmd, off_t len);
fd:为通过open返回的打开文件描述符。
len:为从文件当前位置的起始要锁住的长度。
例子
第三章管道通信
加锁
第三章管道通信
解锁
read,write函数
所需头文件==#include<unistd.h>==
函数原型 int read(int fd, void
buf, size_t count)

参数说明:
fd: 是文件描述符, 从command line获取数据时,为0
buf: 为读出数据的缓冲区;
count: 为每次读取的字节数(是请求读取的字节数,读上来的数据保
存在缓冲区buf中,同时文件的当前读写位置向后移)

成功:返回读出的字节数
失败:返回-1,并设置errno,如果在调用read
之前到达文件末尾,则这次read返回0
例子
第三章管道通信
函数原型 int write(int fd,const void*buf,size_t count);

参数说明:
fd:是文件描述符(输出到command line,就是1)
buf:通常是一个字符串,需要写入的字符串
count:是每次写入的字节数

成功:返回写入的字节数
失败:返回-1并设置errno
ps: 写常规文件时,write的返回值通常等于请求写的字节
数count, 而向终端设备或者网络写时则不一定
例子
第三章管道通信
wait函数
所需头文件
#include<sys/types.h>
#include<sys/wait.h>

函数原型 pid_t wait (int * status);
函数说明:wait()会暂时停止目前进程的执行, 直到有信号来到或子进程结束. 如果在调用wait()时子进程已经结束, 则wait()会立即返回子进程结束状态值. 子进程的结束状态值会由参数status 返回, 而子进程的进程识别码也会一块返回. 如果不在意结束状态值, 则参数 status 可以设成NULL.
例子
第三章管道通信
exit函数
所需头文件
#include <stdlib.h>

函数原型 void exit(int value);
函数说明:退出程序,并专将参数value的值返回给主调进程。
exit(0):正常运行程序并退出程序;
exit(1):非正常运行导致退出程序;
exit函数是退出应用程序,删除进程使用的内存空间,并将应用程序的一个状态返回给OS(操作系统),这个状态标识了应用程序的一些运行信息,这个信息和机器和操作系统有关,一般是 0 为正常退出,非0 为非正常退出。

管道通信代码片段
功能:两个子进程分别向管道中写入一个字符串,父进程读出后打印输出。
第三章管道通信
第三章管道通信