2017-10-12 9 views
0

MJPG-Streamerをインストールしましたが、これをCプログラムから実行したいと思います。 私は、PI端子に次のコードを入力MJPG-ストリーマーを開始します。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 ... ")'で指定します。 –

答えて

1

system()機能はstdlibヘッダー内で使用できます。

1

確かにsystem()はうまく動作しますが、私はいつも説明したような状況、特に別のシェルを生成するメモリとCPUオーバーヘッドが望ましくない組み込みアプリケーション。また、プロセスIDがsystem()から取得されないため、後で子プロセスと対話する必要があります。

もう少し作業していますが、fork()の後に(たとえば)execle()を使用する方がよりエレガントだと思います。新しいプロセスでLD_LIBRARY_PATHが設定されている必要があるため、環境引数をとるexecの亜種が必要です。それは少しばかりですが、最初から環境を構築するのではなく、親環境から新しいプロセス環境を作成するために、envz_xxxファミリの関数を使用することもできます。

自分自身でsystem()を使用するように誘惑されますが、これを「ハード」な方法で実行すると、柔軟性が向上するだけでなく、メモリの効率もやや速くなります。

関連する問題