Решить исключение StackOverflow - PullRequest
       19

Решить исключение StackOverflow

0 голосов
/ 17 октября 2019

Хотя я читаю ценные посты в StackOverflow.com, за что я чрезвычайно благодарен. У меня не было необходимости создавать собственную тему.

:) Мне всегда было интересно, что означает StackOverflow. Наконец-то я «смог» этого добиться.

У кого-нибудь есть предложения по исправлению приведенного ниже кода?

Что я пытаюсь сделать, так это каким-то образом направить команду в новый процесс 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")

1 Ответ

0 голосов
/ 24 октября 2019

Обычно, когда вы переопределяете метод и хотите вызвать исходную реализацию, вы вызываете супер реализацию. Ваша Start() функция вызывает сама себя, вызывая переполнение стека.

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

Вам нужно сделать что-то вроде этого:

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