分享

c语言pipe

 北漂之邬 2014-02-13
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <string.h>
void fun1() {
pid_t fd;
int pipefd[2];
if (0 > pipe(pipefd)) {
fprintf(stderr, "pipe errno is %s\n", strerror(errno));
} else {
}

if (0 > (fd = fork())) {
fprintf(stderr, "fork errno is %s\n", strerror(errno));
} else if (fd == 0) {
//子进程
close(pipefd[0]);
char buf[15] = { '\0' };
while (1) {
fgets(buf, sizeof(buf) - 1, stdin);
if (0 > write(pipefd[1], buf, sizeof(buf)-1)) {
fprintf(stderr, "write errno is %s\n", strerror(errno));
}
memset(buf, 0, sizeof(buf));
printf("chlid\n");
}
close(pipefd[1]);
exit(0);
} else {
//父进程
close(pipefd[1]);
char buf[10] = { '\0' };
memset(buf, 0, sizeof(buf));
while (1) {
int k=0;
while (0!=(k= read(pipefd[0], buf, sizeof(buf) - 1))) {
printf("parent = %s k=%d\n", buf,k);
memset(buf, 0, sizeof(buf));
k=0;
}
// fprintf(stderr, "read errno is %s\n", strerror(errno));
}
close(pipefd[0]);
exit(0);
}
}
int main(void) {
fun1();
puts("!!!Hello World!!!"); /* prints !!!Hello World!!! */
return EXIT_SUCCESS;
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多