TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼
検索エンジンをつくりたい
天才WEBプログラマの方々に一生のお願い…
ここで一句
Ruby VS PHP 仁義なき戦い
XML+XSLTの切り札Cocoonについて語ろう!
WebProg板の名無しさんを決めよう
【PHP】下らねぇ質問はID出して書き込みやがれ 138
i-2chをEZwebでも正常に見れるように
プログラム言語遍歴
GoogleWebToolkit[GWT]について語ろう

C/C++ CGIスレッド


1 :04/02/26 〜 最終レス :2018/06/20
C言語CGI専用スレッド
http://pc2.2ch.sc/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.sc/test/read.cgi/php/988918264/

2 :
あ、スレッドナンバー入れるの忘れた。part 3かな?

3 :
>>2
C/C++統合スレだからPart1でいいよ

4 :
Cで書かれたchat
http://www.asahi-net.or.jp/~fj9y-ynym/SofChat/

5 :
スクリプトを検索

6 :
相変わらず CGIどまりですか?
apache module はやらないんですね…

7 :
次は
C/C++ Webアプリ全般スレッド
かな

8 :
>7
いつになることやら

9 :
>>8
荒れればあっという間

10 :
#include <cgi>

11 :
#include <2c.h>

12 :
C/C++のネイティブ感がたまらん。

13 :
>>6
そこまで行くとこの板の範疇じゃ無いだろ。

14 :
C++っていいよね。

15 :
前スレからC++がいいと言う人が何人かいますが
そういう人はどんなコンパイラを使っているのでしょうか?

16 :
ふつうにgccじゃないの?

17 :
書くときは VC++ 2003。

18 :
CGI書くのにわざわざVC++使いますか?

19 :
MinGWのGCCは、std::wstring周りがうまくいかない希ガス

20 :
>>13
apache modle で blog とか 掲示板とか をつくったりするなら
web prog じゃないかなって思ったんだけどね

21 :
cのCGI動かす時、apacheの設定どうしてますか?
perlのスクリプトと混在してると
perlに送られてエラー500返されちゃうので困ってます。

22 :
( ゚д゚)ポカーン

23 :
>>21
(゚Д゚)ハァ?

24 :
尋ね方がおかしかったでしょうか。
それとも根本的な勘違いでしょうか。
後者なら出直して参ります。

25 :
スレ汚し申し訳ありません。
”とんでもない勘違い”をしていました。
無事動作致しました。

26 :
CGIに不正入力はつき物だが
その場合戻り値でmainまで報告するか、それともexitを使ってその場で終了か
どっちがいいかの。

27 :
C++なら例外投げるヨロシ

28 :
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 呼び出しなんだが、
バッテンしか表示されない・・・。
正直、行き詰まってます。どなたかお助けを・・・。

29 :
>>28
img じゃなくて ダイレクトにそのCGIを呼んだらどうなる?

30 :
ごめんなさい呼び出す HTMLが間違ってました吊ってきます・・・
あ、ちなみに上記のよーなソースで、ちゃんと出来ましたですよ。これで Cでも画像出すのはオッケー。

31 :
>>29
えとですね、MIMEタイプで imageにしちゃってるんで、imgタグでないと無理です、たぶん。
吐き出してる内容はバイナリなんで、MIMEタイプを textにするってワケにも行きませんし。

32 :
MIMEタイプで imageにしちゃってるんで、imgタグでないと無理

33 :
ブラウザのアドレス欄にそのCGIのURL入力でも表示できるだろ。

34 :
>>31
試してみた?
>>32
したっかぶりっこ?
MIMEがついてるんだからこそブラウザ側で判断してくれてちゃんと画像として表示されるよん

35 :
したっかぶりっこ?

36 :
つーか、ブラウザで.gifへのリンクが開けないとでも思っているのか、と。
http://pc2.2ch.sc/ba.gif
>34
>32は晒し上げしているのではないかと。

37 :
>>36
ああ 本当だ すまそ >>33

38 :
>>29
あ、ダイレクトに、ってのは、ブラウザからって意味ですか・・・。
すみません、思い切り勘違いしてました。
(imgタグでない、他の方法で HTMLに記述しろ、という意味かと思ってました・・・ formとか)
試してませんが、たぶん出来ると思います。>>33>>34>>36さんの言ってる通りではないかと。
お騒がせしたです・・・。

39 :
Web製作版から出直しな

40 :
書くとこ間違えた_| ̄|○

41 :
WindowsでLinux用バイナリを吐くことができる
C++コンパイラってありますか?

42 :
>>41
答えにはならないけど、LiveCD使うといいのでは?
漏れはLinuxユーザだけど、FreeBSDのサーバで動かすために
FreeBSDのLiveCDを使ったらうまくいった

43 :
>>42
FreeSBIEとかいうやつ?

44 :
>>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のバージョンに気をつけて選ぶといいかもしれない

