如何在 C 中设置环境变量并启动进程?
如何在 ANSI C for Windows 中设置环境变量并启动进程?如果可能的话,我想避免为此使用任何 Windows API。
How to set an environment variable and start a process in ANSI C for Windows? If possible I want to avoid using any Windows API for this.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
在纯 ANSI C 中,这是不可能的。既没有函数
setenv
也没有putenv
,甚至没有execv*
函数系列丢失。相反,我建议您按照自己想要的方式编写一个小接口(可能类似于 execve)并且与系统相关。这样,当您将程序移植到非 Windows 环境时,您可以轻松更改包装器。
In pure ANSI C, it is not possible. There is neither of the functions
setenv
norputenv
, and even theexecv*
family of functions is missing.Instead, I suggest that you write a little interface in the way you want (which possibly looks like
execve
) and is system-dependent. That way, you can change the wrapper easily when you port your program to a non-Windows environment.假设可移植性是您指定 ANSI C 的原因,您可以使用 POSIX 函数
_execve
完全执行您想要的操作:这是一个可移植函数,可生成新的子进程并允许您提供一系列环境设置。
Assuming portability is your reason for specifying ANSI C, you can do exactly what you want with the POSIX function
_execve
:This is a portable function that spawns a new child process and allows you to supply an array of environment settings.
您可以使用 WInAPI 中的 CreateProcess 函数来启动一个新的过程
You can use CreateProcess function from WInAPI to start a new process
要使用 Win32 API 启动进程,请使用 CreateProcess 函数如 kayrick 所述。
要设置环境,您可以使用 SetEnvironmentVariable 。
这些都是 Win32 API。
您可能还想查看 GetEnvironmentVariable。
希望这有帮助。
To launch a process using Win32 API use the CreateProcess function as stated by kayrick.
To set an enviorment you can use SetEnvironmentVariable.
These are both Win32 API.
You may also want to have a look at GetEnvironmentVariable.
Hope this helps.