[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[FDclone-users:00168] FDClone の HP-UX 対応について



潮田です。
たびたびですいません。

Tru64 対応ありがとうございました。
AIX 対応ありがとうございました。
で、と言うわけではありませんが HP-UX での報告です。

# さきに言い訳。
# 別に問題を一つ一つ小出しにしているわけではありません。
# HP-UX や solaris は自由に触れる環境にあっても
# まったく触っていない(ソフトも入れない)のです。
# 仕事の main が AIX なので。
HP-UX を知っている方、バトンタッチをお願いします。


しらいさんに、[FDclone-users:00164] にて
> いえ、AIX でなく HP-UX で試してみることを提案してみたんで
>す。SA_RESETHAND だけが原因だとしたら、signal() を使った時に
>SIGCHLD が無限発呼されるのは HP-UX でも同じことだと思うんで
>す。
と指摘されました。

[FDclone-users:00150] に乗せましたサンプルは、あのメールで
書きました環境でしかテストしていません。
手元でコンパイラーが入っている環境では、solaris と HP-UX が
抜けています。
また、 [FDclone-users:00155] で HP-UX を使用していますが、
メールの通り、signal(SIGCHLD, sig) がセットする sa_flags の
値の取得と sa_flags = SA_RESETHAND にした時の結果しか見て
いませんでした。

$ uname -s -r
HP-UX B.11.00
な環境で、
sa_flags = 0;
sa_flags = SA_RESETHAND;
sa_flags = SA_RESETHAND | SA_NOCLDSTOP;
sa_flags = SA_RESETHAND | SA_NOCLDSTOP | SA_NODEFER;
の4通りを試しましたが、なんのことはない。
すべて暴走でした。チャンチャン。
(signal() でも試しましたが、当然暴走です)
たしか google でひっかかる ruby な方も HP-UX でしたね。
sa_flags = 0 では動く、 AIX よりむごい。

wait() の位置を、ハンドラーの頭に移動させると
上の4(5)通りのどれでも期待通りの動作でした。

$ uname -s -r
SunOS 5.7
な環境では、main() に wait() がある状態で、
どれも期待どおりでした。


> でも実際には、FDclone の子 process 生成で SIGSEGV で死んで
> しまうのは AIX だけでしたよね。HP-UX の場合何が違うのかを考
HP-UX に初めて FD を入れてみました。
AIX とは違い SIGSEGV にはなりませんでしたが、ある意味もっと
すごいです。
Enter や e や x が使用できません。

FDclone のコンパイル終了後、そのディレクトリで
./fd
README にカーソルをもっていって Enter

[1]+ 6511 Stopped on terminal output  more ./README
何かキーを押して下さい.

が最下行に表示され、再度 Enter を押すと FD へ戻ります。

同様にe を押すと、何かを描画したあと FD へもどってきます。
画面がちらつくので、何かを書いているようですが動体視力が
圧倒的に不足していて見えません。

e でだめならと x で vi README を実行すると

$ vi README
[42]+ 6816 Stopped on terminal output  vi README
何かキーを押して下さい.

と表示され Enter と同様になります。

この動作は、素の 2.03a でも、 [FDclone-users:00154] の patch 
適用後でも同じです。

patch 適用後の fdsh で試しましたが
sleep や /bin/echo などは正常に動きますが、

$ vi README
[1]+ 8604 Stopped on terminal output  vi README

となりますし、
cat README では

(中身は普通に表示)
fdsh: No child processes
$
で終わります。

Install に載っているのは 10.01 までですので
$ uname -s -r
HP-UX B.10.01
な別の WS で試そうとしたのですが、ファイルが足りないのか
コンパイルも終了できませんでした。
(まったく管理されていない WS でして、 OS 付属物が無い可能性も
あります。)

--- ここから ---
$ make
        make -f Makefile.tmp
        cc -DFD=2 -DHPUX=1     -c -o term.o term.c
cpp: "termio.h", line 250: warning 2001: Redefinition of macro CR0.
cc: "term.c", line 2141: error 1588: "key_enter" undefined.
cc: "term.c", line 2142: error 1588: "key_beg" undefined.
cc: "term.c", line 2143: error 1588: "key_end" undefined.
*** Error exit code 1

Stop.
*** Error exit code 1

Stop.
--- ここまで ---

/usr/include/term.h ではなく
/usr/include/curses_colr/term.h には上の key_* がいるようです。



# 来週からは間隔が空くと思います。
# HP-UX をご使用の方、交代をお願いします。
# (環境の問題で、他の HP-UX  環境で問題ないようでしたすいません)