質問編集履歴
2
追加
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
|
-
|
|
19
|
+
case 0:
|
|
19
|
-
|
|
20
|
+
dspmain(); // 表示処理
|
|
20
|
-
|
|
21
|
+
break;
|
|
21
|
-
|
|
22
|
+
case -1:
|
|
22
|
-
|
|
23
|
+
perror("fork");
|
|
23
|
-
|
|
24
|
+
break;
|
|
24
25
|
}
|
|
25
26
|
|
|
26
27
|
//子プロセス2作成
|
|
27
28
|
switch(pid=fork())
|
|
28
29
|
{
|
|
29
|
-
|
|
30
|
+
case 0:
|
|
30
|
-
|
|
31
|
+
rxserial_tsk((void *)&fd);// シリアル受信処理
|
|
31
|
-
|
|
32
|
+
break;
|
|
32
33
|
|
|
33
|
-
|
|
34
|
+
case -1:
|
|
34
|
-
|
|
35
|
+
perror("fork");
|
|
35
|
-
|
|
36
|
+
break;
|
|
36
37
|
}
|
|
37
38
|
whlie(1)
|
|
38
39
|
{
|
|
39
|
-
|
|
40
|
+
gpio_chk(); // 親の処理・・・GPIO 監視
|
|
40
|
-
|
|
41
|
+
}
|
|
41
42
|
}
|
|
42
43
|
|
|
43
44
|
以上よろしくお願いします。
|
1
追加
title
CHANGED
|
File without changes
|
body
CHANGED
|
@@ -1,8 +1,43 @@
|
|
|
1
|
-
|
|
1
|
+
たとえば、大分はしおっていますが以下のようにforkのみを使ったプログラムの場合(こういうやり方がいいのかどうかはわかりませんが。。。)
|
|
2
2
|
|
|
3
|
-
マルチプロセス制御にて、一般的にいうマルチタスを実現しようと考えておりますが、そうした場合は、fork()を使って子プロセスを作成していくというやりかたでやっていけば問題ないのでしょうか?
|
|
4
|
-
ネットをいろいろ調べましたが、forkで子プロセスを作成した場合は、親プロセスの内容がそのままコピーされて起動されるという記述があり、私の考えている使い方とは若干異なっているように思います。
|
|
5
3
|
|
|
4
|
+
1。表示処理dsp_main()、
|
|
5
|
+
2。シリアル受信処理rxserial_tsk()
|
|
6
|
+
3。メイン内のGPIO監視処理gpio_chk()
|
|
6
|
-
|
|
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
|
+
以上よろしくお願いします。
|