#include <sys/types.h> /* some systems still require this */
#include <sys/stat.h>
#include <sys/termios.h> /* for winsize */
#if defined(MACOS) || !defined(TIOCGWINSZ)
#include <sys/ioctl.h>
#endif
#include <stdio.h> /* for convenience */
#include <stdlib.h> /* for convenience */
#include <stddef.h> /* for offsetof */
#include <string.h> /* for convenience */
#include <unistd.h> /* for convenience */
#include <signal.h> /* for SIG_ERR */
#define MAXLINE 4096 /* max line length */
#define err_sys printf
int
main(void)
{
int n;
int fd[2];
pid_t pid;
char line[MAXLINE];
if (pipe(fd) < 0)
err_sys("pipe error");
if ((pid = fork()) < 0) {
err_sys("fork error");
} else if (pid > 0) { /* parent */
close(fd[0]);
printf("parent pid=%d start\n", getpid());
write(fd[1], "hello world\n", 12);//父管道写数据
printf("parent pid=%d end\n", getpid());
} else { /* child */
close(fd[1]);
n = read(fd[0], line, MAXLINE);
printf("child pid=%d start\n", getpid());
write(STDOUT_FILENO, line, n);//子进程读取数据
printf("child pid=%d end\n", getpid());
}
exit(0);
}
linux c之pipe的使用例子
最新推荐文章于 2023-09-21 15:14:32 发布