45 :
>>42-44
試してみます。ありがとうございました。

46 :
Lindowsじゃ無理?

47 :
>>46
個々のdistroの詳細は板違いなので
Linux板のdistro比較のスレなどを見たほうがいいかも
とりあえずこのへんをチェック
http://www.distrowatch.com/
http://www.distrowatch.com/table.php?distribution=lindows

48 :
CでCGI書くとき、filelockはどうやってます?

49 :
fcntl

50 :
http://pc.2ch.sc/test/read.cgi/linux/1077124382/221
あのキモヲタがゴリゴリCでCGIを書く時のライブラリを作っているらしい。

51 :
guest guest/98

52 :
>48
mkdir

53 :
flock()

54 :
fcntl(2)
flock(2)
lockf(3)

55 :
resize.plの C版みたいなの知りませんか?
ここ検索すれとか、何か情報キボン。
いちおうググってみたいけど、ロクなのが見つからない・・・ OTL

56 :
みたいけど

みたけど

57 :
ロクなのが見つからない

58 :
いかりや長介さん、亡くなっちゃいましたね。
ご冥福をお祈り申し上げますです。

59 :
それはいいが
なぜこのスレに書き込んだのかが、大きな問題だ。

60 :
>   【訃報】いかりや長介さん逝去
> すばらしい笑いと、円熟の演技を与えてくれたいかりや長介さ
> んが亡くなりました。
> ご冥福をお祈りします。
>
> なお、現在news系のサーバはアクセス過剰で繋がりにくくなっ
> ています。
> いかりやさんを偲ぶのには以下の板をご利用ください
> http://live8.2ch.sc/livesaturn/
> http://live10.2ch.sc/livevenus/

61 :
http://acpp.sourceforge.jp/
こんなの見つけた

62 :
>>61
説明ド下手糞な気がするんだが

63 :
>>62
俺もそう思った

64 :
age

65 :
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はほとんど初期設定です。

66 :
( ゚д゚)ポカーン

67 :
自力解決しますた…
お騒がせスマソ…

68 :
なんて過疎

69 :
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になります。
これは誤植と解してよいのでしょうか?

70 :
>>69
スレ違いな気もするけど…。
307コードがHTTP/1.1以降だからでは。

71 :
ああ、このドラフトはHTTP/1.0策定時点のままということか。
了解しました。サンクス。
http://www.itmedia.co.jp/dict/internet/www/server/03011.html
つーか、ドラフトのまんまでなぜ決定しないんでしょうかね。

72 :
M$が不要と言うから

73 :
1月1日はドラフト記念日

74 :
このスレを活気付かせるにはどうしたらいいものか

75 :
>74 が C/C++ による CGI 用のフレームワークを作成してくださるそうです。

76 :
aprを積極的に利用してみるスレにしたら

77 :
巨大なクエリ来た時にどうするのが王道でしょうか

78 :
無視する

79 :
>>61情報thx。
http://acpp.sourceforge.jp/
どうもプリプロセッサっぽい感じなんだが、こういう言語仕様に踏み込むもんより、
便利関数ライブラリの方が喜ばれると思うんだがなぁ。
とは言うものの、今困ってるのはサムネ画像生成だけなんで、他はいらんけど・・・。

80 :
>>77
>>78が正解でしょ。
より詳しく書くなら、まず「大量とは、どれだけなのか」を規定し、規定以上のは無視。って事で。

81 :
>>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;

82 :
>81
あるんだそういうの
サンクス

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

*dst = AtoH(*++src) << 4;
*dst = AtoH(*++src);
dst++;
にしたらうまくいったんすよ
なんかやっぱMSだなと思た

83 :
>>82
dstの位置変わってないから
*dst = AtoH(*++src) << 4;
の意味がなくなってる気もするんだが。
*dst = AtoH(*++src) << 4;
*++dst = AtoH(*++src);
dst++;
とでもしないと、dstに下位4ビットだけを突っ込んでる気がしてならないんだが。

84 :
*dst += AtoH(*++src);
だた

85 :
>>84
あ、漏れの書いたのが間違ってた・・
こっちのほうがまずいw
納得

86 :
>>77
エラートラップ。
>>82
> *dst++ = ( AtoH( *++src ) << 4 ) + AtoH( *++src );
二箇所の*++srcのどちらが先に処理されるかは未定義。

87 :
>>65>>82
>>86も言ってるが、今はコンパイラが働き者だから、1行で済ます必要は無いと思うぜ・・・。
恥を忍んで言うが、漏れが *dst++ = ( AtoH( *++src ) << 4 ) + AtoH( *++src );  こんなの書こうとしたら、
数行になってしまう。でも間違いにくいから良いんだと思ってる。勝手に。
副作用とかいちいち憶えてらんないし・・・マクロ書く時に苦しむのもやだし。

88 :
>>87
いいこといった。

