以下c程序用于通过管道将消息从父进程发送到子进程(使用fork()创建)到子进程,并在linux终端上运行!

#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>

int main(int argc,char *arg[]){
    pid_t child;
    int pipefd[2];
    int ret;
    char message[20];
    ret =pipe(pipefd);


          if((child=fork())==0){
                              printf("The child process \n");
                              close(pipefd[0]);
                                   write(pipefd[1],"Hello from parent",17);

                              }

                              else{
                                   close(pipefd[1]);
                              read(pipefd[0],message,17);
                              printf("Message from parent %s\n",message);
                                   }
                                   return 0;
                                   }


上面的代码打印消息“来自父级的问候”,但是在父级部分的末尾会打印一个@符号!原因是什么,我该如何纠正?

最佳答案

还发送字符串末尾的空字符。阅读也一样。

write(pipefd[1],"Hello from parent",18);

关于c - 在消息末尾获取不需要的字符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40256379/

10-14 02:33