Я в основном хочу написать (распечатать) некоторые числа из одной библиотеки и прочитать эти распечатки из другой библиотеки. Но сейчас есть возможность передавать какие-либо структуры между этими библиотеками
Единственное, что я могу использовать, это stdout и stderr
Следующий код является похожим рабочим примером того, что я в основном хочу, но там я могу ' t fd [] с другой библиотекой
Обратите также внимание, что эти 2 библиотеки имеют свои собственные операторы печати, но мне просто нужно прочитать записи, которые я хочу, из другой библиотеки (например, как это происходит в труба)
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <poll.h>
#include <stdlib.h>
#include <fcntl.h>
int main() {
char str_sup[1024], inbuf[1024];
int fd[2];
ssize_t bytes_read = 0, total_bytes_read = 0;
sprintf(str_sup,"hello %10s\n","hehe");
write(1, (const void *)str_sup, strlen(str_sup));
if (pipe(fd) < 0)
{
fprintf(stderr, "FATAL ERROR: Pipe creation failed\n");
exit(1);
}
// if (dup2(fd[1],1) < 0)
// {
// fprintf(stderr, "FATAL ERROR: find_groupings(), dup2 stdout redirection failed\n");
// exit(1);
// }
write(fd[1], (const void *)"hello1\n", 7);
write(fd[1], (const void *)"hello2\n", 7);
close(fd[1]);
//while (1)
// {
//if (poll(&(struct pollfd){ .fd = fd[0], .events = POLLIN }, 1, 0)==1) {
// while (bytes_read = read(fd[0], str_sup+total_bytes_read, 1) > 0)
// total_bytes_read += bytes_read;
// str_sup[total_bytes_read]=0;
// fprintf (stderr, "PIPE->\"%s\"", str_sup);
if (fcntl(fd[0], F_SETFL, O_NONBLOCK) < 0)
exit(2);
while (bytes_read = read(fd[0], inbuf, 7) > 0)
printf("PIPE->%s", inbuf);
if (bytes_read != 0)
exit(2);
printf("Finished reading\n");
//close(fd[0]);
//}
//}
}