プロが教える店舗&オフィスのセキュリティ対策術

UNIX初心者です。
ここへの書き込みで良かったのか分かりませんが、
フロッピーのデータを読み込むのをCで書きたいのですが、
単純にデバイスをopenしてreadする方法で可能なのでしょうか?
可能な場合は、そのファイル名はどのように指定するのでしょうか。
とても初歩的な質問で、すみませんがよろしくお願いします。

A 回答 (6件)

>プログラムからマウントしないとread/writeはできないことになるのでしょうか?



マウントしなければread/writeはできません。
マウントの方法は、mount関数を使ってもいいですし、system関数で
mountコマンドを起動してもいいです。
また、プログラム起動前にmountコマンドを使ってもかまいません。
    • good
    • 0
この回答へのお礼

いろいろありがとうございました。
実際に行ってみます。
また、分からなくなったらご教授お願いします。
(私も、もうちょっと勉強します)

お礼日時:2002/11/03 03:04

#1です。



>FDへのマウントは /dev/fd0 でいいのでしょうか?
UNIXはシステムによって違います。
Linuxなら /dev/fd0 ですが、他のUNIXならそれぞれ異なると思います。
また、mount/umountのオプション(引数)も異なると思います。
manコマンドなどで確認される事をお奨めします。
    • good
    • 0
この回答へのお礼

そうですね。
この辺ぐらいは、自分で調べないと・・ですね。
ありがとうございました。
実際にやってみて、またわからないことが出てきたら
ご教授願います。
(初めて質問をしたのですが、とてもレスがいいのに
びっくりしました。)

お礼日時:2002/11/03 02:24

>umountは、closeした後にすぐに行っても大丈夫な


ものなのでしょうか?

#2です。
大丈夫か、と言われると少々自身ありません。^^;
不安ならsleep()を噛まして下さい。

#include <unistd.h>
unsigned int sleep(unsigned int seconds);

あと、floppyをマウントするときは権限が必要です。
rootで実行するプログラムでしょうかね?

ファイルシステムはたぶんmsdosかvfatですね。

この回答への補足

とりあえずテスト的に行おうと思うので、
自分のIDからコマンドラインでマウントできるか
確認してみます。

初歩的な質問ですみませんが、プログラムから
マウントしないとread/writeはできないことに
なるのでしょうか?
たびたびの質問ですが、よろしくお願いします。

補足日時:2002/11/03 02:15
    • good
    • 0

はじめまして。

質問に対して逸脱気味ですが、お赦し願います。

>Cで書きたいのですが
 tmp(なかなかクール^^)さんがUNIX初心者と書かれていますが、Cも初心者でしょうか? そもそも「 C 」を使わないといけない内容ですか? システムをある程度はプロテクトしたい。改ざんを許したくなかったりしますか? それとも高速な処理が必要なのですか? 相手がFDDだから高速な処理でもなさそうですね (^^)
 一般的にWindows系で処理をさせたい場合は、何かコンパイラーを勉強し、プログラミングしてから実行形式のコードを生成しないといけない風潮ってありますよね。UNIXの良いところは、「シェル・スクリプト」、「リダイレクト」、「パイプ」を理解して、コンパイラーを利用する前に、「シェル・スクリプト」でちょこちょこっとアプリケーションを作ってしまうことってありです。

 さて、小生の場合は「 bsh 」一本で、他の多機能(?)シェルに浮気しないですね。UNIX根元のシェルであるボーン・シェル一本に決めてます。お陰でCD-ROMで稼動するLinuxなども調整できます。シェル・スクリプトで出来ているUNIXの各種ユーティリティーって本当に多いんですよ。vi などのエディターや、more などで表示させると、先頭の1行目に「#! /bin/sh」と宣言されているASCIIファイルは全てがシェル・スクリプトです。それも「 bsh 」宣言ですね。(^^)

     ----------

 もう設定されておられるかも知れませんが、/etc/fstab に、手動で以下の1行を加えます。小生は今でも「 vi 」だけで編集してますね。体で覚えてしまってます…

/dev/fd0 /fd vfat user,rw,noauto,exec 0 0

ですかね。(^^) 必要であれば「 codepage=xxx 」なども加えますが、ファイル名には漢字は使われていなければ気にする必要無しです。「 vfat 」は、コンパイル時に「 CONFIG_VFAT_FS=m 」にでもしてモジュール化しておきます。これで、どのユーザーからでも、Windows系で作成したFDをマウントできます。

     ----------

 後は、リダイレクトで処理しますか。(^^)
小生は少し複雑な処理には「 awk 」を利用してます。(年齢がばれそう。あちゃ) パールを勉強されても良いでしょう。後は、UNIX標準のアプリケーションを組み合わせれば、ほとんどのASCIIファイルの処理は可能です。

 さてさて、ここまで書き込みながら、tmpさんが「 ASCIIデーター 」ではなく、「 BINARYデーター 」を読みたいのかもしれないですよね。そうすると、やはり「 C 」とかになりそうですね。全く、無意味な回答です。失礼致しました。(^^);

sh(シェル)に関する書籍はたくさんあります。もしも希望があれば、推奨する書籍をお教えできます。^^
    • good
    • 0
この回答へのお礼

いろいろありがとうございました。
コマンドレベルなどでは、とても簡単にできてしまうと思いますが、
あるプログラムの部品になるものなので、質問させて頂きました。
Win系の仕事をしていたので、よく分からないことが多くて・・。
これからも、よろしくお願いします。

お礼日時:2002/11/03 01:38

open/read関数を使うなら、floppydiskをファイルシステムとしてmount/unmountする必要があります。



#include <sys/mount.h>

int mount(const char *specialfile, const char * dir, const char * filesystemtype, unsigned long mountflags, const void * data);

int umount(const char *dir);

mount/umount関数の使い方をとりあえず調べてみて下さい。
    • good
    • 0
この回答へのお礼

ありがとうございました。さっそく、試してみます。

umountは、closeした後にすぐに行っても大丈夫な
ものなのでしょうか?

お礼日時:2002/11/03 01:43

そのFDへの書き込みはどういう方法で行なった(行なう)のですか?


読み書きをデバイスのRead/Writeでやるならそれでも可能です。
FDにファイルシステムを作成してあり、その中のファイルにアクセスするなら、
FDをマウントして、そのマウントポイントのファイルにアクセスする事になります。

この回答への補足

FDはとりあえず、DOSフォーマットのものを
使用します。
FDへのマウントは /dev/fd0 でいいのでしょうか?
何かで、/dev/rfd0 というのも見たのですが、どちらでも
いいものでしょうか?
よろしくお願いします。

補足日時:2002/11/03 01:44
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!