Читать записи (распечатки) из другой библиотеки - PullRequest
0 голосов
/ 10 января 2020

Я в основном хочу написать (распечатать) некоторые числа из одной библиотеки и прочитать эти распечатки из другой библиотеки. Но сейчас есть возможность передавать какие-либо структуры между этими библиотеками

Единственное, что я могу использовать, это 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]);

    //}
  //}
}
...