linux C语言 管道pipe的问题

zachary1984 2010-06-21 09:23:56
初识linux,不太懂这道题,请高手写下过程供分析,最好有注释,不胜感激...

程序要求:
生成新的进程,把从命令行输入的信息从子进程送到父进程的程序。unipipe
如下:
$ ./unipipe [strings(CtoP}]
$
$ ./twopipe “Hello, This is Child process”
<PARENT> message from child: Hello, This is Child process

要点:
利用fork()等,使用单方向管道。 子进程数据-->写入write() fd[1]-->读出read() fd[0]-->父进程
过程见下图


注:此题是翻译过来的,所以语言组织的可能不是很好,见谅
...全文
133 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
zachary1984 2010-06-23
  • 打赏
  • 举报
回复
这个程序编译出错了 ..
[Quote=引用 1 楼 logic0 的回复:]
C/C++ code

楼主应该好好看看APUE
下面是一个例子,也是你题目的程序
int main(int argc,char **args)
{
int fd[2];
pid_t pid;
char line[MAXLEN];
if(pipe(fd) < 0)
{
printf("error pipe");exi……
[/Quote]
非兔子_Logic0 2010-06-21
  • 打赏
  • 举报
回复

楼主应该好好看看APUE
下面是一个例子,也是你题目的程序
int main(int argc,char **args)
{
int fd[2];
pid_t pid;
char line[MAXLEN];
if(pipe(fd) < 0)
{
printf("error pipe");exit(0);
}
if((pid = fork()) < 0)
{
printf("error fork");exit(0);
}
else
{
if(pid == 0)
{
close(fd[0]);
write(fd[1],args[1],strlen(args[1]));
}
else
{
close(fd[1]);
n = read(fd[0],line,MAXLEN);
printf("<PARENT> message from child:%s",line);
}
}
}

23,118

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