68user's page 掲示板

Prev< No. 3145〜3150> Next  [最新発言に戻る] [過去ログ一覧]
No. 3145 # kaki 2003/03/19 (水) 09:12:15
>>3144 68user
ご回答ありがとうございます。

mountはコンソール上でのやり方は知っているのですが、
gccでコンパイルしたプログラムからも、
使えるということなのでしょうか?
また、コンソールで使えるコマンド(# mountや# cdなど)を
Cプログラムで使用するにはどのようにするのでしょうか?

実際、やりたいことはプログラムを起動したら、
FD、CF(コンパクトフラッシュ)にマウントし、
ファイルがあればディレクトリにコピーするといったことです。

参考になるサイトや文献などご存知でしたら、
教えてください。
よろしくお願いします。

No. 3146 # FF 2003/03/19 (水) 13:25:20
端末の入出力について質問です。

cronで実行されたシェルの出力を端末に出力したり、
端末からの入力を受けたりしたいのですが、どのよう
にすればよいのでしょうか?
次のようなやり方ではダメでした。
#ファイル名 a.sh
#!/bin/ksh
while [ : ]
do
        read INPUT?'?'
        if [[ $INPUT = 'q' ]]; then
                exit
        fi
done
#スクリプト終了
% a.sh < /dev/pts/13 > /dev/pts/13 2&>1

どなたか教えてください。よろしくお願いします。

No. 3147 # 68user 2003/03/19 (水) 13:51:15
>>3145 kaki
> mountはコンソール上でのやり方は知っているのですが、
> gccでコンパイルしたプログラムからも、
> 使えるということなのでしょうか?
mount(1) は内部で mount(2) を呼んでいるだけなので、自分で
mount(2) を呼んでやればよいわけです。

mount(1) のマニュアル http://www.linux.or.jp/JM/html/util-linux/man8/mount.8.html
mount(2) のマニュアル http://www.linux.or.jp/JM/html/LDP_man-pages/man2/mount.2.html
セクションとは? http://www.linux.or.jp/JM/section.html

> また、コンソールで使えるコマンド(# mountや# cdなど)を
> Cプログラムで使用するにはどのようにするのでしょうか?
system(3) を使います。
    http://www.linux.or.jp/JM/html/LDP_man-pages/man3/system.3.html

なお、cd は海より深い理由により、system(3) からは使えません。
chdir(2) を自分で発行してください。
    http://www.linux.or.jp/JM/html/LDP_man-pages/man2/chdir.2.html

>>3146 FF
> cronで実行されたシェルの出力を端末に出力したり、
> 端末からの入力を受けたりしたいのですが、
おそらく「端末」という用語を誤解されていると思いますが、cron から
実行した場合は端末は割り当てられないので、それは不可能です。

で、あなたが本当は何をしたいかという話になるわけですが、コンソール
(マシンにつながっているモニタ) に文字列を出したいんですか?

あるいはファイルにあらかじめ入力文字列を書いておいて、ファイルに
出力したいんですか?

No. 3148 # FF 2003/03/19 (水) 14:47:05
>> 3147 68user

>おそらく「端末」という用語を誤解されていると思いますが、cron から
>実行した場合は端末は割り当てられないので、それは不可能です。
「端末」は、画面と入力が行える(ディスプレイとキーボード)と認識
してましたが間違っているでしょうか?また、cronに端末が割り当てら
れないのは認識していましたが、何らかの方法で端末を割り当てるか、
リダイレクトなどで入出力できないものかと思って質問させていただき
ました。

質問時には、コマンドラインでシェルを実行し確認したところ、
readのpromptが適切に表示できないなど若干問題があったので質問
させていただいたのですが、cronで”a.sh < /dev/pts/13 > /dev/pts/13 2&>1”を実行したところ正しく動作しているよう
です。現在は、本当にこれでいいのか(コマンドラインではうまく
いかなかったので)、動作で注意すべき点はないか(どのデバイス
に出力すればよいか)悩んでいるところです。なにかアドバイスが
あればよろしくお願いします。

>で、あなたが本当は何をしたいかという話になるわけですが、コンソール
>(マシンにつながっているモニタ) に文字列を出したいんですか?
コンソールに入力を促す文字列を出力し、ユーザからの入力を受け取り
たいのです。(read INPUT?'?'を行いたい)

UNIX汎用だとおもったので環境は書かなかったのですが、一応記述します。
NCRのUNIX V(らしい)でK Shellを利用しています。

よろしくお願いします。

赤色の文字は 「Windows 機種依存文字」か、いわゆる「半角カナ」です。 この掲示板では自動変換されますが、今後は使用しないで下さい

No. 3149 # kaki 2003/03/19 (水) 16:52:19
>>3147 68user
68user さんありがとうございます!!

system("mount /mnt/floppy");
system("ls /home");
など実現できました!!
ありがとうございました。

No. 3150 # 68user 2003/03/20 (木) 00:26:24
>>3148 FF
> cronで”a.sh < /dev/pts/13 > /dev/pts/13 2&>1”を実行したところ
> 正しく動作しているようです。
ほー、FreeBSD で試してみましたが、これ、できるんですねぇ。
知りませんでした。ただ、出力はいいとして、入力については

        ちょうどそのときその端末デバイスからの入力を受け付ける
        プログラム (シェルとか) が走っていた場合、キー入力が
        そのプログラムに渡るか、a.sh に渡るかは不定

なような気がします (FreeBSD で試した限りでは、ですが)。

あとは
    - その端末を読み書きする権限があるかどうか (パーミッションの問題)
    - 誰もログインしていなかったらどうするか
    - 複数の端末があった場合は who などで調べるとしても、
        どの端末を選べばいいのか
    - (ウィンドウシステムがあるとして) たまたま選んだ端末がウィンドウの
        後ろに隠れていたら
とかいろいろ問題ありげなので、お勧めはしません。

Prev< No. 3145〜3150> Next  [最新発言に戻る] [過去ログ一覧]