process - 使用管道的 IPC,ABC
问题描述
有一个过程称为A,B,C。
我想要 A->B->C
A:父进程 B:子进程 c:孙进程
打开A中的文本文件
打开文本文件并将其移动到 A 到 B 到 C。从 C 输出。
但是,没有输出结果出现。
有什么问题?
int main(int argc, char *argv[])
pwstream=fdopen(ppipe[1],"w");
prstream=fdopen(ppipe[0],"r");
pid_t pid;
pid_t qpid;
pid=fork();
if(pid>0){ //parent
fclose(prstream);
while(!stat){
if(fgets(line,BUFFER_SIZE,fpin)){
fputs(line,pwstream); //to pipe
}
else{
stat=feof(fpin);
}
}
fclose(fpin);
fclose(pwstream);
wait(&status);
qpid=fork();
if(qpid>0){ //grandchild
fclose(pwstream);
printf("grand chlid\n");
while(!stat){
if(fgets(line,BUFFER_SIZE,prstream)){
fputs(line,stdout);
}
}
fclose(prstream);
}
}
else if(pid==0){ //child
while(!stat){
if(fgets(line,BUFFER_SIZE,prstream)){
for(int i=0;line[i];i++){
line[i]=toupper(line[i]);
}
fputs(line,pwstream);
}
else{
stat=feof(prstream);
}
}
fclose(prstream);
fclose(pwstream);
printf("bye\n");
exit(22);
}
else{
printf("error\n");
}
return 0;
解决方案
推荐阅读
- javascript - Synology SSO 服务器
- vue.js - 最新 Parcel + Vue 示例
- css - 从 html 中的交互式表格更新绘图
- html - 在 Firefox 上隐藏消息“找不到支持格式和 MIME 类型的视频”
- c# - 如何在 C# 中反序列化奇怪的 JSON 格式
- macos - 无法在mac上复制和安装android studio
- scala - 在 Apache Spark 中使用 RESTful API 并转换为 Dataframe
- rxjs - 如何测试使用 rxjs 弹珠发出分组事件的可观察对象?
- c# - 以编程方式减少 TIME_WAIT 或 CLOSE_WAIT
- javascript - 如何排除 gulp src 中的路径?