下载此文档

操作系统管道通信课程设计.doc


文档分类:通信/电子 | 页数:约21页 举报非法文档有奖
1/21
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/21 下载此文档
文档列表 文档介绍
课程名称:
操作系统
设计题目:
管道通讯
指导教师:
*******

级:
*******

号:
*****
学生姓名:
***
同组人员:
*******************

绩:
先创立一个管道,再经过 fork 函数创立一个子进度,
该子进度会继承父进度创立的管道。注意事项:必须在系统调用 fork ()前调用 pipe (),
否则子进度将不会继承文件描绘符。 否则, 会创立两个管道, 因为父子进度共享同一段代码
段,都会各自调用 pipe (),即成立两个管道,出现异样错误。 父进度经过管道向服务器发
布命令,然后由服务器履行命令。
()
创立一个新进度。
用法:

int fork()
其中返回

int

取值意义如下

:
0:创立子进度 , 从子进度返回的 id 值
>0:从父进度返回的子进度 id 值
-1 :创立失败
(files,function,size)
用作锁定文件的某些段或许整个文件。
头文件 :
#include <>
参数定义 :
int lockf(files,function,size);
int files,function;
long size;
其中 :files 是文件描绘符; function 是锁定和解锁; 1 表示锁定;
定或解锁的字节数,若用 0, 表示从文件的目前地点到文件尾。

0 表示解锁;

Size

是锁

功能:从描绘符为

filedes

的文件读信息。
用法:
#include <>
ssize_t read(int

filedes

, void *

buff

, size_t

nbytes ) ;
返回:读到的字节数,若已到文件尾为

0,若犯错为

-1 。
在 UNIX/Linux 可重定义为:
int read(int fd, char *buff , unsigned nbytes) ;

功能:向已翻开的文件写数据。
用法:
#include <>
ssize_t write(int

filedes

, const void *

buff

, size_t

nbytes ) ;
返回值:若成功为已写入的字节数;犯错为

-1 。
int write(int fd, char *

buff

, unsigned

nbytes

) ;
文件地点指针
文件地点指针: 每个翻开文件都有一个与其有关系的“目前位移量”。 是从文件开始处
计算的字节数。 往常,读、 写操作都从目前文件地点处开始,并使位移量增加所读或写的字节数。
按系统默认,当翻开一个文件时,除非指定 O_APPEND选择项,否则该位移量被设置为
0,即指向文件的开始处。
文件地点指针能够经过系统调用 lseek 来移动。
#include <>
#include <sys/>
#include <>
#include <>
#include <>
#include <>
/*
程序入口
*/
int main()
{
int pipe_fd[2];
pid_t pid;
char buf_r[100];
char* p_wbuf;
int r_num;
memset(buf_r,0,sizeof(buf_r)); // 对较大的构造体或数组进行清零操作的一种最快方法
/* 创立管道 */
if(pipe(pipe_fd)<0)
{
printf("pipe create error\n");
return -1;
}
/* 创立子进度 */
if((pid=fork())==0)
{

//子进度履行序列
printf(

操作系统管道通信课程设计 来自淘豆网m.daumloan.com转载请标明出处.

非法内容举报中心
文档信息
最近更新