Enviado em 25/11/2018 - 10:37h
//-------------------------------------------------------------------
//
// ARQUIVO:
// redirect.c
//
// COMPILE:
// redirect.c -o redirect -Wall
//
//-------------------------------------------------------------------
//
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <io.h>
#include <fcntl.h>
//#include <windows.h>
#define STRING_LEN 50000
char string [STRING_LEN+1];
int out_pipe[2];
int saved_stdout;
int main (void) {
saved_stdout = dup (STDOUT_FILENO); // salva stdout para no final restaurar
#ifdef WIN32
if (_pipe (out_pipe, sizeof(string), O_BINARY) != 0 ) {
#endif
#ifdef __linux__
if (pipe(out_pipe) != 0 ) {
#endif
exit(1);
}
dup2 (out_pipe[1], STDOUT_FILENO); // REdireciona stdout para o pipe
close (out_pipe[1]);
// so para testar ...
// system ("gcc -v"); //------------------- LINHA 42 ---------------------
system ("hello"); // meu programa teste
printf ("HELLO WORLD\n");
fflush (stdout);
read (out_pipe[0], string, STRING_LEN); // ler o pipe ... "string"
dup2 (saved_stdout, STDOUT_FILENO); // restaura stdout para teste
printf("MY_STRING(\n%s)\n", string);
return 0;
}
#include <stdio.h>
int main (void) {
printf ("Hello World -- My program\n");
return 0;
}