在 C 语言中,运行外部程序并获取该程序的 PID 的最佳方法是什么? 我在这里看到了一些关于使用 fork() 的答案......但据我了解, fork() 复制当前进程并创建一个子进程。如果可能的话,我想创建一个完全独立的上下文……而获取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/