質問するログイン新規登録

質問編集履歴

2

追加

2018/10/23 07:31

投稿

ibojiro
ibojiro

スコア17

title CHANGED
File without changes
body CHANGED
@@ -6,6 +6,7 @@
6
6
  3。メイン内のGPIO監視処理gpio_chk()
7
7
  の3つの処理がマルチプロセス(並列)に動いていると考えてもよろしいでしょうか?
8
8
  こういうやり方が不適切な場合は、どのようにすべきかご教示いただけると助かります。
9
+ ※インデントがうまくいかないのはご容赦ください。
9
10
 
10
11
  main()
11
12
  {
@@ -15,29 +16,29 @@
15
16
    //子プロセス1作成
16
17
    switch(pid=fork())
17
18
    {
18
-      case 0:
19
+       case 0:
19
- dspmain(); // 表示処理
20
+     dspmain(); // 表示処理
20
- break;
21
+   break;
21
- case -1:
22
+  case -1:
22
- perror("fork");
23
+      perror("fork");
23
- break;
24
+      break;
24
25
  }
25
26
 
26
27
  //子プロセス2作成
27
28
  switch(pid=fork())
28
29
  {
29
- case 0:
30
+   case 0:
30
- rxserial_tsk((void *)&fd);// シリアル受信処理
31
+      rxserial_tsk((void *)&fd);// シリアル受信処理
31
- break;
32
+      break;
32
33
 
33
- case -1:
34
+    case -1:
34
- perror("fork");
35
+     perror("fork");
35
- break;
36
+      break;
36
37
  }
37
38
  whlie(1)
38
39
  {
39
- gpio_chk(); // 親の処理・・・GPIO 監視
40
+       gpio_chk(); // 親の処理・・・GPIO 監視
40
- }
41
+    }
41
42
  }
42
43
 
43
44
  以上よろしくお願いします。

1

追加

2018/10/23 07:31

投稿

ibojiro
ibojiro

スコア17

title CHANGED
File without changes
body CHANGED
@@ -1,8 +1,43 @@
1
- 今まで組み込みソフトウェアの開発をしてきものですが今回じめ組み込み用Linuxを使うことになっため現在勉強中です
1
+ とえば大分しおっいますが以下のようforkのみを使ったプログラム場合(こういうやり方がいいかどうかはわかりませんが。。)
2
2
 
3
- マルチプロセス制御にて、一般的にいうマルチタスを実現しようと考えておりますが、そうした場合は、fork()を使って子プロセスを作成していくというやりかたでやっていけば問題ないのでしょうか?
4
- ネットをいろいろ調べましたが、forkで子プロセスを作成した場合は、親プロセスの内容がそのままコピーされて起動されるという記述があり、私の考えている使い方とは若干異なっているように思います。
5
3
 
4
+ 1。表示処理dsp_main()、
5
+ 2。シリアル受信処理rxserial_tsk()
6
+ 3。メイン内のGPIO監視処理gpio_chk()
6
- 子プロセスでは、シリアル通信があったり、画面制御があったり、別々の処理を個個に行いたいのです、そういった場合でもforkを使って子プロセスを作っていくやり方で問題ないでしょうか?
7
+ 3つの処理がマルチプロセス(並列)に動いていると考えてもよろしいでしょうか?
8
+ こういうやり方が不適切な場合は、どのようにすべきかご教示いただけると助かります。
7
9
 
10
+ main()
11
+ {
12
+   /・・略・・/
13
+
14
+
15
+   //子プロセス1作成
16
+   switch(pid=fork())
17
+   {
18
+      case 0:
19
+ dspmain(); // 表示処理
20
+ break;
21
+ case -1:
22
+ perror("fork");
23
+ break;
24
+ }
25
+
26
+ //子プロセス2作成
27
+ switch(pid=fork())
28
+ {
29
+ case 0:
30
+ rxserial_tsk((void *)&fd);// シリアル受信処理
31
+ break;
32
+
33
+ case -1:
34
+ perror("fork");
35
+ break;
36
+ }
37
+ whlie(1)
38
+ {
39
+ gpio_chk(); // 親の処理・・・GPIO 監視
40
+ }
41
+ }
42
+
8
- どなたか、ご教示ださい。
43
+ 以上よろしお願します