使用哪个命令在C++代码 [Linux] 中执行程序
Which command to use to execute a program within C++ code [Linux]?
问候,
我是C++和Linux的新手。我正在寻找一个命令,我用它来在我的源代码中执行 3 个可执行程序 (exe/bin),这就是我想做的:
1. 知道进程是否成功执行(返回值)
2. 了解进程 ID
3. 终止进程
我尝试了System(),但它不会返回错误并且没有PID,也不安全。我快速浏览了一下fork()-exec(),但是是否有可能没有父子关系?另外,我查看了手册页,但我不明白:(
请告诉我我将使用哪个命令。
提前谢谢你!
你看过popen()吗? 这可能是要走的路。尝试使用手册页。
system() 确实以与 wait() 相同的方式返回子进程的退出代码(或在错误时-1
,或者如果它未能生成 shell 进程,则返回127
)。
如果你需要知道子项的PID并异步运行它,fork()后跟exec()通常是要走的路。如果要通过管道与子进程通信,请使用 popen()。
为了缓解固有的父/子关系,您可能必须守护子进程。
根据定义,在启动新程序时,您始终具有父子关系(除非它们在当前进程中替换您自己的程序;当调用execl
而不先fork
ing时,您会得到这种关系)。内部的system
和popen
等函数也调用fork
和exec
变体之一。
看看剑桥大学的 Fork 和 Exec 教程,它非常简单明了。也使用C++。注意所有相关的调用(fork
、execl
、wait
)都是C POSIX函数。
相关文章:
- 程序在执行程序的其余部分之前退出
- libprotobuf 检查在 Mac OS 上执行程序时失败
- 是否可以依赖函数范围的静态变量来执行程序关闭期间调用的方法?
- 在另一台 PC 上执行程序时加载 SDL2 共享库时出错
- 从 GUI 文件资源管理器执行程序,并且不生成终端
- 测试操作系统时执行程序集"sti"时虚拟框崩溃
- 重新执行C++程序会加快速度
- 如何用共享库替换可执行C++程序的功能?
- 编译并执行C#程序中的C++代码
- 如果我在 Linux 上更改C++动态共享库,而我的可执行程序在其上使用,会发生什么
- 在C++中,系统如何将这些对象中的每一个与执行程序的窗口相关联?
- 命令行参数执行C 程序
- 如何在 Linux C++ 应用程序中通过管道传输到 ifstream
- 按 e 执行程序C++
- 在返回另一个函数的函数中执行程序期间出错
- 协议缓冲区2和3在同一C Linux应用程序中
- Linux执行程序没有得到输出的值
- 如何在C++Linux中执行程序
- c++ Linux从程序执行命令行
- 使用哪个命令在C++代码 [Linux] 中执行程序