Я пытаюсь перенаправить стандартный вывод в файл, а затем восстановить его обратно в исходный в C, но я сталкиваюсь со следующей странной проблемой - следующий фрагмент кода успешно пишетin stdout
in stdout
в стандартный вывод и in file
в соответствующем файле, который все в порядке.
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#define STDOUT 1
int main(int argc, char* argv[]){
printf("in stdout \n");
int old_out = dup(STDOUT);
close(STDOUT);
int fd = open("./redirected",O_CREAT|O_RDWR|O_TRUNC,0777);
printf("in file \n");
close(fd);
dup(old_out);
printf("in stdout\n");
return EXIT_SUCCESS;
}
Однако удаление первой строки моей основной функции:
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#define STDOUT 1
int main(int argc, char* argv[]){
int old_out = dup(STDOUT);
close(STDOUT);
int fd = open("./redirected",O_CREAT|O_RDWR|O_TRUNC,0777);
printf("in file \n");
close(fd);
dup(old_out);
printf("in stdout\n");
return EXIT_SUCCESS;
}
приводит к in file
in stdout
записывается на стандартный вывод и ничего не записывается в файл.Интересно, как это случилось?Спасибо за любую помощь.