解决 StackOverflow 异常

Solve StackOverflow exception

虽然我一直在阅读 whosebug.com 中的宝贵帖子,但我对此非常感激。我不需要创建自己的线程。

:) 我一直想知道 Whosebug 是什么意思。最后我"able"实现了这个。

有人对如何修复下面的代码有任何建议吗?

我想做的是以某种方式将命令通过管道传输到新的 cmd 进程中。 这是必需的,因为我需要使用特定的局部变量 运行 cmd。

通常像这样 echo dir | cmd.exe 在一个批次中完成。但是我想单独使用 IronPython 来实现这一点。

提前致谢。

代码示例如下:

import clr

clr.AddReference("mscorlib")
import System

from System.Diagnostics import Process



""" Example"""

class P(System.Diagnostics.Process):
    def __init__(self):
        self.StartInfo.UseShellExecute = True
        self.StartInfo.FileName = r"C:\Windows\System32\cmd.exe"
        self.StartInfo.CreateNoWindow = False
        self.standard_input = None
        self.standard_output = None
        self.standard_error = None


    @property
    def StandardInput(self):
        return self.standard_input

    @StandardInput.getter
    def StandardInput(self):
        return self.standard_input

    @StandardInput.setter
    def StandardInput(self, val):
        self.standard_input = System.IO.StreamWriter(val)

    def Start(self):
        return self.Start()


p_instance = P()
p_instance.Start()
p_instance.StandardInput("dir")

通常当您重写一个方法并想调用原始实现时,您会调用超级实现。您的 Start() 函数正在调用自身导致堆栈溢出。

def Start(self):
    return self.Start()

你需要做这样的事情:

def Start(self):
    return super(P, self).Start()