トップページphp
708コメント194KB

C/C++ CGIスレッド

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん04/02/26 08:58ID:GDAQuNNS
C言語CGI専用スレッド
http://pc2.2ch.net/test/read.cgi/php/988918264/

C/C++ CGI 専門のスレッドです。

スクリプトを検索できるサイトです。

http://cgi.resourceindex.com/Programs_and_Scripts/C_and_C++/
http://www.cgifiles.com/scripts/cc++/index.shtml

前スレ
http://pc2.2ch.net/test/read.cgi/php/988918264/
0241nobodyさん04/08/15 15:10ID:???
サーバーでコンパイルするかクロスコンパイルでぐぐってね。
ばいばい。
0242nobodyさん04/08/15 16:05ID:???
>>240
で、コンパイルマシンはHP-UXなのか?
024322904/08/15 23:43ID:???
コンパイルマシンはWINDOWSです…
0244nobodyさん04/08/16 00:08ID:???
窓のアプリケーションがLinuxで動くわけなかろーがこのバカチンがー

マジレスすると、お前には無理なので諦めろ
0245nobodyさん04/08/16 00:14ID:???
おまいら釣られすぎ
0246nobodyさん04/08/16 00:18ID:???
>>244
Perlと同じ感覚なんじゃないかと
024722904/08/16 00:28ID:???
もうちょっと勉強してからやります。
Perlと同じような物だと思ってました…
0248nobodyさん04/08/16 06:26ID:???
>>247
>もうちょっと勉強してからやります。
>Perlと同じような物だと思ってました…

プロの釣り師だな
0249nobodyさん04/08/20 02:03ID:???
>>229 >>247
マジ釣られしてやろう。スクリプト言語は文字ベースの互換性があるが、
コンパイル言語はバイナリベースでの互換性を確保しなければならん。
よって、互換プラットホーム間でなければ動かん。
もっと勉強汁。
0250nobodyさん04/08/21 11:33ID:???
0251nobodyさん04/08/21 12:59ID:???
WindowsでGCC使ってクロスコンパイルかけたのかもしれないじゃないか。
100%ないけど。
0252nobodyさん04/08/21 16:06ID:???
gccを使っているのは確かだ。
0253nobodyさん04/08/22 23:49ID:OO5ezOdW
でもいかりや長介が逝っちゃったことに
変わりはない。

無念!
0254nobodyさん04/08/23 09:54ID:???
>>253
コスモを感じる
0255nobodyさん04/08/24 12:54ID:???
UTF-8の掲示板作ったら、出力サイズが2chに比べて2〜3倍になったorz
2chのhtmlを保存してUTF-8に変換してもまだ1.5倍。
マークアップしつこすぎたかな…。

<div class="res">
 <div class="data">
  <h3 class="name"><span class="number">5</span> <span class="label">投稿者</span> <a href="mailto:tokimushi@yahoo.co.jp" title="この投稿者にメールを送る">名前</a></h3>
  <ul>
   <li class="time"><span class="label">投稿時刻</span> 2004年08月07日(土)17時54分04秒</li>
   <li class="url"><a href="http://www.w3.org" title="この投稿者のウェブサイトへ">HOME</a></li>
  </ul>
 </div>
 <div class="comment c3 kuma"><p>なんだかんだ</p></div>
