我安装了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流光,我该怎么做?
谢谢!
答案 0 :(得分:1)
您可以在stdlib标头中使用system()
函数。
答案 1 :(得分:1)
我确信system()
可以正常工作,但我总是觉得在所描述的情况下使用它会有点不舒服 - 特别是在嵌入式应用程序中,产生的内存和CPU开销另一个shell可能不受欢迎。此外,您无法从system()
获取进程ID,稍后您可能需要与子进程进行交互。
虽然它的工作量有点多,但我认为使用fork()
后跟(例如)execle()
会更优雅。您需要一个带有环境参数的exec
变体,因为您需要确保在新流程中设置LD_LIBRARY_PATH
。它有点像faff,但您可以使用envz_xxx
系列函数从父环境创建新的流程环境,而不是从头开始构建环境。
说实话,我很想自己使用system()
,但是这样做很难"很难"从长远来看,这种方式可能会提供更大的灵活性,并且速度更快,内存效率更高。