问候,
是C ++和Linux的新手。我正在寻找一个命令,用于在我的源代码中执行3个可执行程序(exe / bin),这就是我想要做的事情:
1.了解过程是否成功执行(返回值)
2.了解流程ID
3.杀死一个过程
我尝试过System(),但它没有返回错误并且没有PID,也不安全。我快速查看了fork() - exec()但是有可能没有父子关系吗?此外,我查看了手册页,但我不明白:(
请告诉我将使用哪个命令。
提前谢谢!
答案 0 :(得分:3)
答案 1 :(得分:2)
system()会以wait()执行的方式返回子进程的退出代码(或错误时-1
,如果无法生成shell进程,则返回127
)。
如果您需要知道子项的PID并以异步方式运行它,fork()后跟exec()通常是要走的路。如果您想通过管道与子进程通信,请使用popen()。
为了减轻固有的父/子关系,您可能需要daemonize子进程。
答案 2 :(得分:1)
根据定义,总是在启动新程序时具有父子关系(除非他们在当前流程中替换您自己的程序;在没有{时调用execl
时,您会得到它首先{1}}。像fork
和system
这样的函数在内部也会调用popen
和其中一个fork
变体。
看看剑桥大学的Fork and Exec tutorial,这是非常直截了当的。也使用C ++。请注意,所有相关的调用(exec
,fork
,execl
)都是C POSIX函数。