我现在的做法是将所有命令写入shell文件
大概有700个命令
然后用java执行shell文件的时候
执行了400条之后就卡住不动了请问这是什么问题呢。。
这个sh文件在命令行直接执行就没问题
卡住不动的那条直接在命令行执行也没问题
问问各位大大 这其中涉及到什么执行超时的概念吗小弟在这感谢各位了

解决方案 »

  1.   

    是不是环境变量不同呢?建议你试验下shell文件里只写那个有问题的shell,然后用java执行下试试。
      

  2.   

    那说明不是shell命令的问题,试试获取这个Process的错误流,看看报什么错误。
      

  3.   

    类 Process
    创建进程的方法可能无法针对某些本机平台上的特定进程很好地工作,比如,本机窗口进程,守护进程,Microsoft Windows 上的 Win16/DOS 进程,或者 shell 脚本。创建的子进程没有自己的终端或控制台。它的所有标准 io(即 stdin、stdout 和 stderr)操作都将通过三个流 (getOutputStream()、getInputStream() 和 getErrorStream()) 重定向到父进程。父进程使用这些流来提供到子进程的输入和获得从子进程的输出。因为有些本机平台仅针对标准输入和输出流提供有限的缓冲区大小,如果读写子进程的输出流或输入流迅速出现失败,则可能导致子进程阻塞,甚至产生死锁。 
    不知道是否和这个有关
      

  4.   

    输出流没有flush被塞满了?这个可能性比较大
      

  5.   


    我加了下面的代码,还是不行OutputStream ps = p.getOutputStream();
    ps.flush();
      

  6.   

    最后还是决定不执行那么多了
    设置一个定时shell不断扫描一个文件  如果文件里是0就不执行
    如果是1就执行之前的文件
    java程序写文件  将文件里的0改成1   执行完再将文件置为0