</div>
025625504/08/24 12:56ID:???
誤爆すいません
0257nobodyさん04/08/24 13:22ID:???
>>255
UTF-8の掲示板は重いから嫌
0258nobodyさん04/08/30 09:03ID:???
0259nobodyさん04/09/07 13:19ID:???
0260nobodyさん04/09/07 22:17ID:???
ネタがありませんなあ
0261nobodyさん04/09/08 00:54ID:???
こっちは微妙に伸びとる
ttp://pc5.2ch.net/test/read.cgi/php/1048393217/
0262nobodyさん04/09/08 01:07ID:???
http://pc5.2ch.net/test/read.cgi/php/1048393217/
0263nobodyさん04/09/26 01:20:15ID:???
遅レス
>>255
うほ、いいdiv厨
0264nobodyさん04/09/27 13:16:42ID:???
カウンタを作ってるのですが
日にちがかわったら今日のカウントを昨日のカウントへコピーして
今日のカウントを初期化するIF分がわかりません
教えてください
0265nobodyさん04/09/27 14:56:10ID:???
(  ゚,_ゝ゚)バカジャネーノ
0266nobodyさん04/09/27 16:58:41ID:???
>>264
お前プログラム向いてないよ。サンプル漁る位しれ。
0267nobodyさん04/09/27 21:25:52ID:yrxaF59A
釣れた!初めてなのに釣れちゃった!(AA略
0268nobodyさん04/09/27 23:08:37ID:???
こんな活きの無い魚でそんなに喜ぶなよ
0269nobodyさん04/10/01 15:04:26ID:???
活きの無い

( ´,_ゝ`)プッ
0270nobodyさん04/10/01 16:56:12ID:???
4日も経ってからsageで煽るなって
0271nobodyさん04/10/01 17:46:36ID:qscnRJvR
あのーPHPがアパッチのモジュールで動作するから早いって聞いたんですよ・・・

Cで書いてもCGIとして実行してたらプロセスとして実行するから結構負荷がかかっちゃいますかね・・・
でもCGI使わずにモジュールで動作するようにすればCの方が早いんですかね・・・

PHPの開発は日本人が多いから日本国内ではPHPの方が早いってことになってるんですかね・・・
それともベンチマークテストやったら実際に早いんすかね・・・

そこらへんをすっきり説明してくださる方おりませんか?
0272nobodyさん04/10/01 17:48:41ID:???
なんか不勉強で人頼みな奴ほど速度を気にするように思うんだけど、
これってマーフィーの法則ですか。
0273nobodyさん04/10/01 17:52:03ID:qscnRJvR
はいーわたしはマーフィーの法則にしたがって行動しております。

補足なんですけど〜CGIもモジュールですよね〜
PHPのそれはどんなモジュールなんですかね〜
PHPより高速になるCGIモジュールってありますかあ?
0274nobodyさん04/10/01 17:53:56ID:???
裏が取れないという点ではそうかも
背景としては、本来速度を気にする人ってのはハードなシステムを組まされてる人なんだけど、
この手の輩は四六時中ボトルネックを探してるので、何すれば早くなるかとか、早いってのは
どういうことかとか正攻法で理解してて、あんま質問を垂れ流さないってのがあるんだと思う

ところで最近はチューンするにしてもApacheのモジュールにしちゃうこと減りましたね
ってこのネタもスレ違いかorz
0275nobodyさん04/10/01 17:54:54ID:???
>273
うっぜ
死ねカス
0276nobodyさん04/10/01 18:04:01ID:qscnRJvR
あれへんだなあ・・

何言ってるかわかんなくなってきちゃった・・・・
でもさあPHPってHTMLに記述するスクリプト言語ですよねェ〜

それをパースして実行するんですからあきらかにコンパイルしたCの
プログラムの方が早そうに思えるんですけどねエエ・・・・
0277nobodyさん04/10/01 18:07:17ID:qscnRJvR
>>275

ウゼェ じゃないんですかああ?
うっぜってどこの方言ですかアア??

やぱありCGIでPHPを使った方がいいんですかねえ・・・
どうなんですかねええ
優秀なみなさ〜〜ん
0278nobodyさん04/10/01 18:09:14ID:???
phpをネタに持ってきた時点で脳が古い。
センスもなし。
0279nobodyさん04/10/01 18:18:02ID:qscnRJvR
>>272

あ〜ちなみにおくれつっこみですけどお〜〜
それはマーフィーの法則とはいいませんよ〜
それは272さんとその仲間達(272本人かも・・)の法則ですよ〜〜

それとも次ぎのマーフィーの法則に載るんですかあ〜〜
それともマーフィーの法則っていっとけばカッコイイと思ったんですかあ〜

マーフィーの法則をネタに持ってきた時点で脳が古いですよ〜
扇子あげましょうか?
0280nobodyさん04/10/01 18:23:01ID:???
>>274
2chでのやりとりなんてほとんどマーフィーの法則に嵌ってるだろ。
0281nobodyさん04/10/01 18:29:10ID:???
>>278
昔はPHPなら速度比較と処理負荷だけで飯五杯はいけたんだが・・・
もはや残ってる部分といえばコードキャッシュネタくらいか
Cでおかずになるネタは・・・このスレの伸びが何かを語っているな・・・
0282nobodyさん04/10/01 18:31:49ID:???
>>280
それ自体もそうでつか
0283nobodyさん04/10/01 18:35:57ID:???
たいていがマーフィーの法則に当てはまることが法則ってのじゃ利用価値ないじゃん。
どうでもいいけど昔、マ板かどっかにCのコーディングにありがちな「マーCの法則」スレとか無かったっけ。
田代がまだ只の人だったころの話なのだが。
0284nobodyさん04/10/01 18:48:52ID:???
>>283
そりゃ田代本人が出した本のタイトルじゃないのかw
PHPは旬過ぎたけど user ml がまだまだアツイぜ
0285nobodyさん04/10/01 19:01:49ID:???
http://news13.2ch.net/test/read.cgi/news/1096597691/
反応が薄いな
0286nobodyさん04/10/19 10:52:37ID:eOcRyqWU
Apache2のWinネイティブなCGIでActiveXEXEと
やりとりってできないんでしょうか?
CGIを普通に起動する分にはちゃんとできてるのですが・・・
いちおうApacheのサービスは「デスクトップとの対話を許可」してあります
0287nobodyさん04/10/21 10:38:39ID:GNUlgmPe
cとphp

おれはcの方が早いと信じたい!
0288nobodyさん04/10/21 23:49:17ID:???
>>286
なにがやりたいのかいまいち不明
0289nobodyさん04/10/24 21:41:04ID:???
アルゴリズムによってはCの方が早くなるんじゃないだろうか

url文字列のほうは良いんだがmultipart/form-dataのクラスをどういう構造にしたら分りやすいかちょっと悩む
ただの文字列はoperator[]でファイルのときはファイルの情報を持ったオブジェクトを返すでいいかな
0290nobodyさん04/10/24 21:57:41ID:???
車輪の再開発してないで既存のライブラリ使えよ
0291nobodyさん04/10/27 11:54:00ID:???
単純で良い物が無い
0292nobodyさん04/10/27 23:05:12ID:???
単純でよければ自作すればいいじゃーん
0293nobodyさん04/10/27 23:06:32ID:???
だからしてるんじゃないか
0294nobodyさん04/10/28 06:15:52ID:???
このスレはドリフだな
0295nobodyさん04/10/30 02:13:13ID:???
>>289
自分が使いやすい/使いたいように作れば、それで良いと思うよ
0296nobodyさん04/10/30 02:26:46ID:???
C++でCGI作ろうと思ったけど全然ライブラリが揃って無くて駄目だね。
Perlならcpanでサクサク拾えるのに。
0297nobodyさん04/11/02 10:30:42ID:???
>>296
Cのライブラリを使えばいいじゃん
0298nobodyさん04/11/30 12:32:26ID:q4147YdE
レスポンスがあるかわかりませんが..

POSTで受け取った文字が化けるのでiconv使って変換をと思ったんですが

iconv_t icv_hook;
char *inp;
char *outp;
size_t ret_val;
size_t in_buf_left;

memset(out_buf, 0, BUFSIZ);
in_buf_left = strlen(in_buf);
out_buf_left = BUFSIZ;

ret_val = iconv(icv_hook, inp, in_buf_left, outp, out_buf_left);
警告: 互換性のないポインタ型からの引数 2 個の `iconv' を渡しますです
警告: 引数 3 個の `iconv' を渡しますにより、キャストなしで整数からポインタを作りました
警告: 互換性のないポインタ型からの引数 4 個の `iconv' を渡しますです
警告: 引数 5 個の `iconv' を渡しますにより、キャストなしで整数からポインタを作りました


http://docs.sun.com/app/docs/doc/806-2802/6jc0bne4u?l=ja&a=view
これの通りにしたのに
どこがおかしいのでしょうか?
0299nobodyさん04/11/30 13:42:39ID:???
>>298
char *とchar **は違う。
0300nobodyさん04/11/30 19:18:07ID:q4147YdE
どうもありがとうございます。

char *とchar **は違うとはわかりますが、ではどこをどう直せばよいのでしょうか?
宣言時にchar**とやったり、キャストを入れてみてもやはり警告が出ます。

コンパイルは通りますが、実行時に
iconv()を呼ぶときに必ず
「セグメンテーション違反です
のエラーが出ます
0301nobodyさん04/11/30 19:56:28ID:???
>>300
const char *inp;
char *outp;
(中略)
ret_val = iconv(icv_hook, &inp, in_buf_left, &outp, out_buf_left);
0302nobodyさん04/11/30 20:09:48ID:???
>>301

char *inp;
char *outp;
ret_val = iconv(icv_hook, &inp, &in_buf_left, &outp, &out_buf_left);

なぜか指示どうりではだめでしたがこうやったら正しく実行できたので
とりあえず報告します。
0303nobodyさん04/11/30 20:20:55ID:???
>>302
初めて使う関数は、きっちりmanを見たほうがいいよ。
副作用のこともあるし。

http://www.linux.or.jp/JM/html/LDP_man-pages/man3/iconv.3.html
これはLinuxのだけど。
0304nobodyさん04/12/03 15:18:44ID:???
C/C++ CGIで、最初に1回だけユーザ認証をやって、
その後同一の実行ファイル上で、ログイン状態を維持する

これを実現するための考え方と、参考になるソースを教えてください。
0305nobodyさん04/12/03 22:30:06ID:???
>>304
同一の実行ファイル上ってのがよくわからない。
言葉通りに解釈すると、Cookieにそのファイルのpathを設定すればいいだけだけど。
0306nobodyさん04/12/04 00:34:37ID:???
PHPのセッション管理のような仕組みを作っちゃえば楽なんだろうけど、作るのは楽じゃない。
0307nobodyさん04/12/05 06:35:51ID:???
>>304

>>305に1票、もしオレがやるなら、やっぱ Cookie使う。
セッション管理より楽だし。
厳密性を求めるのは厳しいけど、ユーザ認証が目的なら、
同じブラウザを使ったかどうか分かる Cookieは充分有効な手段でしょ。
0308nobodyさん04/12/05 06:40:37ID:4YEMHaP5
>>304
ソースくらい検索してほしいが、オレのブックマークにこんなのが入っていたので参考までに。
ttp://sometime.minidns.net/~ccgi/taggedstr.html
0309nobodyさん04/12/05 06:41:11ID:???
sageるつもりだったがついうっかり・・・ OTL
031030504/12/05 10:05:05ID:???
> C/C++ CGIで、最初に1回だけユーザ認証をやって、
> その後同一の実行ファイル上で、ログイン状態を維持する

通常、CGIプログラムはリクエスト毎に終了してしまうので、
プログラム内の変数にログイン状態のデータを維持する事は出来ない。

そこで、データの永続化。
具体的には、ファイル、データベース、共有メモリでもなんでもいいので、
CGIプログラムが終了してもデータが残るような媒体にデータを記録する事になる。

その際、Process IDやIP address等からユニークなIDを作成し、
このIDをキーとしてログイン状態などの情報を記録する。
同時に、このIDをセッションIDとしてブラウザのCookieに設定させることで、
認証を済ませたユーザかどうかを確認する。これがセッション管理。

一度認証を済ませたあとは、
ブラウザが送ってくるCookie(CGIの場合は環境変数などに設定される)
のセッションIDと一致するキーのデータを引き出し、そのログイン状態を確認すれば良い。


>>306
簡単なセッション管理の実装で、
セッション毎に./session/$SESSION_ID$ ファイルを作成するとかはどうだろう。

>>307
>>305は、一応、セッション管理を前提に書いてました。
"同じ実行ファイルの上で"が同一URL上でという意味ならCookieのpath設定だけで済むかと思ったので。
0311nobodyさん04/12/05 11:23:18ID:???
http://sometime.minidns.net/~ccgi/taggedstr.html
0312nobodyさん04/12/05 16:32:23ID:???
普通にクッキーデコーダクラス作ればいいだけの話じゃん。
おいらはurl_decodeクラスとそこからget,post,cookieの継承クラス作ったけど。
データ構造は自作二分木
0313nobodyさん04/12/05 17:12:51ID:???
そういう手続き型のはモジュールでやったほうがいいと思われ
0314nobodyさん04/12/05 17:17:25ID:???
>>313
そうか?
ヘンテコな抽象化だなとは思うが、リクエストとかユーザステートみたいな
他の設計クラスとかち合わなきゃどうでもよくね。
クラス=メソッドってOOとしてはNGだけど、Cppなんだし。
0315nobodyさん04/12/05 17:28:03ID:???
C++はオブジェクトをとるかデータ構造をとるかでよく迷わされる
Cでやることも考えるなら、そう迷うこともないけど
0316nobodyさん04/12/05 17:30:13ID:???
おいおいLispスレが立ったぞ。ドンケツ脱出だな。
0317nobodyさん04/12/05 18:46:29ID:???
>>316
ACLかよw
そりゃ間違いなく脱出だが
031830404/12/07 09:58:50ID:???
アドバイスありがとうございます。
色々試してみます。
0319nobodyさん04/12/25 01:16:54ID:???
みんなUTFとか使ってる?
0320nobodyさん05/01/19 15:43:33ID:???
((void *)0)
0321nobodyさん05/01/21 13:43:21ID:Z6ezIjZ/
ばかばかしい質問かもしれないんですが
bluequartz上でC/C++ cgiがどうして動かせなくて困ってます。

gcc バージョン 3.3.2 20031022 (Red Hat Linux 3.3.2-1)
もちろんapacheは動いています Server version: Apache/2.0.51

コンパイルしたファイル(xxx.cgi)はコマンドラインからは実行できるのですが、
これをブラウザから見ようとすると、 「xxx.cgi ファイルを保存しますか?」
となってしまいます。
どこがおかしいのでしょうか

何か見落としているかも知れないので指摘いただきたいです
0322nobodyさん05/01/21 15:52:04ID:???
>>321
content-typeが変なのになってるんじゃないでしょうか。
032332105/01/21 16:58:47ID:???
普通に
Content-type: text/html
です。

テスト用に時刻表示するやつを作ってみましたが
以下のテキストを吐き出すだけです。
Content-type: text/html

<html>
Fri Jan 21 16:53:21 2005
</html>

これもブラウザから見ようとすると
やっぱりファイルを保存しますか?となってます
0324nobodyさん05/01/21 17:39:21ID:???
>>323
保存したファイルの中身は?
032532105/01/21 18:10:27ID:???
>>324
保存したファイルの中身を見てみましたが実行用のバイナリファイル
そのものだと思います。
出力結果とかが保存されてるわけではない(と思う)です

0326nobodyさん05/01/21 18:44:53ID:???
AddHandlerは?
032732105/01/21 18:56:11ID:???
今のところこうなってます

ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
.....
AddHandler cgi-script .cgi
AddHandler cgi-script .pl

0328nobodyさん05/01/21 22:24:50ID:???
>>321
どっちかと言うと C/C++ に関する問題ではないような。
だってコマンドラインから実効出来るという事は、「Cプログラム」としては正しいわけだろ。
たぶん Apache のディレクティブがきちんと設定されてないのでは?
CGI 実行ディレクトリについて、Options +ExecCGI とかやってる?

ちなみにウチのディレクティブは、CGI 関連はこんな感じ(Win32/Apache 2.0)。

LoadModule cgi_module modules/mod_cgi.so

ScriptAlias /cgi-bin/ 実際のディレクトリ

<Directory "実際のディレクトリ">
AllowOverride None
Options +ExecCGI
Order Allow,deny
Allow from all
</Directory>

AddHandler cgi-script .cgi .pl

設定してからだいぶ経つので細かい意味は忘れてしまった・・・ウチも色んなトコ見て
コピペを繰り返したので、検索しまくってガンガッてほしい。
0329nobodyさん05/01/22 07:40:07ID:???
>>327
Perl CGIは実行できてるんだよね。
033032105/01/22 11:24:45ID:???
すみません
今確認してみたらPerlCGIも実行できてませんでした...

0331nobodyさん05/01/22 13:33:32ID:???
どこに置いて実行しようとしているんだ?

/cgi-bin/ならデフォルトでAliasが設定されているから>>328のように
Options +ExecCGIを追加しないとならないし。
俺は/cgi-bin/のAliasをコメントアウトして全ディレクトリで使えるようにしてある。

DocumentRoot "実際のディレクトリ"

<Directory "実際のディレクトリ">
Options FollowSymLinks MultiViews ExecCGI Includes
AllowOverride ほげほげ
Order allow,deny
Allow from all
</Directory>

AddHandler cgi-script .cgi .pl
0332nobodyさん05/01/22 13:34:34ID:???
あるいはユーザディレクトリなら別の部分で設定しなきゃならんよ。
0333nobodyさん05/01/25 07:56:51ID:hWOf15Pd
>>304さんに便乗して質問です。
ログイン情報を記録する方法はわかったんですが、
クライアントが適切なログオフ処理をしなかったらセッション管理用のファイルは残りますよね?
例えば、クライアントがブラウザを閉じたらサーバ側で勝手にログオフ処理、なんてことは出来ないでしょうか?
0334nobodyさん05/01/25 08:11:21ID:???
絶対無理っしょ。
時間制限でタイムアウトするくらい。
0335nobodyさん05/01/25 09:11:15ID:???
普通は>>334の方法でやるね。
033633305/01/25 10:01:05ID:???
わかりました。一時間リクエストがなかったらログオフするようにしたいと思います。
ありがとうございました。
0337nobodyさん05/01/25 16:55:53ID:???
クッキー使えばええやん
0338nobodyさん05/01/26 09:08:53ID:???
>>337
どうやって?
クッキーつかってもクライアントがブラウザ閉じたかなんてサーバー側では
判らんと思うが?
0339nobodyさん05/01/26 15:10:15ID:???
有効期限を過去に設定すればブラウザを終了させた時点でクッキーが消える。
0340nobodyさん05/01/26 15:17:37ID:???
>>339
だから?
■ このスレッドは過去ログ倉庫に格納されています