0
私は非常に基本的なことを行うプロセスで簡単なプログラムを作成しました。 は不思議なこと、父は唯一の奇妙な文字を読んで、私は理由を知りません(私は理由を控除する過去の時間のためにしようとしませんが、何も成功してきた出力のシンプルなPIPEプログラムは、奇妙な文字を読み取る
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
// cp = Child -> Parent, pc = Parent -> child
int cp[2], pc[2];
int main(){
char str[13]="Hello World";
char received[13];
pid_t pid;
pid = fork();
if (pid == -1){
printf("An error occured!\n");
exit(1);
}
int res = pipe(cp);
if (res == -1){
printf("Error when creating pipe!..\n");
exit(1);
}
//pipe(pc);
if (pid==0){
// Child process
close(cp[0]);
write(cp[1], str, 10);
close(cp[1]);
exit(0);
}else{
// Parent process
close(cp[1]);
read(cp[0], received, 10);
close(cp[0]);
printf("We received from child: %s\n", received);
exit(1);
}
return 0;
}
例:。 1)私たちは、子供から受け取りました:@ 2)私たちは子供から受け取った: XCV
なぜあなたはこのように行っています。 'char str [13] =" Hello World \ 0 ";'二重引用符を使用すると、ヌル終了に引用符を付ける必要はありません。 – LethalProgrammer
ごめんなさい、それはただの何かでした。 – SnuKies
@SnuKiesあなたは 'char str [] =" Hello World "というサイズを入れる必要さえなく;' – Stargateur