1
0
mirror of https://github.com/vlang/v.git synced 2023-08-10 21:13:21 +03:00

os: add os.execve/3 (extracted from unix_spawn_process); use os.execvp/2 in v.util.launch_tool/3

This commit is contained in:
Delyan Angelov
2020-12-30 17:57:01 +02:00
parent c943c8a16e
commit b4f02adc32
3 changed files with 32 additions and 18 deletions

View File

@ -43,22 +43,10 @@ fn (mut p Process) unix_spawn_process() int {
fd_close(pipeset[3])
fd_close(pipeset[5])
}
mut cargv := []charptr{}
mut cenvs := []charptr{}
cargv << charptr(p.filename.str)
for i in 0 .. p.args.len {
cargv << charptr(p.args[i].str)
execve(p.filename, p.args, p.env) or {
eprintln(err)
exit(1)
}
for i in 0 .. p.env.len {
cenvs << charptr(p.env[i].str)
}
cargv << charptr(0)
cenvs << charptr(0)
C.execve(charptr(p.filename.str), cargv.data, cenvs.data)
// NB: normally execve does not return at all.
// If it returns, then something went wrong...
eprintln(posix_get_error_msg(C.errno))
exit(1)
return 0
}