From: Z.H. <zo...@ye...> - 2017-05-19 12:29:35
|
Hi all, I am using wxLua 2.8.12 for Windows. In the following code, I try to asynchronously execute some command and redirect its output. The problem is, if I close main window before child process terminates, the child process is not deleted. I could still see "tree.com" process inside Windows Task Manager after this wxLua app exits. What is the problem with my code below? -------------------------------------------------------------------- require("wx") frame = wx.wxFrame(wx.NULL, wx.wxID_ANY, "Test") function ExecCommand(cmd) proc = wx.wxProcess(frame) proc:Redirect() pid = wx.wxExecute(cmd, wx.wxEXEC_ASYNC, proc) if pid > 0 then print("process id is " .. tostring(pid)) streamIn = proc and proc:GetInputStream() end end function ReadStream() if streamIn and streamIn:CanRead() then local str = streamIn:Read(4096) end end frame:Connect(wx.wxEVT_IDLE, ReadStream) frame:Connect(wx.wxEVT_END_PROCESS, function(event) proc = nil end) frame:Connect(wx.wxEVT_CLOSE_WINDOW, function(event) if proc then proc:Detach() end event:Skip() end) frame:Show(true) cmd = "tree.com C:\\Windows" ExecCommand(cmd) wx.wxGetApp():MainLoop() |