Не получается передать структуру через PIPE другой программе. В интернете много примеров с fork(), но сделать тоже самое для 2 разных программ не получается.
1 программа:
int pipefd[2], rs;
my_struct pipe_msg;
char buf[sizeof(my_struct)];
rs = pipe(pipefd);
printf("pipe1 = %i, pipe2 = %i\n", pipefd[0], pipefd[1]);
if(rs < 0) {
printf(" *PIPE [ ERROR ]\n");
return -1;
}
printf(" *PIPE [ OK ]\n");
close(pipefd[1]);
while(1) {
read(pipefd[0], buf, sizeof(my_struct));
if (strcmp("",buf)!=0)
{
memcpy(&pipe_msg, &buf[0], sizeof(my_struct));
}
memset(buf, 0, sizeof(buf));
}
2 программа
PS: дескрипторы ставлю 3 и 4.
Делаю так, потому что увидел как
тут передают дескриптор второй программе в виде параметра.
int rs;
my_struct pipe_msg;
char buf[sizeof(my_struct)];
int pipefd[2] = {3,4}; //так как и в программе 1, дескрипторы всегда тоже 3 и 4
pipe_msg.val1 = 2;
pipe_msg.val2 = 3;
memcpy(&buf[0], &pipe_msg, sizeof(my_struct));
write(pipefd[1], &buf, sizeof(my_struct));
perror("Write:");
Вторая программа выводит: bad file descriptor.