質問編集履歴

2

追加

2018/10/23 07:31

投稿

ibojiro
ibojiro

スコア17

test CHANGED
File without changes
test CHANGED
@@ -13,6 +13,8 @@
13
13
  の3つの処理がマルチプロセス(並列)に動いていると考えてもよろしいでしょうか?
14
14
 
15
15
  こういうやり方が不適切な場合は、どのようにすべきかご教示いただけると助かります。
16
+
17
+ ※インデントがうまくいかないのはご容赦ください。
16
18
 
17
19
 
18
20
 
@@ -32,17 +34,17 @@
32
34
 
33
35
    {
34
36
 
35
-      case 0:
37
+       case 0:
36
38
 
37
- dspmain(); // 表示処理
39
+     dspmain(); // 表示処理
38
40
 
39
- break;
41
+   break;
40
42
 
41
- case -1:
43
+  case -1:
42
44
 
43
- perror("fork");
45
+      perror("fork");
44
46
 
45
- break;
47
+      break;
46
48
 
47
49
  }
48
50
 
@@ -54,19 +56,19 @@
54
56
 
55
57
  {
56
58
 
57
- case 0:
59
+   case 0:
58
60
 
59
- rxserial_tsk((void *)&fd);// シリアル受信処理
61
+      rxserial_tsk((void *)&fd);// シリアル受信処理
60
62
 
61
- break;
63
+      break;
62
64
 
63
65
 
64
66
 
65
- case -1:
67
+    case -1:
66
68
 
67
- perror("fork");
69
+     perror("fork");
68
70
 
69
- break;
71
+      break;
70
72
 
71
73
  }
72
74
 
@@ -74,9 +76,9 @@
74
76
 
75
77
  {
76
78
 
77
- gpio_chk(); // 親の処理・・・GPIO 監視
79
+       gpio_chk(); // 親の処理・・・GPIO 監視
78
80
 
79
- }
81
+    }
80
82
 
81
83
  }
82
84
 

1

追加

2018/10/23 07:31

投稿

ibojiro
ibojiro

スコア17

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