• ベストアンサー

フロッピーデータの読み込み

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

質問者が選んだベストアンサー

  • ベストアンサー
  • MovingWalk
  • ベストアンサー率43% (2233/5098)
回答No.6

>プログラムからマウントしないとread/writeはできないことになるのでしょうか? マウントしなければread/writeはできません。 マウントの方法は、mount関数を使ってもいいですし、system関数で mountコマンドを起動してもいいです。 また、プログラム起動前にmountコマンドを使ってもかまいません。

tmp
質問者

お礼

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

すると、全ての回答が全文表示されます。

その他の回答 (5)

  • MovingWalk
  • ベストアンサー率43% (2233/5098)
回答No.5

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

tmp
質問者

お礼

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

すると、全ての回答が全文表示されます。
  • xjd
  • ベストアンサー率63% (1021/1612)
回答No.4

>umountは、closeした後にすぐに行っても大丈夫な ものなのでしょうか? #2です。 大丈夫か、と言われると少々自身ありません。^^; 不安ならsleep()を噛まして下さい。 #include <unistd.h> unsigned int sleep(unsigned int seconds); あと、floppyをマウントするときは権限が必要です。 rootで実行するプログラムでしょうかね? ファイルシステムはたぶんmsdosかvfatですね。

tmp
質問者

補足

とりあえずテスト的に行おうと思うので、 自分のIDからコマンドラインでマウントできるか 確認してみます。 初歩的な質問ですみませんが、プログラムから マウントしないとread/writeはできないことに なるのでしょうか? たびたびの質問ですが、よろしくお願いします。

すると、全ての回答が全文表示されます。
  • Ujiki
  • ベストアンサー率37% (38/101)
回答No.3

はじめまして。質問に対して逸脱気味ですが、お赦し願います。 >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(シェル)に関する書籍はたくさんあります。もしも希望があれば、推奨する書籍をお教えできます。^^

tmp
質問者

お礼

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

すると、全ての回答が全文表示されます。
  • xjd
  • ベストアンサー率63% (1021/1612)
回答No.2

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関数の使い方をとりあえず調べてみて下さい。

tmp
質問者

お礼

ありがとうございました。さっそく、試してみます。 umountは、closeした後にすぐに行っても大丈夫な ものなのでしょうか?

すると、全ての回答が全文表示されます。
  • MovingWalk
  • ベストアンサー率43% (2233/5098)
回答No.1

そのFDへの書き込みはどういう方法で行なった(行なう)のですか? 読み書きをデバイスのRead/Writeでやるならそれでも可能です。 FDにファイルシステムを作成してあり、その中のファイルにアクセスするなら、 FDをマウントして、そのマウントポイントのファイルにアクセスする事になります。

tmp
質問者

補足

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

すると、全ての回答が全文表示されます。

関連するQ&A