/ / Como usar o popen para entrada e saída ao mesmo tempo? [duplicado] - c, linux, unix, pipe

Como usar o popen para entrada e saída ao mesmo tempo? [duplicado] - c, linux, unix, pipe

Eu uso o código psuedo para expressar o que quero fazer:

FILE* fd = popen("/bin/cat", ...);
Write some data to the stdin of `/bin/cat` using fd;
Read all data from the stdout of `/bin/cat` using fd;

É possível?

Respostas:

2 para resposta № 1

popen () só pode ler o novo processo. Se você precisa ler e escrever,

  • Crie um pipe que será conectado a um novo processo usando pipe().
  • Bifurque um novo processo usando fork()
  • redirecionar as entradas e saídas do processo para os pipes que você criou anteriormente usando dup2()
  • chamar exec no processo filho (o novo processo) usando exec funções familiares