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