2016-10-26 9 views
0

次の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; 
            } 

上記のコードでは、「Hello from parent」というメッセージが表示されますが、親部分の末尾に@記号が印刷されています。理由は何ですか?どうすれば修正できますか?

答えて

1

文字列の最後にあるヌル文字も送信します。読書と同じです。

write(pipefd[1],"Hello from parent",18); 
関連する問題