Próbuję użyć przekierowań w C, aby przekierować dane wejściowe do jednego pliku, a następnie ustawić standardowe wyjście z powrotem do drukowania na ekranie. Czy ktoś mógłby mi powiedzieć, co jest nie tak z tym kodem?Przekierowywanie standardowego wyjścia c, a następnie resetowanie standardowego wyjścia
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
int main(int argc, char** argv) {
//create file "test" if it doesn't exist and open for writing setting permissions to 777
int file = open("test", O_CREAT | O_WRONLY, 0777);
//create another file handle for output
int current_out = dup(1);
printf("this will be printed to the screen\n");
if(dup2(file, 1) < 0) {
fprintf(stderr, "couldn't redirect output\n");
return 1;
}
printf("this will be printed to the file\n");
if(dup2(current_out, file) < 0) {
fprintf(stderr, "couldn't reset output\n");
return 1;
}
printf("and this will be printed to the screen again\n");
return 0;
}
Istnieje zupełnie inny sposób rozwiązania tego samego problemu tutaj: http://stackoverflow.com/questions/584868/rerouting-stdin-and-stdout-from-c. – Sam