gpt4 book ai didi

C - 在后台启动外部程序并获取 pid

转载 作者:太空宇宙 更新时间:2023-11-04 12:30:32 24 4
gpt4 key购买 nike

在 C 中,运行外部程序并获取此程序的 PID 的最佳方法是什么?我在这里看到了一些关于使用 fork() 的答案......但据我所知,fork() 复制了当前进程并创建了一个 child 。如果可能的话,我想创建一个完全独立的上下文......获取 PID 的原因是为了在将来完全终止这个进程。当我的服务器可以发送命令以在客户端上启动某些程序时,我正在构建一个客户端/服务器程序。这些程序是外部程序,并且可以同时运行多个具有相同名称/可执行文件的 c(这就是为什么我不能“尝试”通过程序名称查找 pid)。此外,这些程序应该在“后台”运行……我的意思是,我无法锁定我的调用函数。我不确定 fork() 是否会在这种情况下帮助我。

最佳答案

我喜欢做的是使用 posix_spawn .它比 fork 更容易使用,而且 IMO 感觉更直观:

#include <spawn.h>
#include <string.h>
#include <stdio.h>

extern char **environ;

int main() {
pid_t pid;
char *argv[] = {"gcc", "file.c" (char*)0};

int status = posix_spawn(&pid, "/usr/bin/gcc", NULL, NULL, argv, environ);
if(status != 0) {
fprintf(stderr, strerror(status));
return 1;
}
return 0;
}

关于C - 在后台启动外部程序并获取 pid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43440183/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com