Tôi đang viết một hàm, trong đó, đưa ra một đối số, hoặc chuyển hướng stdout tới tệp hoặc đọc stdin từ tệp. Để làm điều này, tôi đóng bộ mô tả tập tin được liên kết với stdout hoặc stdin, để khi tôi mở tập tin nó mở ra dưới phần mô tả mà tôi vừa đóng. Điều này làm việc, nhưng vấn đề là một khi điều này được thực hiện, tôi cần phải khôi phục lại stdout và stdin để những gì họ thực sự cần được.Mở lại mô tả tệp stdout và stdin sau khi đóng chúng
Những gì tôi có thể làm cho stdout là mở ("/ dev/tty", O_WRONLY); Nhưng tôi không chắc tại sao nó lại hoạt động, và quan trọng hơn là tôi không biết câu lệnh tương đương cho stdin.
Vì vậy, tôi có, cho stdout
close(1);
if (creat(filePath, O_RDWR) == -1)
{
exit(1);
}
và cho stdin
close(0);
if (open(filePath, O_RDONLY) == -1)
{
exit(1);
}
man 'dup' và' dup2' –
'O_RDWR' là cho tham số' mở' 'cờ' không cho tham số' tạo' 'mode'. –