posix_spawn创建进程时修改工作目录
时间: 2023-07-26 20:07:27 浏览: 229
可以使用 `posix_spawnattr_t` 结构体来设置新进程的工作目录。具体来说,可以使用 `posix_spawnattr_setcwd_np()` 函数来设置新进程的工作目录。这个函数需要两个参数:第一个参数是 `posix_spawnattr_t` 结构体的指针,第二个参数是新进程的工作目录路径。
以下是一个使用 `posix_spawnattr_setcwd_np()` 函数修改新进程工作目录的示例代码:
```c
#include <spawn.h>
#include <unistd.h>
#include <fcntl.h>
int main(int argc, char **argv)
{
posix_spawn_file_actions_t file_actions;
posix_spawnattr_t attr;
pid_t pid;
int status;
// 初始化文件操作和进程属性
posix_spawn_file_actions_init(&file_actions);
posix_spawnattr_init(&attr);
// 设置新进程的工作目录
posix_spawnattr_setcwd_np(&attr, "/new_working_directory");
// 创建新进程
char *const args[] = {"ls", NULL};
posix_spawn(&pid, "/bin/ls", &file_actions, &attr, args, environ);
// 等待新进程结束
waitpid(pid, &status, 0);
// 清理资源
posix_spawn_file_actions_destroy(&file_actions);
posix_spawnattr_destroy(&attr);
return 0;
}
```
注意,`posix_spawnattr_setcwd_np()` 函数需要在调用 `posix_spawn()` 函数之前进行调用,以确保新进程在创建时使用正确的工作目录。
阅读全文