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()9 async 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