从C程序执行pi命令

时间:2017-10-12 18:16:07

标签: c raspberry-pi

我安装了MJPG-Streamer,我想从C程序运行它。 我启动MJPG-Streamer在pi终端输入以下代码:

LD_LIBRARY_PATH=/usr/local/lib mjpg_streamer -i "input_file.so -f /tmp/stream -n pic.jpg" -o "output_http.so -w /usr/local/www"

我想从C程序运行mjpg流光,我该怎么做?

谢谢!

2 个答案:

答案 0 :(得分:1)

您可以在stdlib标头中使用system()函数。

答案 1 :(得分:1)

我确信system()可以正常工作,但我总是觉得在所描述的情况下使用它会有点不舒服 - 特别是在嵌入式应用程序中,产生的内存和CPU开销另一个shell可能不受欢迎。此外,您无法从system()获取进程ID,稍后您可能需要与子进程进行交互。

虽然它的工作量有点多,但我认为使用fork()后跟(例如)execle()会更优雅。您需要一个带有环境参数的exec变体,因为您需要确保在新流程中设置LD_LIBRARY_PATH。它有点像faff,但您可以使用envz_xxx系列函数从父环境创建新的流程环境,而不是从头开始构建环境。

说实话,我很想自己使用system(),但是这样做很难"很难"从长远来看,这种方式可能会提供更大的灵活性,并且速度更快,内存效率更高。

相关问题