实验4 进程之间的通信
实验性质:验证性
实验学时:4学时
一、实验目的
1.掌握管道、信号、共享内存、消息队列等进程间通信机制;
2.能够利进程间通信机制求解一些常见问题。
二、实验预备知识
1.阅读并掌握C语言基本语法,操作。
2.熟悉Linux常用命令及使用方法。
3.实验内容
- 编写程序实现以下功能:
利用匿名管道实现父子进程间通信,要求
父进程发送字符串“hello child”给子进程;
子进程收到父进程发送的数据后,给父进程回复“hello farther”;
父子进程通信完毕,父进程依次打印子进程的退出状态以及子进程的pid。
源代码:
实验4 进程之间的通信
实验性质:验证性
实验学时:4学时
一、实验目的
1.掌握管道、信号、共享内存、消息队列等进程间通信机制;
2.能够利进程间通信机制求解一些常见问题。
二、实验预备知识
1.阅读并掌握C语言基本语法,操作。
2.熟悉Linux常用命令及使用方法。
3.实验内容
1. 编写程序实现以下功能:
利用匿名管道实现父子进程间通信,要求
父进程发送字符串“hello child”给子进程;
子进程收到父进程发送的数据后,给父进程回复“hello farther”;
父子进程通信完毕,父进程依次打印子进程的退出状态以及子进程的pid。
源代码:
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
int main(int argc,char *argv[])
{
int fd1[2],fd2[2];
pipe(fd1);
pipe(fd2);
int pid=fork();
if(pid>0)
{
close (fd1[0]);
close (fd2[1]);
char str[25];
write(fd1[1],"hello child!\n",25);
read(fd2[0],str,25);
printf("%s",str);
int status;
int i=wait(&status);
printf("pid:%d\t%d\n",i,WIFEXITED(status));
exit(0);
}
else if(pid==0)
{
close (fd1[1]);
close (fd2[0]);
char str[25];
read(fd1[0],str,25);