//https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=1532a4ff9c699e1ed33cda47e81593b7 use std::error::Error; use tokio::runtime::Runtime; use tokio::process::{Command, Child}; use std::process::Output; pub fn main() -> Result<(), Box> { let mut rt = Runtime::new().unwrap(); let answer = rt.block_on(is_mount_point_mounted("/mnt/lustre1"))?; println!("answer = {:?}", answer); Ok(()) } pub async fn is_mount_point_mounted(mount_point: &str) -> std::io::Result { let process: Child = Command::new("mountpoint") .arg("-q") .arg(mount_point) .spawn()?; let output: Output = process.wait_with_output().await?; Ok(output.status.success()) }