1 #![warn(rust_2018_idioms)] 2 #![cfg(feature = "full")] 3 #![cfg(windows)] 4 5 use tokio::process::Command; 6 use winapi::um::processthreadsapi::GetProcessId; 7 8 #[tokio::test] obtain_raw_handle()9async fn obtain_raw_handle() { 10 let mut cmd = Command::new("cmd"); 11 cmd.kill_on_drop(true); 12 cmd.arg("/c"); 13 cmd.arg("pause"); 14 15 let child = cmd.spawn().unwrap(); 16 17 let orig_id = child.id().expect("missing id"); 18 assert!(orig_id > 0); 19 20 let handle = child.raw_handle().expect("process stopped"); 21 let handled_id = unsafe { GetProcessId(handle as _) }; 22 assert_eq!(handled_id, orig_id); 23 } 24