在C ++代码[Linux]中使用哪个命令来执行程序?

时间:2011-05-08 08:00:42

标签: c++ linux command ipc

问候,

是C ++和Linux的新手。我正在寻找一个命令,用于在我的源代码中执行3个可执行程序(exe / bin),这就是我想要做的事情:
1.了解过程是否成功执行(返回值)
2.了解流程ID
3.杀死一个过程

我尝试过System(),但它没有返回错误并且没有PID,也不安全。我快速查看了fork() - exec()但是有可能没有父子关系吗?此外,我查看了手册页,但我不明白:(

请告诉我将使用哪个命令。

提前谢谢!

3 个答案:

答案 0 :(得分:3)

你看过popen()吗?这可能是要走的路。 尝试手册页。

答案 1 :(得分:2)

system()会以wait()执行的方式返回子进程的退出代码(或错误时-1,如果无法生成shell进程,则返回127 )。

如果您需要知道子项的PID并以异步方式运行它,fork()后跟exec()通常是要走的路。如果您想通过管道与子进程通信,请使用popen()

为了减轻固有的父/子关系,您可能需要daemonize子进程。

答案 2 :(得分:1)

根据定义,总是在启动新程序时具有父子关系(除非他们在当前流程中替换您自己的程序;在没有{时调用execl时,您会得到它首先{1}}。像forksystem这样的函数在内部也会调用popen和其中一个fork变体。

看看剑桥大学的Fork and Exec tutorial,这是非常直截了当的。也使用C ++。请注意,所有相关的调用(execforkexecl)都是C POSIX函数。