【发布时间】:2016-05-22 00:57:56
【问题描述】:
您好,我正在尝试从系统调用调用 CreateProcess
func CreateProcess(appName *uint16, commandLine *uint16, procSecurity *SecurityAttributes, threadSecurity *SecurityAttributes, inheritHandles bool, creationFlags uint32, env *uint16, currentDir *uint16, startupInfo *StartupInfo, outProcInfo *ProcessInformation) (err error)
但我收到错误编号 123(“文件名、目录名或卷标语法不正确。”),calc.exe 的路径是正确的。
package main
import (
"fmt"
"syscall"
)
func main() {
var pS syscall.SecurityAttributes
var tS syscall.SecurityAttributes
var iH bool = true
var cF uint32
var env uint16
var cD uint16
var sI syscall.StartupInfo
var pI syscall.ProccessInformation
var err error
err = syscall.CreateProcess(
syscall.StringToUTF16Ptr("c:\\windows\\system32\\calc.exe"),
syscall.StringToUTF16Ptr(""),
&pS,
&tS,
iH,
cF,
&env,
&cD,
&sI,
&pI)
fmt.Printf("Return: %d\n", err)
}
【问题讨论】:
-
有什么理由不使用 Go 的高级抽象吗?即
os/exec包? golang.org/pkg/os/exec -
进程创建后我想用指向 pI(processInformation) 的指针来写内存
标签: go system-calls