feat: fix stdout and stderr order error

This commit is contained in:
engigu
2026-02-10 11:57:43 +08:00
parent 3e49f8c7f3
commit 27769c2702
3 changed files with 172 additions and 31 deletions
+16 -8
View File
@@ -341,16 +341,24 @@ func (s *Scheduler) executeTask(req *ExecutionRequest) (*ExecutionResult, error)
var combinedBuf safeBuffer
var stdoutWriter, stderrWriter io.Writer
if stdout != nil {
stdoutWriter = io.MultiWriter(&combinedBuf, stdout)
if stdout != nil && stdout == stderr {
// 如果 stdout 和 stderr 是同一个对象,合并成一个 MultiWriter
// 这样后面 ExecuteWithHooks 才能识别出它们是同一个,从而开启 PTY 模式
mw := io.MultiWriter(&combinedBuf, stdout)
stdoutWriter = mw
stderrWriter = mw
} else {
stdoutWriter = &combinedBuf
}
if stdout != nil {
stdoutWriter = io.MultiWriter(&combinedBuf, stdout)
} else {
stdoutWriter = &combinedBuf
}
if stderr != nil {
stderrWriter = io.MultiWriter(&combinedBuf, stderr)
} else {
stderrWriter = &combinedBuf
if stderr != nil {
stderrWriter = io.MultiWriter(&combinedBuf, stderr)
} else {
stderrWriter = &combinedBuf
}
}
// 3. 实际开始执行事件 (经过队列和速率限制之后)