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

[FDclone-users:00110] SL-C700+FD-2.02aでのサスペンド復帰について



  みなさんはじめまして、平野といいます。

SL-C700 で FDclone Ver. 2.02a を使用させていただいています。
とても便利なプログラムを公開していただき、ありがとうございます。

さて、SL-C700 の bash から fd を起動させた状態で SL-C700 をサスペンドおよび
復帰させると fd が bash のバックグラウンドジョブになってしまうという現象に
ついて調べてみました。
(サスペンド時にカーネルが SIGSTOP、復帰時に SIGCONT を各プロセスに送るらしい
です)

いろいろと試した結果、私的にですが満足のいく環境を作ることができましたので
ご報告させていただきます。
(間違いや不適切な表現があればご指摘ください)

==== SL-C700 のサスペンド復帰時における FDclone の動作
1. 動作確認機器およびバージョン

  Sharp SL Zaurus SL-C700
      Linux Kernel バージョン: 2.4.18-rmk7-pxa3-embedix
      Compiled by: SHARP
      ROM Version : 1.20 JP
  端末    / SL-C700標準のターミナル
  bash    / SL-C700標準の bash
            GNU bash version 2.05.0(1)-release (arm-unknown-linux-gnu)
  FDclone / FDclone Ver. 2.02a
      dev_img-1.3でセルフコンパイル・リンク
      (dev_img-1.3でコンパイル・リンクすると stat(), fstat(), lstat()の
       リンクエラーが発生するため /usr/local/include/sys/stat.h を修正)
      # 私の環境だけ?

2. サスペンド復帰時の動作

  (1) 標準と思われる状態

    _fdrc(FD-2.02a.tar.gz同梱) を ~/.fd2rc としてコピー後、'keymap BS "^?"'
    を追加。
    ~/.bashrc は以下の通り。

      export PATH=/usr/local/bin/:$PATH:/mnt/dev/bin
      export TMPDIR=/var/tmp

    fd 起動状態でサスペンド復帰すると fd が bash のバックグラウンドジョブと
    なり bash プロンプトに戻る。
    bash から fg[Enter] として fd をフォアグラウンドジョブにしても端末I/Oが
    復元されていないため操作ができない状態となる。ESC[Enter]y[Enter]で fd を
    終了可能。

  (2) bash のジョブコントロールを無効化した状態

    (1) の ~/.bashrc に以下を追加

      function fd () { set +m; /usr/local/bin/fd $*; set -m; }

    fd 起動状態でサスペンド復帰をしても fd は問題なし。
    fd から EDIT_FILE で vim を起動している状態でサスペンド復帰すると vim が
    fd のバックグラウンドジョブになり fd の画面に戻る。
    EXECUTE_SH のプロンプトで fg[Enter] とすると vim がフォアグラウンドジョブ
    になる。端末I/Oがおかしいが、':q' で vim を終了可能。

    fd の EXECUTE_SH 後の[Enter] で bash を起動している状態でサスペンド復帰
    すると fd の画面に戻る。
    下矢印キーで bash のプロンプトが表示される。
    bash のプロンプトで exit[Enter] とするとキー入力に反応がない(キー入力の
    エコーバックは表示される)
    そのときの ps -eflw の一部は以下の通り。

  F S UID        PID  PPID  C PRI  NI ADDR    SZ  WCHAN STIME TTY          TIME CMD
000 S zaurus     748   747  0  75  10    -   636  39144 16:46 ttya0    00:00:00 /bin/bash
000 S zaurus     801   748  0  75  10    -   588  661e8 16:50 ttya0    00:00:00 /usr/local/bin/fd
004 Z zaurus     851   801  0  75  10    -     0  38d84 16:51 ttya0    00:00:00 [bash <defunct>]

  (3) bash および fd  のジョブコントロールを無効化した状態

    (1) の ~/.bashrc に以下を追加

      function fd () { set +m; /usr/local/bin/fd $*; set -m; }

    (1) の ~/.fd2rc に以下を追加

      set +m

    これにより(2) ので発生した現象がすべて回避される。
====

------
平野 章彦(Akihiko HIRANO)