トップページ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/
0002nobodyさん04/02/26 09:00ID:???
あ、スレッドナンバー入れるの忘れた。part 3かな?
0003パックで前歯折りage!04/02/26 09:33ID:???
>>2
C/C++統合スレだからPart1でいいよ
0004nobodyさん04/02/26 09:35ID:???
Cで書かれたchat
http://www.asahi-net.or.jp/~fj9y-ynym/SofChat/
0005nobodyさん04/02/26 10:01ID:???
スクリプトを検索
0006nobodyさん04/02/26 13:43ID:???
相変わらず CGIどまりですか?

apache module はやらないんですね…
0007nobodyさん04/02/26 20:33ID:???
次は
C/C++ Webアプリ全般スレッド
かな
0008nobodyさん04/02/26 20:43ID:???
>7
いつになることやら
0009nobodyさん04/02/27 01:38ID:qZWWODH+
>>8
荒れればあっという間
0010nobodyさん04/02/27 02:32ID:???
#include <cgi>
0011nobodyさん04/02/27 03:00ID:???
#include <2c.h>
0012nobodyさん04/02/27 10:27ID:???
C/C++のネイティブ感がたまらん。
0013nobodyさん04/02/27 16:32ID:???
>>6
そこまで行くとこの板の範疇じゃ無いだろ。
0014nobodyさん04/02/27 23:40ID:???
C++っていいよね。
0015nobodyさん04/02/27 23:58ID:???
前スレからC++がいいと言う人が何人かいますが
そういう人はどんなコンパイラを使っているのでしょうか?
0016nobodyさん04/02/28 01:47ID:???
ふつうにgccじゃないの?
0017nobodyさん04/02/28 19:52ID:???
書くときは VC++ 2003。
0018nobodyさん04/03/01 00:38ID:???
CGI書くのにわざわざVC++使いますか?
0019nobodyさん04/03/01 10:31ID:???
MinGWのGCCは、std::wstring周りがうまくいかない希ガス
0020nobodyさん04/03/02 18:04ID:???
>>13
apache modle で blog とか 掲示板とか をつくったりするなら
web prog じゃないかなって思ったんだけどね
0021nobodyさん04/03/02 23:32ID:???
cのCGI動かす時、apacheの設定どうしてますか?

perlのスクリプトと混在してると
perlに送られてエラー500返されちゃうので困ってます。
0022nobodyさん04/03/02 23:33ID:???
( ゚д゚)ポカーン
0023nobodyさん04/03/02 23:34ID:???
>>21
(゚Д゚)ハァ?
0024nobodyさん04/03/02 23:47ID:???
尋ね方がおかしかったでしょうか。
それとも根本的な勘違いでしょうか。

後者なら出直して参ります。
0025nobodyさん04/03/03 00:28ID:???
スレ汚し申し訳ありません。
”とんでもない勘違い”をしていました。

無事動作致しました。
0026nobodyさん04/03/09 16:32ID:???
CGIに不正入力はつき物だが

その場合戻り値でmainまで報告するか、それともexitを使ってその場で終了か
どっちがいいかの。
0027nobodyさん04/03/09 18:35ID:???
C++なら例外投げるヨロシ
0028nobodyさん04/03/10 07:03ID:???
Cで書いた CGI で画像を表示したいと思ってるんだが、どうもうまく行かない。
鯖は Windows の Apache、C で書いたテキストベースの CGI は問題無く動作してるのだが・・・。

CGI 本体はこんな↓感じ。

infile = fopen( filename, "rb" ); /* もちろんファイルネームは入れてあるよ */
if( NULL != infile ) {
  i = fread( rbuf, 1, SIZE, infile ); /* SIZE は画像ファイルのサイズだよ */
  printf( "Content-Type: image/gif\n\n" );
  setmode( _fileno( stdout ), _O_BINARY ); /* Windows だからこうする(涙) */
  fwrite( rbuf, 1, SIZE, stdout );
  setmode( _fileno( stdout ), _O_TEXT ); /* そして元に戻しておく */
  fclose( infile );
}

で、MIME タイプを書き出す printf だけをやめて、鯖 PC でこの CGI を直に実行して
リダイレクトで画像ファイル作ると、ちゃんと出来てるんだな これが。

呼び出す時は何の変哲も無く img タグによる CGI 呼び出しなんだが、
バッテンしか表示されない・・・。

正直、行き詰まってます。どなたかお助けを・・・。
0029nobodyさん04/03/10 13:08ID:???
>>28
img じゃなくて ダイレクトにそのCGIを呼んだらどうなる?
00302804/03/11 09:03ID:???
ごめんなさい呼び出す HTMLが間違ってました吊ってきます・・・

あ、ちなみに上記のよーなソースで、ちゃんと出来ましたですよ。これで Cでも画像出すのはオッケー。
00312804/03/11 09:05ID:???
>>29
えとですね、MIMEタイプで imageにしちゃってるんで、imgタグでないと無理です、たぶん。
吐き出してる内容はバイナリなんで、MIMEタイプを textにするってワケにも行きませんし。
0032nobodyさん04/03/11 09:46ID:???
MIMEタイプで imageにしちゃってるんで、imgタグでないと無理
0033nobodyさん04/03/11 10:27ID:???
ブラウザのアドレス欄にそのCGIのURL入力でも表示できるだろ。
0034nobodyさん04/03/11 14:15ID:???
>>31
試してみた?