89 :
>65
>なんかやっぱMSだなと思た
自分のバグを他人のせいにするな。

90 :
ごめn

91 :
なんだかどうも、プログラムの引数に「=」の文字を入れると動作がおかしいのです。
というのは、
たとえば Perl の CGI で
 test.cgi?a=5
とすれば、$ENV{'QUERY_STRING'} の中身は "a=5" になるのに、
C で作った CGI (printfするだけのモノ) だと
 test.cgi?a=5
としても、main(int argc,char *argv[]) の argc が 1 で引数が受け取れてないのです。
test.cgi?a5
とすれば、argc は 2 になって、argv[1] の中身が "a5" になるのですが。
そういうわけで引数に「=」を使えない理由と対処をキボン願います。

92 :
ちなみに、自宅サーバで
Apache HTTP Server 2.0.49
を使ってます。Apacheの設定に問題があるのかな…

93 :
釣り…か?
Perlの$ENV{QUERY_STRING}に相当するものはstdlib.getenv("QUERY_STRING")なわけだが。

94 :
別にC言後とは関係ないけど引数で処理したかったら
hoge.cgi?-hoge+true+-fuga+false
などとすれば
./hoge.cgi -hoge true -fuga false
こうなる
あとはgetopt(3)でも使えばオプションの処理ができるかな
まあ一般的ではないな

95 :
>>91
Cで作る CGI プログラムは、普通のコンソールアプリと基本的には同じだが、
main関数でもらえる「引数」と、CGI で渡される「引数」は、全くの別物だ。
main関数の「引数」は、コマンドラインで与えられるものだが、CGI の方は
サーバから環境変数を経由して与えられる。なので>>93が言ってる事を試してみそ。
>>93
釣りにしてはあまりにあまりな・・・・なので、さすがに釣りではないと思うよ。

96 :
>>93-95
なる。基本的なところを忘れてました。環境変数でしたね。
getenvでできましたです。ありがとうございました。

97 :
>>96
(・∀・) オメデトウ!コレカラモガンガッテイコウ!

98 :
POSTの場合は?
ってゆうかそのあたりも含めて楽になるperlのCGIモジュールみたいなのとかあるんでしょうか?

99 :
POSTはstdinから。
aprとか使えば少しは楽になるかも
http://apr.apache.org/

100 :
GETも POSTも、環境変数渡しという点ではほとんど同じ。POSTの方がちょっぴり手間が多いだけ。
POSTの場合は、環境変数 CONTENT_LENGTHに、POSTされた文字列長が入っているので、
そのぶんだけ stdinから読み込む。簡単に書くとこんな感じ。
int i;
char * env_p;
env_p = getenv( "CONTENT_LENGTH" );
if( NULL == env_p ) {
 /* 何もないです */
}
else {
 for( i = 0 ; i < atoi( env_p ) ; i ++ ) {
  /* ここで getchar とかする */
 }
}
こういう定型処理をラクにするライブラリとかは、いろいろ出回ってるから探すが吉。


100〜のスレッドの続きを読む
PostWikiスレ 当ての無い旅路へ
まあ。ほとんどないとおもうが。。
【EC-CUBE】Q&A・・・
金出すから改造してよvol.3
美しいコードのCGIを愛でるスレ
せっかくだからPHPで掲示板作ってみませんか?
【PHP】フレームワーク Akelos
PHPで2chを真似てこんなモン作ってみますた。
お前らのPerlとかはじめた理由教えてください
超高機能CMS TYPO3
--------------------
どこよりも早いガンプラ最新情報パート135
【ミリシタ】アイドルマスター ミリオンライブ! シアターデイズ Part1549
【逃亡犯】森友問題追求の菅野完が米国犯罪者データベースに記載が判明 / 女性の鼻が変形するほど殴りまくる
トムラウシ山遭難事故は結局どうすりゃ良かったの? Part.4
吉川将司 vs 坂井輝久 マジキチ対決
急募 マイクラに自信ニキ
━━▲アトランタ・ブレーブスPART27▲━━
【十勝】ばんえい競馬32【帯広】
香山リカ 小出裕章氏が反原発のヒーローとなった理由
刀の似合う有名人
おれですら金融資産1400万超えたんだからやっぱり株式投資はやった方が良いと思うよ
バレーボールに関する質問
その他の人に会ってみた★筋肉美女の祭典「ベストボディ・ジャパン」に潜入!
関西おもしろおっさんタチウオ情報20[無断転載禁止]&#169;2ch.net
【オッパイ】ラクエル・ウェルチ【姐さん】
【NGT48】太野彩香応援スレ★4【アヤカニ】
IBJの活動について話しましょう。175人目
【無職パヨク】毎日極東板書き込み数1位、完全に頭のイカれてる無職パヨク観察スレ
ねこさんとのんびりするスレ 何でも聞いてね218匹目
【投影】てりぃアンチスレ 2垢目【信者なんていない】
TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