|
>>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 から 実行した場合は端末は割り当てられないので、それは不可能です。 で、あなたが本当は何をしたいかという話になるわけですが、コンソール (マシンにつながっているモニタ) に文字列を出したいんですか? あるいはファイルにあらかじめ入力文字列を書いておいて、ファイルに 出力したいんですか? |
|
>> 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を利用しています。 よろしくお願いします。 |
|
>>3147 68user 68user さんありがとうございます!! system("mount /mnt/floppy"); system("ls /home"); など実現できました!! ありがとうございました。 |
|
>>3148 FF > cronで”a.sh < /dev/pts/13 > /dev/pts/13 2&>1”を実行したところ > 正しく動作しているようです。 ほー、FreeBSD で試してみましたが、これ、できるんですねぇ。 知りませんでした。ただ、出力はいいとして、入力については ちょうどそのときその端末デバイスからの入力を受け付ける プログラム (シェルとか) が走っていた場合、キー入力が そのプログラムに渡るか、a.sh に渡るかは不定 なような気がします (FreeBSD で試した限りでは、ですが)。 あとは - その端末を読み書きする権限があるかどうか (パーミッションの問題) - 誰もログインしていなかったらどうするか - 複数の端末があった場合は who などで調べるとしても、 どの端末を選べばいいのか - (ウィンドウシステムがあるとして) たまたま選んだ端末がウィンドウの 後ろに隠れていたら とかいろいろ問題ありげなので、お勧めはしません。 |
|
「ネットワークプログラミングの基礎知識」の「リンク集・参考書籍」 http://x68000.startshop.co.jp/~68user/net/link-book.html にちょろっと追加しました。 # http://x68000.startshop.co.jp/~68user/cgi-bin/cvsweb.cgi/public_html/net/org/link-book.html |
|
>>3150 68user 68userさんご返答ありがとうございます。 >ちょうどそのときその端末デバイスからの入力を受け付ける >プログラム (シェルとか) が走っていた場合、キー入力が >そのプログラムに渡るか、a.sh に渡るかは不定 最初のreadの受け取りで若干おかしな動作をする(シェルのプロ ンプトが表示される)ようなので、cronを使わず常駐して時間に なったら動作するようにしました。 ありがとうございました。 |
|
内容あやしげ、そして需要がほとんどないと思われる 「DNS クライアントを作ってみよう」 を書きました。 http://x68000.startshop.co.jp/~68user/net/resolver-1.html http://x68000.startshop.co.jp/~68user/net/resolver-2.html http://x68000.startshop.co.jp/~68user/net/resolver-3.html 3連休つぶれちゃったよ。とほほ。 |
|
お世話になります。kakiです。 現在、LAN経由でクライアントから送られてくる(55msec毎)データを、 取得し、表示するHTTPサーバーを作成しています。 サーバー側で、クライアントと接続中にLANケーブルが抜けたのを 検出するのに、受信ループ中のping()で戻り値を判断して、 抜けているかどうかを判断しようとしていますが、 この方法は正攻法なのでしょうか? また、その方法を試そうと思ったのですが、 accept()後のrecv()で受信待ちをしてしまっている為、 ケーブル断が検出できていません。 受信待ちをしないよう、socket()後にfcntl(s,F_SETFL,O_NONBLOCK)と しているのですがrecv()でとまっているようです。 fcntl()の使い方が間違っているのでしょうか? |
|
>>3154 kaki > この方法は正攻法なのでしょうか? 正攻法とは何かという話になってしまいますが、TCP/IP の設計思想的には 誤りです。ケーブルが抜けようがルータが落ちようが、その部分が復旧したら 元通りに通信できるべきである、という考えだからです。 と言っても、タイムアウトを実装したいというケースもあるでしょうが、 わたしなら select したり non-blocking socket 使うと思います。ケーブル 断だけでなく、クライアント側のバグなどで いつまでたっても反応がない 場合なども対応できるからです。 サーバ側のケーブル断であれば >>1301 rosegarden という話もあったりしますが、通信できない原因はたくさん考えられるのに、 なぜサーバ側のケーブル断だけ特別扱いするのか、という話になるのではないかと。 > 受信待ちをしないよう、socket()後にfcntl(s,F_SETFL,O_NONBLOCK)と > しているのですがrecv()でとまっているようです。 > fcntl()の使い方が間違っているのでしょうか? non-blocking socket を使ったことがないのでわかりませんが、あってる ような気がします。 多分これは関係ないでしょうけど、とりあえず int val = fcntl(s, F_GETFL, 0); fcntl(s, F_SETFL, val | O_NONBLOCK); の方がいいでしょうね。 |
|
質問です。Windows のDOS窓で 0x01〜0x06、0x10、0x15〜0x17 で水道管みたいな罫線が出たり、 0x12、0x1b〜0x1fでちっちゃな矢印が出ますが、 これらの文字は誰がどこで決めたのでしょうか。 おわかりでしたらご教示ください。 |
|
>>3156 ふくし 調べましたが、わかりませんでした。 http://czyborra.com/charsets/codepages.html を見るに、 > 0x12、0x1b〜0x1fでちっちゃな矢印 は CP437 あたりだと思いますが、なぜ 0x01 で 0xC9 な 水道管が出るのかはわかりません。 http://www2d.biglobe.ne.jp/~msyk/cgi-bin/charcode/ で質問してみてはどうでしょうか。 |
|
>>3157 68user さん、ありがとうございます! 聞いてみます。 ちなみにDOS窓でjpとやると出てくる字から想像するに、 CP932ですよね。 usとやると437に切り替わりますが、そうすると出てくる字は 下で出てきたCP437そのままのようです。 |
|
たまに referer 見てみると、知らないところで突っ込まれて たりするのでおもしろい。 http://dns.qmail.jp/lies.html > コンテンツサーバとキャッシュサーバの違いを理解していな可能性が高いから。 うっ。勉強しよう。 |
|
お世話になります。 gcc(全般)でコンパイルした実行ファイルには チェックサムは付加されているのでしょうか? |
|
>>3160 saki > チェックサム の意味がわかりません。 ファイル転送などで化けてしまったバイナリを実行しようと すると、「チェックサムが一致しません」とか言ってくれる、 ような感じですか? もしそうなら、そういう機能は聞いたこと ありません。 もしかして、そういうのが可能なコンパイラがあるのでしょうか。 |
|
>>3161 68user 68userさん ご返答ありがとうございます。 そのチェックサムです。 ファイルをバイナリで開いて、そのファイルの全バイナリ値の合計のこと だそうです。(すいません私もあまり詳しくないのです。) あるファイルをコピー(ダウンロード)する時に、 コピー前のファイルとコピー後のファイルのチェックサムを 比較して、あっていればコピーが正常、あっていなければ異常と するプログラムを作りたいと思っていまして、 > gcc(全般)でコンパイルした実行ファイルには > チェックサムは付加されているのでしょうか? とお聞きしたのは、ファイルそのものにチェックサムが付加されていれば ファイルをオープンしてチェックサムの値を比べるだけで済むのかなぁと 思いまして・・・。 そういう機能がないのであれば、チェックサム自体をプログラムで 作ろうと思い、 ネットで調べたのですが簡単すぎるからなのか情報があまりありません。 参考になるサイトや本などあれば、勉強したいのですが、 ご存知のかたはいますでしょうか? |
|
>>3162 saki チェックしたいのがバイナリだけでいいのか、データファイルも 含むファイル一般なのかわかりませんが、前者であれば gzexe http://www.jp.freebsd.org/cgi/mroff.cgi?subdir=man&man=gzexe&dir=jpman-5.0.0%2Fman を使うのが簡単でしょう。gzexe は実行ファイルを圧縮しておく ためのコマンドですが、実行時に gzip で展開するので、結果的に gzip の誤り検出機能をそのまま利用できます。gzexe も 圧縮した 実行ファイルも、いずれも sh スクリプトですので、改造も簡単 でしょう。 後者であれば、単に gzip を使う手もありますし、あるいは cksum や md5 などのコマンドを利用するのもいいでしょう。 http://www.jp.freebsd.org/cgi/mroff.cgi?subdir=man&man=cksum&dir=jpman-5.0.0%2Fman http://www.jp.freebsd.org/cgi/mroff.cgi?subdir=man&man=md5&dir=jpman-5.0.0%2Fman http://www3.cds.ne.jp/~marimo/data/rfc/rfc1321-jp.txt なお、誤り検出のアルゴリズムとしては、 > ファイルをバイナリで開いて、そのファイルの全バイナリ値の > 合計のことだそうです。 は単純すぎます。言っちゃ悪いですが、この程度の認識しか持っていない のであれば、cksum や md5 などのコマンドを利用した方がよいです。 |
|
>>3153 68user なんかわざわざ書いてもらったようで恐縮です。 なんでもそうですが、自分が必要と思う部分を理解するには その周りの事情全てを勉強しておけ、というのが世間の常識なので、 俺みたくよこしまな考えでDNS関連の本やらWEBやらRFCやらを 眺めている輩にはなかなかハードルが高かったのですが、 おかげでDNS関連の資料に目を通すのにも少し抵抗が和らぎました。 ところで例の話の続きなんですが、うちのlinux(kernel-2.4.18+ glibc-2.2.4)では、bind-8.3.4-RELのdig8.3で名前解決できません。 straceしてみると、どうもpoll()で受信を検出できていないようです。 glibcの名前解決も同様のコーディングだったので、poll()を試しに select(),pselect()に変えてみましたがダメでした。 一方でbind9.1.3付属のdigでは名前解決ができました。 というわけで、そのコードをglibcに移植してしまえ、と思ったのですが、 iscライブラリというのが理解できず、結局移植はできていません。 一時はgethostbyname()内部を、正常に動作するdig9.1.3をsystem()で 呼び出し、その結果を拾ってくるように書き換えようと思いましたが、 どうやらgethostbyname()の利用頻度が低いようだったのでやめました。 今後についてはどうするか未定ですが、また調査しつつ改修しつつで 行きたいと思います。 |
|
かなりお久しぶりです。 >>3163 68user 実は私も、チェックサム=合計と思っていました。cksumのように CRC演算するものもチェックサムと呼ばれるようになった経緯を何 かご存知でしたら、教えていただけませんか? #少なくとも、CRC演算は合計(=サム)ではないです・・・ |
|
>>3165 へにか > 実は私も、チェックサム=合計と思っていました。 広義のチェックサムと狭義のチェックサムがあって、狭義の チェックサムは http://www.jp.freebsd.org/cgi/mroff.cgi?subdir=man&man=cksum&dir=jpman-5.0.0%2Fman#sect2 で言うところのアルゴリズム 1 なのだろうとわたしは思って います。このマニュアルではアルゴリズム 2・3 も「チェックサム」 と呼んでますね (それが一般的なのかどうかはわかりませんが)。 >>3163 68user を書いたときは、わたしの中では「チェックサム=広義のチェックサム」 だったので、あのような書き方をしましたが、 > ファイルをバイナリで開いて、そのファイルの全バイナリ値の > 合計のことだそうです。 は正しいですね。失礼しました。 |
|
>>3166 68user > チェックサムは > http://www.jp.freebsd.org/cgi/mroff.cgi?subdir=man&man=cksum&dir=jpman-5.0.0%2Fman#sect2 > で言うところのアルゴリズム 1 なのだろう あ、加算のたびに右ローテートって書いてあるので、アルゴリズム 1 も 「狭義のチェックサム」とは異なるんですね。 |