>>32
したっかぶりっこ?

MIMEがついてるんだからこそブラウザ側で判断してくれてちゃんと画像として表示されるよん
0035nobodyさん04/03/11 14:22ID:???
したっかぶりっこ?
0036nobodyさん04/03/11 14:33ID:???
つーか、ブラウザで.gifへのリンクが開けないとでも思っているのか、と。
http://pc2.2ch.net/ba.gif

>34
>32は晒し上げしているのではないかと。
00373404/03/11 16:01ID:???
>>36
ああ 本当だ すまそ >>33
00382804/03/11 19:49ID:???
>>29
あ、ダイレクトに、ってのは、ブラウザからって意味ですか・・・。
すみません、思い切り勘違いしてました。
(imgタグでない、他の方法で HTMLに記述しろ、という意味かと思ってました・・・ formとか)

試してませんが、たぶん出来ると思います。>>33>>34>>36さんの言ってる通りではないかと。

お騒がせしたです・・・。
0039sage04/03/12 01:21ID:vGYEPhj3
Web製作版から出直しな
0040nobodyさん04/03/12 01:22ID:???
書くとこ間違えた_| ̄|○
0041nobodyさん04/03/12 02:23ID:???
WindowsでLinux用バイナリを吐くことができる
C++コンパイラってありますか?
0042nobodyさん04/03/12 08:35ID:???
>>41
答えにはならないけど、LiveCD使うといいのでは?
漏れはLinuxユーザだけど、FreeBSDのサーバで動かすために
FreeBSDのLiveCDを使ったらうまくいった
0043nobodyさん04/03/12 11:09ID:???
>>42
FreeSBIEとかいうやつ?
0044nobodyさん04/03/12 11:36ID:???
>>43
http://livecd.sourceforge.net/
http://www.freesbie.org/
http://www.netboz.net/

漏れはひとつめのLiveCDというのを使った
aaacafeで動いてる
libc(?)以外のライブラリは静的リンクにしてある

% ldd hoge.cgi
hoge.cgi:
libm.so.2 => /usr/lib/libm.so.2 (0x28091000)
libc.so.4 => /usr/lib/libc.so.4 (0x280ad000)

linuxだとgccやglibcのバージョンに気をつけて選ぶといいかもしれない
0045nobodyさん04/03/12 17:02ID:???
>>42-44
試してみます。ありがとうございました。
0046nobodyさん04/03/14 14:00ID:???
Lindowsじゃ無理?
0047nobodyさん04/03/14 14:37ID:???
>>46
個々のdistroの詳細は板違いなので
Linux板のdistro比較のスレなどを見たほうがいいかも

とりあえずこのへんをチェック
http://www.distrowatch.com/
http://www.distrowatch.com/table.php?distribution=lindows
0048nobodyさん04/03/14 22:45ID:???
CでCGI書くとき、filelockはどうやってます?
0049nobodyさん04/03/14 23:13ID:???
fcntl
0050nobodyさん04/03/15 08:03ID:???
http://pc.2ch.net/test/read.cgi/linux/1077124382/221
あのキモヲタがゴリゴリCでCGIを書く時のライブラリを作っているらしい。
0051http:// FLA1Aah099.kyt.mesh.ad.jp.2ch.net/04/03/15 09:04ID:???
guest guest/98
0052nobodyさん04/03/16 00:14ID:???
>48
mkdir
0053nobodyさん04/03/16 13:40ID:???
flock()
0054nobodyさん04/03/16 23:46ID:???
fcntl(2)
flock(2)
lockf(3)
0055nobodyさん04/03/18 02:03ID:???
resize.plの C版みたいなの知りませんか?
ここ検索すれとか、何か情報キボン。

いちおうググってみたいけど、ロクなのが見つからない・・・ OTL
0056nobody5504/03/18 02:04ID:???
みたいけど

みたけど
0057nobodyさん04/03/18 17:25ID:???
ロクなのが見つからない
0058nobodyさん04/03/21 00:25ID:NzuooVWx
いかりや長介さん、亡くなっちゃいましたね。
ご冥福をお祈り申し上げますです。
0059nobodyさん04/03/21 00:45ID:???
それはいいが
なぜこのスレに書き込んだのかが、大きな問題だ。
0060nobodyさん04/03/21 00:47ID:h03qa3k8
>   【訃報】いかりや長介さん逝去
> すばらしい笑いと、円熟の演技を与えてくれたいかりや長介さ
> んが亡くなりました。
> ご冥福をお祈りします。
>
> なお、現在news系のサーバはアクセス過剰で繋がりにくくなっ
> ています。
> いかりやさんを偲ぶのには以下の板をご利用ください
> http://live8.2ch.net/livesaturn/
> http://live10.2ch.net/livevenus/
0061nobodyさん04/04/01 03:11ID:???
http://acpp.sourceforge.jp/
こんなの見つけた
0062nobodyさん04/04/01 22:19ID:???
>>61

