|
ここのサイトのC言語のHTTPクライアントを使わせてもらって色々勉強させてもらってます。そこで質問なのですが、imodeのURL例えば(http://mobile.yahoo.co.jp/)のレスポンスが返ってくるプログラムを作ろうとしているのですが、どうも、302 FOUND がでてしまい、うまくいきません。どのように解決したらよいでしょうか? |
|
>>2748 木場 Locaiton: ヘッダに示されている URL を読み込めばよいです。 |
|
前回のことについての質問のつづきですが 僕のもっている参考書には掲載されてないのですが、 僕のもっている参考書が古いということでしょうか? |
|
>>2747 68user ご回答ありがとうございます。 ただ、$statusは直前のコマンドのリターン値がセットされる と認識しています。 Cシェルで直前のプロセスIDを取得するには、プロセスをバック グラウンドで動かすようにして、その際に標準出力されるプロセス IDをテキストファイルにおとして、grepなりをする方法しか ないかな、と考えています。 そこで、以下を考えました。 ftp -n <<EOF & open [IPアドレス] user [ユーザ名] [パスワード] binary get [getするファイル名] [保存するファイル名] close quit EOF これを実行すると [1] 10161 と言った形でプロセスIDが出力されます。 ただ、これをテキストファイルに落とす方法がわかりません。 多分、リダイレクトをするのだと思っているのですが、どこに それをうめこめばいいのでしょうか? |
|
それとも C言語で新しくできた関数なのでしょうか? |
|
>>2751 バクモン ああ、そういう意味ですか。 tcsh だと $! で取れますが、csh では無理かもしれないですね。 jobs -l だと取れそうですが、どうでしょうか。 ただ、僕なら監視用プロセスを別に起こします。 例えば、 mkdir /tmp/.ftp-lock ftp -n <<EOF open .. quit EOF rmdir /tmp/.ftp-lock として、監視プロセスは n 秒前より過去に /tmp/.ftp-lock が作成されて いたら、 kill `ps -ef | grep get-file.sh | grep -v grep' する、とか。 もちっと確実にするなら ln -s $$ /tmp/.ftp-pid ftp -n <<EOF open としてプロセス番号を特定できるようにする方法もあります ($$ は sh の プロセス番号なので、$$ の子プロセスを kill する必要がありますけど)。 >>2750 だいすけ 「何が」参考書に掲載されていないのですか? netdb.h? listen? accept? ここらへんの関数については規格化されていません。よって、UNIX では 使えても Windows では関数そのものがなかったりします。 例えば 「ANSI C マニュアル」 といった書名ならば、規格化された関数については網羅しているかもしれませんが、 規格外の関数については載っていなくても不思議ではありません。 |
|
5: #include <sys/types.h> 6: #include <sys/socket.h> 7: #include <sys/uio.h> 8: #include <unistd.h> 9: #include <sys/param.h> 10: #include <netinet/in.h> 11: #include <arpa/inet.h これらが参考書に掲載されてないという意味だったのですが manコマンドでしれべていくのですね。 どうもありがとうございます。 |
|
はじめまして。 まだ、UNIXをはじめたばかりの初心者です。 いま、windows環境のマシンからtera termを使ってUNIXマシンにpostgressqlをインストールしています。そこで、「カーネルのコンフィギュレショーションファイルをチェックする」と書かれているのですが、これってどうやるのですか? どなたか教えてください。 よろしくお願いします。 |
|
>>2755 ビギナー > 「カーネルのコンフィギュレショーションファイルを > チェックする」と書かれているのですが、これって > どうやるのですか? OS によって違います。 http://osb.sra.co.jp/PostgreSQL/Manual/PostgreSQL-7.1-ja/kernel-resources.html をどうぞ。 |
|
>>2756 68user ありがとうございます。 |
|
ご回答ありがとうございました。 今もちょっとわからないとこがあるのですが、 もうちょっと考えてわからなかったら、 聞きにきます。 |
|
再び質問です。 先ほどの質問と症状は似ているのですが、imodeのURLで(http://mobile.yahoo.co.jp/yahoo/index.html)のリクエストを出すと HTTP1.0 302 FOUND DATE Location http://mobile.yahoo.co.jp/error/404.html Conection: close のレスポンスが返ってきて、locationの部分を入れても実際のimodeのURLがゲットできなくて困っています。どのようにC言語のHTTPクライアント(1) のソースをいじればちゃんとしたレスポンスが得られるでしょうか? よろしくお願い致します。 |
|
初めまして黒木と申します。UNIX初心者です。 /usr/dict/words という辞書ファイルからEが2個以上出て、AとDとTがそれ ぞれ1個以上出て、最初がLで始まる単語が書かれてる行を見つけるには、 どういう1行コマンドを書けばよいでしょうか?よろしくお願いします。 (但し、文字は全て大文字・小文字を区別しない) *ファイルは何でも良いので、見つける方法が知りたいのです。 |
|
>>2759 きば > imodeのURLで(http://mobile.yahoo.co.jp/yahoo/index.html)の > リクエストを出すと ブラウザで http://mobile.yahoo.co.jp/yahoo/index.html を 見ると、404 not found になるので、 > Location http://mobile.yahoo.co.jp/error/404.html 当然そうなると思いますよ。 どこからこの URL が出てきたのでしょうか? >>2760 黒木 grep -i 'E.*E' /usr/dict/words | grep -i A | grep -i D | grep -i T | grep -i '^L' でどうでしょう。 |
|
すばやいレスありがとうございます。 http://mobile.yahoo.co.jp/yahoo/index.html ↑はimodeの使える携帯端末で見ることの出来るヤフーのカテゴリ検索のサイトです。 上記のURLのリクエストを送ったら携帯端末で見ることの出来るサイトをレスポンスしてくれるようにしたいのです。 imode専用のHTTPクライアントを68userさんのC言語のHTTPクライアント(1)を参考に作ろうと思っていて、とりあえず上記のURLで実験して作ろうと試みているのですが、なかなかうまくいかないので、68userさんの力をかして頂きたいと思う次第です。 |
|
>>2762 きば i-mode 端末のみで利用可能なページということですね? なら、 http://www.nttdocomo.co.jp/p_s/imode/tag/s2.html を参考にして、 GET /yahoo/index.html HTTP/1.0 User-Agent: DoCoMo/1.0/N209i などなど。 |
|
はい。imodeのみ利用可能なページです。 なるほど、、 urlをみてもうちょっとがんばってみます。 貴重なご意見ありがとうございます。 |
|
>>2761 68user 有難う御座いました。これで良いですね。 |
|
>>2753 68user ご回答ありがとうございます。 以下のようにロジックを変更しようかと思います。 ・ftpをバックグランドで動かす ・jobs -lの結果をテキストファイルに落とす ・5分sleepする(※1) ・grepとawkを使用して、テキストファイルからftpのプロセスIDを取得する ・ps -p にて取得したプロセスIDのプロセス生存を確認 ・ps -p のリターンコードが0以外であればkillするif文をおこなう(※2) こんな感じかな、と考えています。 怖い部分は※1,2です。 ※1:とりあえずユーザさんには現在の環境でgetが3分を越えることは ないといわれているので、安全を見て5分sleepさせるようにしたが 本当に大丈夫か? >>ユーザさんがOKと言っているので、問題なし・・・かな。 ※2:ps -p [プロセスID]でHITしなかった場合、リターンコードは必ず 0以外となる。逆にHITした場合は、必ず0となる。 >>このハンドリングは正しいのか、ちょっと自信なし。 色々とご回答ありがとうございました。 |
|
はじめまして。 私は、最近linuxを使い出した初心者です。 最近、仕事でpostgresqlをインストールしました。 インストールには成功したようなのですが、 $ pg_ctl startで起動をするとpostgresql(postmaster?)は起動します。 しかし $ postmasterでは、 DEBUG ... DEBUG ... DEBUG ... DEBUG ... と出力され、その後エラーメッセージも何も出なくて、反応が無くなってしまいます。(いつも、ctrl+cで抜けています) どうしてでしょうか? どなたかご存知の方、ご教授ください。 |
|
書き忘れていました。 バージョン:postgresql-7.11 環境:open blocksというlinuxマシンです。 (redhatでも同様でした) |