none
请教有关C#Process类 RRS feed

  • 问题

  • 我现在利用C#的Process类调用一个C++程序,需要对其进行输入输出重定向。

    这个C++程序可能会有些违例操作,例如数组越界。

    我现在用WaitForExit(Int32)方法限制其执行时间。但是不知道如何判断这个C++程序究竟是崩溃还是超过时间限制还在执行呢?貌似如果它崩溃Process不会马上结束,超过时间限制我也需要把这个C++程序Kill掉,这两种情况下ExitCode都等于-1。苦恼中。

    2012年12月3日 15:34

答案

  • 这个C++的程序是自己进行实现的么?

    如果是自己进行实现的,可以在运行的时候为程序的状态进行输出。

    Running

    Waiting

    Broken 当然崩溃的话,程序自动退出了。

    然后C#对输出进行读取判断。

     

    如果无法修改C++的程序,可以尝试检查其CPU的占用,如果其已经闲置了,完全可以认为其出现问题了,kill掉并返回其出现问题的信息就好了。

    2012年12月5日 2:37

全部回复

  • 也就是说如何区分 Time Limit Exceed 和 Runtime Error呢?
    2012年12月3日 15:59
  • 这个C++的程序是自己进行实现的么?

    如果是自己进行实现的,可以在运行的时候为程序的状态进行输出。

    Running

    Waiting

    Broken 当然崩溃的话,程序自动退出了。

    然后C#对输出进行读取判断。

     

    如果无法修改C++的程序,可以尝试检查其CPU的占用,如果其已经闲置了,完全可以认为其出现问题了,kill掉并返回其出现问题的信息就好了。

    2012年12月5日 2:37