使用C语言编写一个程序,建立一个pipe,同时父进程产生一个子进程,子进程向pipe中写入一个字符串,父进程从中读出该字符串,要求每隔5秒输出一次。
时间: 2023-06-13 17:07:32 浏览: 210
以下是使用C语言编写的程序,实现了建立pipe、产生子进程、向pipe中写入字符串和从中读出字符串的功能,并且每隔5秒输出一次:
```c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>
#include <string.h>
#include <sys/types.h>
#include <sys/wait.h>
#define BUFFER_SIZE 256
int main() {
int fd[2]; // pipe文件描述符数组
pid_t pid; // 进程ID
char buffer[BUFFER_SIZE]; // 缓冲区
// 创建pipe
if (pipe(fd) == -1) {
perror("pipe");
exit(EXIT_FAILURE);
}
// 创建子进程
pid = fork();
if (pid == -1) {
perror("fork");
exit(EXIT_FAILURE);
}
if (pid == 0) { // 子进程
close(fd[0]); // 关闭读端
char* msg = "Hello, parent process!";
write(fd[1], msg, strlen(msg) + 1);
close(fd[1]); // 关闭写端
exit(EXIT_SUCCESS);
} else { // 父进程
close(fd[1]); // 关闭写端
while (1) {
read(fd[0], buffer, BUFFER_SIZE);
printf("Received message: %s\n", buffer);
sleep(5);
}
close(fd[0]); // 关闭读端
exit(EXIT_SUCCESS);
}
}
```
程序首先创建了一个pipe,然后产生一个子进程。在子进程中,关闭了读端,并向写端中写入了一个字符串。在父进程中,关闭了写端,并进入了一个循环,不断从读端中读取字符串并输出。循环体内使用了`sleep`函数来实现每隔5秒输出一次的功能。最后,关闭了读端并退出程序。
阅读全文