質問: たとえば、大分はしおっていますが以下のようにforkのみを使ったプログラムの場合(こういうやり方がいいのかどうかはわかりませんが。。。) 1。表示処理dsp_main()、 2。シリアル受信処理rxserial_tsk() 3。メイン内のGPIO監視処理gpio_chk() の3つの処理がマルチプロセス(並列)に動いていると考えてもよろしいでしょうか? こういうやり方が不適切な場合は、どのようにすべきかご教示いただけると助かります。 ※インデントがうまくいかないのはご容赦ください。 main() { /・・略・・/ //子プロセス1作成 switch(pid=fork()) { case 0: dspmain(); // 表示処理 break; case -1: perror("fork"); break; } //子プロセス2作成 switch(pid=fork()) { case 0: rxserial_tsk((void *)&fd);// シリアル受信処理 break; case -1: perror("fork"); break; } whlie(1) { gpio_chk(); // 親の処理・・・GPIO 監視 } } 以上よろしくお願いします。
回答: こんにちは。 > > 子プロセスでは、シリアル通信があったり、画面制御があったり、別々の処理を個個に行いたいのですが、そういった場合でもforkを使って子プロセスを作っていくやり方で問題ないでしょうか? > > > 可能か不可能かという意味では可能です。fork()→exec()の流れです。 適切か不適切かという意味ではケースバイケースですが、それら複数のタスクが密接に連携して動作し、メモリ空間を共有した方が好ましい場合は、不適切です。そのような時はスレッドを使った方が効率は上がります。