// Test that println! to a closed stdout does not panic. | |
// On Windows, close via CloseHandle. | |
//@ run-pass | |
//@ ignore-sgx no libc | |
#![feature(rustc_private)] | |
#[cfg(windows)] | |
fn close_stdout() { | |
type DWORD = u32; | |
type HANDLE = *mut u8; | |
extern "system" { | |
fn GetStdHandle(which: DWORD) -> HANDLE; | |
fn CloseHandle(handle: HANDLE) -> i32; | |
} | |
const STD_OUTPUT_HANDLE: DWORD = -11i32 as DWORD; | |
unsafe { CloseHandle(GetStdHandle(STD_OUTPUT_HANDLE)); } | |
} | |
#[cfg(not(windows))] | |
fn close_stdout() { | |
extern crate libc; | |
unsafe { libc::close(1); } | |
} | |
fn main() { | |
close_stdout(); | |
println!("hello"); | |
println!("world"); | |
} |