cuốn sách gpt4 ai đã làm

c++ - Cách khôi phục đầu ra tiêu chuẩn sau khi sử dụng freopen

In lại Tác giả: Hồ Xil Thời gian cập nhật: 2023-11-01 15:24:59 30 4
mua khóa gpt4 Nike

Tôi cố gắng chuyển hướng đầu ra trong chương trình C++ của mình từ đầu ra tiêu chuẩn bằng cách sử dụng:

 freopen(cmd.c_str(),"w",stdout);    

Sau đó gọi hệ thống để thực thi cmd. Tôi cũng đã thử phân nhánh và sau đó gọi execvp. Dù bằng cách nào, khi điều khiển chương trình quay lại chương trình của tôi, những gì được ghi vào thiết bị xuất chuẩn sẽ không còn được hiển thị nữa. Làm thế nào để khôi phục hành vi bình thường?

câu trả lời hay nhất

Đây là giải pháp cho stdin nếu được thực thi trong một vòng lặp, cần giải quyết vấn đề này cho một chương trình mà sự mở tự do của stdin xảy ra trong vòng lặp trong một số điều kiện nhất định. Tôi đã mất một thời gian để tìm ra nó (với các tìm kiếm và tất cả sự trợ giúp), vì vậy hãy đăng ở đây

savestdin = dup(STDIN_FILENO);  
trong khi (1) {
.
.
nếu (tệp đầu vào) {
savestdin = dup(savestdin);
freopen(tệp đầu vào, "r", stdin);
khôi phục = TRUE;
}
.
.
nếu (khôi phụcdin) {
fflush(stdin);
fclose(stdin);
stdin = fdopen(savestdin, "r");
khôi phục lại = SAI;
}
.
.

}

Về c++ - cách khôi phục đầu ra tiêu chuẩn sau khi sử dụng freopen, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/5846691/

30 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress