现在有一个c++编写的exe,他自己启动运行是正常的。我从java中用创建进程的方法启动这个exe,运行不正常。哪位知道是什么原因?我怀疑是不是因为创建进程时把新的进程当作了java程序的子进程,导致进程权限不够。想问一下各位,如何在创建进程时,把进程作为一个独立的进程,而不是作为子进程启动?

解决方案 »

  1.   

    我觉得不是子进程, 你用java打开个记事本,即使java程序退出了, 记事本也不会关闭的
      

  2.   

    如果不是子进程,那么也就是说,在java中启动和不在java中启动时一样的。哪为什么执行的结果却不一样呢?会不会和java虚拟机的安全特性有关系?
      

  3.   

    的确,你用Java的runtime起的进程都是当前JVM的子进程,若要起系统级别的独立进程在Windows中可以用JNI调用C程序写的起进程的程序,例如用system();方法。
    在Unix/Linux中运行写好的启动脚本就行了
      

  4.   

    举例来说假设你要写一个监控JVM运行状态的程序,而它又由JAVA自己来启动,那必然监控程序不能运行在同一JVM中,否则若JVM崩溃,监控程序也就不存在了,所以只有再启动一个操作系统级别的JVM来进行外部监控。明确一点的是在一个JVM中用Process起的进程一定是当前JVM进程的子进程.这方面很多资料的,随便baidu或google下就能找到了
      

  5.   

    在WIN下 写个BAT,JAVA去调用BAT起C++程序,同样的问题在LINUX下的话,写SHELL,用SHELL起
     这样做比较好,也比较MVC的感觉~~
      

  6.   

    lixiaoxue85(蛮野蛮)的方法不错 支持 支持 支持
      

  7.   

    楼上说的有道理。现在如果我要在java端启动一个独立进程,我应该怎么做?能不能给个例子?谢谢了。
      

  8.   

    你那个 exe 是做什么的呀?真的很需要什么特别的进程权限吗?况且,就算是 Java 进程的子进程,权限也不会低到哪儿去呀?……会不会是启动目录的问题?你用 Java 加载它,跟从操作系统直接启动它,也许就这点区别了……