c - 如何在 C 中创建一个在父进程死亡后运行的进程?

标签 c windows process exec

我正在用 C 编写一个简单的程序,它使用 exec 函数打开互联网浏览器。但是,直到我关闭互联网浏览器后,该程序才会终止。

编写该程序的最佳方式是什么,以便它打开互联网浏览器然后结束?

最佳答案

当您使用exec时,您的整个进程将被新进程的镜像替换,并且当前进程将不复存在。相反,先fork一个新进程(如果需要setsid将其与其父进程分离)然后然后 exec 新的进程镜像。 fork 的进程将被新的进程镜像替换,并且父进程将保持事件状态。如果您想让父进程保持打开状态直到子进程退出,请查看 waitpid

编辑:供将来引用,是的,setsid 不可移植,并且 fork 周围的语义差异很大。即使主机操作系统不明确支持 POSIX,生成并执行模型仍然以某种方式存在于几乎每个 POSIX 和非 POSIX 平台上。

关于c - 如何在 C 中创建一个在父进程死亡后运行的进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8860029/

相关文章:

windows - CMD: Bat to Exe Converter - 临时目录问题

无法从 c 中的 stdin 打印 char 数组

java - C中是否有与指针函数类似的java ByteBuffer函数

c - 编程难题 - 斐波那契

c++ - 将项目转换为支持 Unicode 后,CreateProcess 不运行 .cmd 文件

node.js - 使用 node.js 获取正在运行的进程的标准输入/标准输出

python - 由 os.system() 和 subprocess.Popen() 启动的外部应用程序在 Linux 上运行速度较慢

c - 如何从用户空间使用asm/system.h?

mysql - 使用C连接MYSQL

windows - 忽略所有子目录中的desktop.ini 文件 [GitHub]