如何解决在管道中我正在发送一些东西但收到不同的
在这段代码中,我试图从子进程输入一个字符串并在父进程中反转它并在子进程中打印结果。
#include<stdio.h>
#include<unistd.h>
#include<string.h>
int main()
{
int fd[2];
if(pipe(fd) != -1){
printf("Into pipe\n");
int id = fork();
if(id == 0){
close(fd[0]);
char msg[100];
scanf("%s",msg);
printf("Set message is: %s\n",msg);
write(fd[1],msg,sizeof(msg));
close(fd[1]);
sleep(1);
}
else{
close(fd[1]);
char get_msg[100];
char rev_msg[100];
read(fd[0],get_msg,sizeof(get_msg));
close(fd[0]);
printf("Get message is: %s\n",get_msg);
for(int i=0; i<strlen(get_msg); i++)
rev_msg[i] = get_msg[strlen(get_msg)-i-1];
printf("Reverse message is :%s\n",rev_msg);
write(fd[1],rev_msg,sizeof(rev_msg));
close(fd[1]);
sleep(3);
}
if(id == 0){
close(fd[1]);
char getting_msg[100];
read(fd[0],getting_msg,sizeof(getting_msg));
printf("Received reverse message is :%s\n",getting_msg);
}
}
}
正如你所看到的,反向字符串没有从父进程传递到子进程
我想得到的是
收到反向字符串 = 反向消息。
找不到办法做到这一点。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。