Я написал код, который генерирует случайное число в дочернем процессе, используя rand () ... Мне нужно отправить это случайное значение в родительский процесс, используя pipe (). когда я использую read () и write (), значения, полученные родителем, равны 0, а не случайному числу.
Я не получаю никакой ошибки, просто выводим значение Получено: 0.
#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
#include<pthread.h>
#include<fcntl.h>
int main ()
{
pid_t Cpid;
int fd[2];
int rVal;
//pid will store the value of fork()
Cpid = fork();
pipe(fd);
if( Cpid == 0)
{
//CHILD
rVal = rand()%100;
;
//this is in child process
close (fd[0]);
rVal = rand()%100;
write(fd[1], &rVal,sizeof (rVal));
close (fd[1]);
printf(" Child Pid : %d sending random value : %d to parent : %d\n",
getpid(), rVal, getppid());
}
else if(Cpid != 0 )
{
printf (" Parent PID : %d\n", getpid());
//this is the parent process
close(fd[1]);
read(fd[0], &rVal, sizeof(rVal));
printf(" value recieved is : %d\n", rVal);
close(fd[0]);
printf(" value recieved by parent : %d\n", rVal);
}
return 0;
}