rust_project 0.1.5

upload test
Documentation
#![allow(dead_code, unused_imports, unused_must_use)]

// extern crate encoding;

use std::error::Error;
use std::io::{BufRead, BufReader};
use std::process::{self, Command, Stdio};

use encoding::{Encoding, DecoderTrap, EncoderTrap};
use encoding::all::{GBK, UTF_8};

#[allow(dead_code)]
pub fn run_cmd() {
    // cmd_str可以是从输入流读取或从文件里读取
    let cmd_str: String;
    if cfg!(target_os = "windows") {
        // 这里不用\\而是/的话会被windows认为/tmp的/t是一个option而报错
        cmd_str = "dir d:\\program".to_string();
    } else {
        cmd_str = "ls -alh".to_string();
    }

    let output = if cfg!(target_os = "windows") {
        Command::new("cmd")
            .arg("/c")
            .arg(cmd_str)
            .arg("/n")
            .output()
            .expect("cmd exec error!")
    } else {
        Command::new("sh")
            .arg("-c")
            // .arg(cmd_str)
            .args(["ls", "-alh"])
            .arg("/home/user ")
            // .args(["-a", "-l", "-h"])
            .output()
            .expect("sh exec error!")
    };

    // let output_str = String::from_utf8_lossy(&output.stdout);
    // let output_str = String::from_utf8(output.stdout).unwrap();
    // let output_str = String::from_utf8(output.stdout).unwrap();
    // let res = UTF_8.encode(&output_str, EncoderTrap::Strict).unwrap();
    // let out = GBK.decode(&res,DecoderTrap::Strict).unwrap();

    let out = if cfg!(target_os = "windows") {
        GBK.decode(&output.stdout, DecoderTrap::Strict).unwrap()
    } else {
        String::from_utf8(output.stdout).unwrap()
    };

    println!("spider run_cmd ret: {}", out);
}