説明ド下手糞な気がするんだが
00636104/04/01 23:23ID:???
>>62
俺もそう思った
0064nobodyさん04/04/12 09:09ID:/q6VLnQf
age
0065nobodyさん04/04/14 20:29ID:???
char AtoH( char c ){

if( ('0' <= c) && (c <= '9') ) return c - '0';
if( ('A' <= c) && (c <= 'F') ) return c - 'A' + 10;

return 0;
}


// 特殊記号を変換する
void form::Escape( char* src )
{
if(src){
char *dst;
for(dst = src; *src; src++ ){
if( *src == '%' )
*dst++ = ( AtoH( *++src ) << 4 ) + AtoH( *++src );

else if( *src == '+' ) *dst++ = ' ';

else *dst++ = *src;
}
*dst++ = '\0';
}
}

URLエンコード文字列をデコードする関数なんですが、
これがVC2003でうまく動かないんです(VC6ではできたのに)。

原因がわかる人がいらしたら教えてください。
VC2003はほとんど初期設定です。
0066nobodyさん04/04/14 20:34ID:???
( ゚д゚)ポカーン
00676504/04/15 18:39ID:???
自力解決しますた…
お騒がせスマソ…
0068nobodyさん04/04/17 18:21ID:???
なんて過疎
0069nobodyさん04/04/21 16:53ID:???
CGI/1.2ドラフトを訳していたのですが、質問です。
http://cgi-spec.golux.com/cgi-120-00a.html

章8.2 のLocationに関する項目を読むと、絶対URIがスクリプトによって返されると、
サーバは'302 redirect' HTTP応答メッセージを発生させるだろう、とあります。

しかし、302はMoved Temporarilyで、307 がTemporary Redirectになります。
これは誤植と解してよいのでしょうか?
0070nobodyさん04/04/21 21:33ID:???
>>69
スレ違いな気もするけど…。
307コードがHTTP/1.1以降だからでは。
0071nobodyさん04/04/21 21:54ID:???
ああ、このドラフトはHTTP/1.0策定時点のままということか。
了解しました。サンクス。
http://www.itmedia.co.jp/dict/internet/www/server/03011.html

つーか、ドラフトのまんまでなぜ決定しないんでしょうかね。
0072nobodyさん04/05/01 20:42ID:???
M$が不要と言うから
0073nobodyさん04/05/02 15:38ID:???
1月1日はドラフト記念日
0074nobodyさん04/05/04 00:34ID:???
このスレを活気付かせるにはどうしたらいいものか
0075nobodyさん04/05/05 01:01ID:???
>74 が C/C++ による CGI 用のフレームワークを作成してくださるそうです。
0076nobodyさん04/05/05 03:48ID:???
aprを積極的に利用してみるスレにしたら
0077nobodyさん04/05/05 21:54ID:???
巨大なクエリ来た時にどうするのが王道でしょうか
0078nobodyさん04/05/06 02:53ID:???
無視する
0079nobodyさん04/05/06 07:13ID:???
>>61情報thx。

http://acpp.sourceforge.jp/
どうもプリプロセッサっぽい感じなんだが、こういう言語仕様に踏み込むもんより、
便利関数ライブラリの方が喜ばれると思うんだがなぁ。

とは言うものの、今困ってるのはサムネ画像生成だけなんで、他はいらんけど・・・。
0080nobodyさん04/05/06 07:24ID:???
>>77

>>78が正解でしょ。
より詳しく書くなら、まず「大量とは、どれだけなのか」を規定し、規定以上のは無視。って事で。
0081 ◆Ad8rdfdZgs 04/05/06 18:24ID:???
>>65

関係ないが
char AtoH( char c ){
if( ('0' <= c) && (c <= '9') ) return c - '0';
if( ('A' <= c) && (c <= 'F') ) return c - 'A' + 10;
return 0;
}



char AtoH( char c ){
if( ('0' <= c) && (c <= '9') ) return c - '0';
if( ('A' <= c) && (c <= 'F') ) return c - 'A' + 10;
if('a'<=c)&&(c<='f')) return c-'a'+10;
return 0;
}

EzWeb機が%ffみたいに送ってくるから、後々のためにもこの方が。

>>77
if(atoi(getenv("CONTENT_LENGTH"))>=1024000) return 0;
char *buf = new char[atoi(getenv("CONTENT_LENGTH"))+1];
//あとは好きにしる

delete [] buf;
00826504/05/06 18:38ID:???
>81
あるんだそういうの
サンクス


ちなみに
*dst++ = ( AtoH( *++src ) << 4 ) + AtoH( *++src );



*dst = AtoH(*++src) << 4;
*dst = AtoH(*++src);
dst++;

にしたらうまくいったんすよ
なんかやっぱMSだなと思た
■ このスレッドは過去ログ倉庫に格納されています