zoukankan      html  css  js  c++  java
  • atitit.跨语言执行cmd cli api的原理及兼容性设计草案

    atitit.跨语言执行cmd cli api的原理及兼容性设计草案

    1标准输入,标准输出,标准错误与重新定向1

    2常见问题2

    2.1. 执行bat文件2

    2.2. 执行bat文件  /c  与/k   /k  参数,有利于调试2

    2.3. Bat参数的隐藏命令::使用@后头符2

    2.4. 空格的问题 双引号解决2

    2.5. 回显乱码 cmd win默认是gbk编码..使用gbk编码读取佐ok2

    2.6.  双引号转译问题2

    2.7. Name param的问题2

    3Java code3

    4C#.net code4

    5参考5

     

    1. 标准输入,标准输出,标准错误与重新定向

    当Linux执行一个程序的时候,会自动打开三个流,标准输入(standard input),标准输出(standard output),标准错误(standard error)。比如说你打开命令行的时候,默认情况下,命令行的标准输入连接到键盘,标准输出和标准错误都连接到屏幕。对于一个程序来说,尽管它总会打开这三个流,但它会根据需要使用,并不是一定要使用。

     

    作者:: 绰号:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊 ) 汉字名:艾龙,  EMAIL:1466519819@qq.com

    转载请注明来源: http://blog.csdn.net/attilax

     

    2. 常见问题

    2.1. 执行bat文件

    2.2. 执行bat文件  /c  与/k   /k  参数,有利于调试

     。如果使用 cmd/c 就可以省掉 EXIT 

     使用process explorer可以看到实际的调用参数

    2.3. Bat参数的隐藏命令::使用@后头符

    2.4. 空格的问题 双引号解决

    2.5. 回显乱码 cmd win默认是gbk编码..使用gbk编码读取佐ok

     

     header('Content-Type:text/html;charset=gbk');  

    2.6.  双引号转译问题

    好像是三个双引号

     

     

    2.7. Name param的问题

    参考apache cli模块即可。

    3. Java code

    package com.attilax.cmd;

     

    import java.io.BufferedReader;

    import java.io.IOException;

    import java.io.InputStream;

    import java.io.InputStreamReader;

    import java.io.UnsupportedEncodingException;

     

    public class CmdX {

     

    public static void main(String[] args) {

    // TODO Auto-generated method stub

     

    }

     

    public static void redirectEcho2Screen(Process process) {

    System.out.println("--echo stdin info:");

    echoCmdResult_out(process.getInputStream());

    System.out.println("--echo err info:");

    echoCmdResult_out(process.getErrorStream());

    }

     

    private static BufferedReader echoCmdResult_out(InputStream is)

     

    {

     

     

    BufferedReader reader = null;

    // BufferedReader reader;

    InputStreamReader inputStreamReader;

    try {

    inputStreamReader = new InputStreamReader(is,

    "gbk");

    catch (UnsupportedEncodingException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    throw new RuntimeException(e);

    }

    reader = new BufferedReader(inputStreamReader);

    String line = null;

    try {

    line = reader.readLine();

    catch (IOException e1) {

    // TODO Auto-generated catch block

    e1.printStackTrace();

    }

     

    while (line != null) {

    System.out.println(line);

    try {

    line = reader.readLine();

    catch (IOException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    }

    }

    if (reader != null) {

    try {

    reader.close();

    catch (IOException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    }

    }

    return reader;

    }

     

    }

     

    4. C#.net code 

    参考Atitit.执行cli cmd的原理与调试 - attilax的专栏 博客频道 - CSDN.NET.htm

    5. 参考

    Linux文本流和标准输入、标准输出、标准错误与重定向介绍_LINUX_操作系统_脚本之家.htm

     

    标准输入、输出和错误输出 - huaijin - ITeye技术网站.htm

     

    Atitit.执行cli cmd的原理与调试 - attilax的专栏 博客频道 - CSDN.NET.htm

     

  • 相关阅读:
    三个习题
    20 python--celery
    19 python --队列
    18 python --多线程
    17 python --多进程
    16 python --memcached
    15 python --redis
    14 python --mysql
    13 python --正则
    12 python --json
  • 原文地址:https://www.cnblogs.com/attilax/p/5963522.html
Copyright © 2011-2022 走看看