从C程序执行pi命令

问题描述:

我安装了MJPG-Streamer,我想从C程序运行它。 我开始MJPG拖缆在PI终端输入以下代码:从C程序执行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

使用'system()'函数。 – Barmar

+1

使用'system(“LD_LIBRARY_PATH ...”)'。 –

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

我敢肯定system()可以正常工作,但我总是感觉有点不舒服,因为在所描述的情况下使用它 - 特别是在嵌入式应用程序中,产生另一个shell的内存和CPU开销可能不理想。此外,您还没有从system()获得进程ID,您可能需要稍后与子进程交互。

虽然这是一个更多的工作,我认为这是更优雅的使用fork()后面(例如)execle()。您需要一个采用环境参数的exec变体,因为您需要确保在新进程中设置了LD_LIBRARY_PATH。这有点儿麻烦,但也可以使用envz_xxx系列函数从父环境创建新的过程环境,而不是从头开始构建环境。老实说,我很想用我自己的方式使用system(),但这样做“硬”的方式可能会在长期内提供更大的灵活性,以及​​更快,更高的内存效率。