クロスメモリアタッチについて質問しました(クロスメモリアタッチ。子プロセスから親プロセスへのリモートアドレスを取得するにはどうすればよいですか)
パイプを使用して、アドレスを子プロセスから親プロセスに転送しています。コード:
#include <stdio.h>
#include <sys/uio.h>
#include <sys/types.h>
#include <unistd.h>
#include <string.h>
int main()
{
int i, nbytes; //nbytes to keep a count of the no. of bytes received
int fd[2]; //file descriptor
int pid1, ppid;
char temp;
char string[] = "hello world\n";
char *readbuffer = NULL;
int address;
ppid = getpid();
printf("I am the parent process pid : %d \n", ppid);
pipe(fd);
pid1 = fork(); //child A
if(pid1 == -1){
perror("fork");
return 1 ;
}
if(pid1 == 0){ //body of the child process
readbuffer = string;
printf("child process A with pid : %d\n",getpid());
printf("Address of the string : %p\n", readbuffer);
//snprintf(string, 80,"%p\n",address);
close(fd[0]);
write(fd[1], readbuffer, sizeof(readbuffer));
} else {
printf("I am the parent : %d\n", getpid());
close(fd[1]);
nbytes = read(fd[0], readbuffer, sizeof(readbuffer));
printf("The address of the rcvd buffer : %s\n", readbuffer);
}
return 0;
}
親は、「readbuffer」ポインターで子から文字列のアドレスを受け取ります。しかし、子から送信された「文字列」のアドレスを見ることができません。パイプを正しく使用しているかどうか教えてください。