Merge pull request #1140 from luoliwoshang/internal/dir

runtime:forkAndExecInChild chdir
This commit is contained in:
xushiwei
2025-06-06 09:12:05 +08:00
committed by GitHub
3 changed files with 6 additions and 10 deletions

View File

@@ -3,11 +3,13 @@ package main
import (
"bytes"
"os/exec"
"path/filepath"
)
func main() {
var data bytes.Buffer
cmd := exec.Command("echo", "hello llgo")
cmd.Dir = filepath.Dir("./")
cmd.Stdout = &data
err := cmd.Run()
if err != nil {

View File

@@ -199,13 +199,10 @@ func forkAndExecInChild(argv0 *c.Char, argv, envv **c.Char, chroot, dir *c.Char,
// Chdir
if dir != nil {
/* TODO(xsw):
_, _, err1 = rawSyscall(abi.FuncPCABI0(libc_chdir_trampoline), uintptr(unsafe.Pointer(dir)), 0, 0)
if err1 != 0 {
if ret := os.Chdir(dir); ret < 0 {
err1 = Errno(os.Errno())
goto childerror
}
*/
panic("todo: syscall.forkAndExecInChild - dir")
}
// Pass 1: look for fd[i] < i and move those up above len(fd)

View File

@@ -582,13 +582,10 @@ func forkAndExecInChild1(argv0 *c.Char, argv, envv **c.Char, chroot, dir *c.Char
// Chdir
if dir != nil {
/**
_, _, err1 = RawSyscall(syscall.SYS_CHDIR, uintptr(unsafe.Pointer(dir)), 0, 0)
if err1 != 0 {
if ret := os.Chdir(dir); ret < 0 {
err1 = Errno(os.Errno())
goto childerror
}
*/
panic("todo: syscall.forkAndExecInChild1 - dir")
}
// Parent death signal