[Armadillo:06173] (Armadillo-220)flatfsd -s が終了しない
Tsutomu Ando
email@hidden
2010年 11月 17日 (水) 10:49:58 JST
こんにちは、安藤と申します。
Armadillo-220 で CGI から flatfsd -s を実行しようとしているのですが、
flatfsd -s が終了しない現象で悩んでいます。時々、10 秒程度で終了する場
合も有るのですが、10 回に 9 回は終了しない (もしくは、40 分程度かかる)
です。
どなたか、flatfsd -s を CGI から実行させている方でこの問題の回避策を
御存知の方、いらっしゃらないでしょうか。
尚、シリアルコンソールから
[email@hidden (ttyAM0) ~]# flatfsd -s
と実行すると、5 秒もかからず終了します。
また、使用している HTTP サーバは thttpd です。
プログラムは以下の通りで、index.html から flat.cgi を呼び出します。
index.html --- ここから
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>flatfsd test</title>
<meta http-equiv="Content-Type" content="text/html">
</head>
<body>
<h1>flatfsd test</h1>
<form method="post" action="/cgi-bin/flat.cgi">
<hr>
<p>
<table border="0">
<tr>
<td align="center" valign="middle"><input type="submit" name="button" value="FlatFsd"></td>
</tr>
</table>
</p>
<hr>
</form>
</body>
</html>
--- ここまで
flat.c(flat.cgi) --- ここから
#include <stdio.h>
#include "simple-cgi-app-io.h"
int main()
{
char *args[] = {"/bin/flatfsd", "-s", NULL};
int ret = 0;
/* cgi_exec() */
printf("Content-type: text/html\n\n");
printf("Start flatfsd at cgi_exec()<br>\n");
ret = cgi_exec(args[0], args);
if (ret < 0) {
printf("500 cgi_exec() error.<br>\n");
} else {
printf("200 cgi_exec() success.<br>\n");
}
printf("Complete flatfsd.<br>\n");
/* system() */
/* printf("Content-type: text/html\n\n"); */
/* printf("Start flatfsd at system()<br>\n"); */
/* system("flatfsd -s"); */
/* printf("Complete flatfsd.<br>\n"); */
return 0;
}
--- ここまで
ps で実行プロセスを確認すると
[email@hidden (ttyAM0) ~]# ps ax
PID Uid VmSize Stat Command
1 root 588 S init
2 root SWN [ksoftirqd/0]
3 root SW< [events/0]
4 root SW< [khelper]
5 root SW< [kthread]
10 root SW< [kblockd/0]
14 root SW [khubd]
48 root SW [pdflush]
49 root SW [pdflush]
51 root SW< [aio/0]
50 root SW [kswapd0]
606 root SW [mtdblockd]
618 root SW< [pegasus]
627 root SW< [krfcommd]
759 root 608 R syslogd -m 0 -L
769 root 596 S klogd
853 root 560 S inetd
871 root 1504 S /sbin/sshd -f /etc/ssh/sshd_config
881 root 912 S thttpd -C /etc/thttpd.conf
894 root 612 S /bin/cron
910 root 728 S -ash
911 root 564 S /sbin/getty -L 115200 ttyAM1 vt102
923 root 324 S N flat.cgi
925 root 912 S thttpd -C /etc/thttpd.conf
926 root 672 R N /bin/flatfsd -s
928 root 640 R ps ax
[email@hidden (ttyAM0) ~]#
となり、flatfsd -s は優先度が低く設定された状態ですが実行されている様
です。
上の flat.c にて cgi_exec() ではなく system() を用いた場合でも同じく、
flatfsd -s が終了しません。
使用しているカーネル:
linux-a220-1.10.bin.gz
開発環境:
Debian GNU/Linux Squeeze 上の Virtualbox で動作させた
Debian GNU/Linux Etch-And-A-Half に、a220-development-environment や
atde-essential-arm などの開発パッケージを入れたもの。
以上、よろしくお願いします。
--
安藤
armadillo メーリングリストの案内