C言語CGI専用スレッド
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。
2001/05/04(金) 04:31ID:???PERL-CGI の情報はどこでも手に入りますけど
C-CGI の情報は少ないです。
C言語のCGIに関することはここに書きましょう。
スクリプトを検索できるサイトです。
http://script.lovely.to/search/home_script_c.html
http://cgi.resourceindex.com/Programs_and_Scripts/C_and_C++/
http://www.cgifiles.com/scripts/cc++/index.shtml
前スレ
http://tako.2ch.net/test/read.cgi?bbs=perl&key=971762830
0002続・元スレ
2001/05/04(金) 05:01ID:Sv87XwuUhttp://www.mietsu.tsu.mie.jp/freak/index.shtml
CGIというよりPerlみたいなもの?
139 名前:名無しさん 投稿日:2001/04/26(木) 16:48
>>138
TOPページが異様に重いんでやめちゃった。
何のサイトなの?
140 名前:名無しさん 投稿日:2001/04/26(木) 17:36
CGIというよりPerlみたいなもの?<意味不明
141 名前:名無しさん 投稿日:2001/04/28(土) 10:34
>>138
これとC言語と何の関係が?重いので自分も途中でやめたが・・・
---------------------------------------------------------
http://www.mietsu.tsu.mie.jp/freak/freakgarden.shtml
にC++のCGIあるよ。
0003名無しさん@お腹いっぱい。
2001/05/07(月) 01:25ID:Vdb34f9c実際にCGIで使ってる人っているのかな?
0004名無しさん@お腹いっぱい。
2001/05/07(月) 04:01ID:lCHmlcCsSTL(というかSTLを含むC++標準ライブラリ)は、むっちゃ便利だよ。
ただし正規表現の処理はちょっと面倒みたい。
flexなんかが使える人なら、もっと楽にできると思うのだが、
おれはflexのfの字も知らないので、元のPerlスクリプトから
正規表現をできるだけ減らして、あとは単なる文字列置換で
切り抜けました。
0005名無しさん@お腹いっぱい。
2001/05/10(木) 17:29ID:???作るものによるのでしょうけど。
C++は開発環境が圧倒的に整っているのがいいですね。
統合環境でソースレベルデバッグ、ローカル変数を覗くのも簡単だし。
簡単なCGIなら、手軽にPerlで十分ですけど。
0006名無しさん@お腹いっぱい。
2001/05/10(木) 21:43ID:8zuGcixU統合環境について同意。
おれもVC++6でデバッグしてます。
でもサーバのgccが古くてSTLがダメダメだったりしないですか?
最新版のgccとlibstdc++をいれればいいとは思うんだけど
面倒でやってない。
0007名無しさん@お腹いっぱい。
2001/05/11(金) 11:36ID:0Xa628kc>でもサーバのgccが古くてSTLがダメダメだったりしないですか?
わー、同じやり方の人がいて嬉しい。
サーバのgccは、2.95以降が無ければ自分でいれます。
2.70だと使い物にならないよね。
0008名無しさん@お腹いっぱい。
2001/05/12(土) 11:25ID:4BHhF8Kc00096
2001/05/12(土) 14:46ID:9XwDBRCcやっぱ古いSTLのままじゃだめっすよね。
素直に今からgcc2.95入れます。
gccのサイトを見ると、C++標準ライブラリの最新版がgcc本体と
別にあるみたいなんですが、=> http://gcc.gnu.org/libstdc++/
これも入れたほうがいいんでしょうか?
>>8
ISPがLinuxとかなら、ローカルに同じ環境を作ってコンパイルして
実行ファイルだけ上げるとか・・・。今度試してみます。
0010名無しさん@お腹いっぱい。
2001/05/13(日) 04:10ID:ZfAWLiIwfprintf( log, "REMOTE_HOST....%s <br>", getenvs( "REMOTE_HOST" ) );
fprintf( log, "REMOTE_ADDR....%s <br>", getenvs( "REMOTE_ADDR" ) );
fprintf( log, "REMOTE_PORT....%s <br>", getenvs( "REMOTE_PORT" ) );
0011名無しさん@お腹いっぱい。
2001/05/13(日) 04:15ID:ZfAWLiIwfprintf( log, "REMOTE_ADDR....%s <br>", getenvs( "REMOTE_ADDR" ) );
fprintf( log, "REMOTE_PORT....%s <br>", getenvs( "REMOTE_PORT" ) );
このようなソースでアクセス解析を行ったのですが、REMOTE_HOSTだけが
取得できません、どうやら特別な操作が必要なようですが自分にはさっぱりです。
良ければ誰かどのようにしてREMOTE_HOSTを取得するのかソースで教えてくれませんか?
001211
2001/05/13(日) 04:19ID:ZfAWLiIw此処のページがとても有意義です。
001311
2001/05/13(日) 04:21ID:ZfAWLiIw{
char *ev = getenv( str );
if( ev == NULL ) { ev = "none"; }
return ev;
}
さっきから多重投稿ですいません。
11のソースで使われている関数です。
0014名無しさん@お腹いっぱい。
2001/05/13(日) 05:06ID:???マルチポスト野郎は死ね。
って事でこういう馬鹿には答えない方針でいきませう。>おおる
0015名無しさん@お腹いっぱい。
2001/05/13(日) 05:48ID:???確かにマルチポストだ。レンサバ板の旧スレッドにも書いてる。
>>11
これに答えると今後しめしがつかないから。悪いね。
まあ簡単にできるんで調べてみれ。
0016名無しさん@お腹いっぱい。
2001/05/13(日) 16:29ID:lOGH6AnI>実行ファイルだけ上げるとか・・・。今度試してみます。
基本的にこれだと思うけど、perlのCGIは許可しても、バイナリの実行は
許可しないISPもあると聞いたので注意。
Apacheとかそういう設定できたっけ?
バイナリでも拡張子を .pl にしたら実行できちゃったりして。
0017名無しさん@お腹いっぱい。
2001/05/13(日) 16:31ID:lOGH6AnI外部のperlを呼び出してるならともかく、mod_perlみたいに組み込まれた
物だったら強制的にperlスクリプトとして処理されるか。
001811
2001/05/13(日) 16:36ID:bVNqra6Estruct hostent *hptr;
hptr = gethostbyaddr( (char*)getenv( "REMOTE_ADDR" ), 4, AF_INET );
printf( "Content-type: text/plain\n\n" );
printf( "%s<br>", hptr->h_name );
何とか自分で調べて gethostbyaddr関数を使えばよいと
いうところまでは解りました。
ただ上のソースでコンパイルエラーはでないのですが
実行エラーがでてしまいます。
どうやら gethostbyaddr関数の使い方が悪いようなのですが。
自分には一番目の引数以外、gethostbyaddr関数の意味が分かりません。
もう二度とマルチはいたしませんので
どうか gethostbyaddr関数の引数、戻り値の意味と使い方を教えて下さい。
ついでにヘッダーファイル名も教えてもらえませんか。
解らないので、すべてのヘッダーを羅列しているのです。
0019名無しさん@お腹いっぱい。
2001/05/13(日) 21:53ID:???その素直さと、gethostbyaddrを自力で見つけてきた努力を
評価して答えさせてもらいます。いいですね>ここの住人
gethostbyaddrの第1引数は、IPアドレスを4バイトにパックしたもの。
たとえば"127.0.0.1"というIPアドレスなら
char addr[4]={0x7F,0x00,0x00,0x01};
↑このような4バイトのchar配列にして渡せばよい。
"127.0.0.1"のような文字列と、4バイト形式のIPアドレスを
相互に変換するinet_aton、inet_ntoaという関数もある。
ただし歴史的な事情で、これらの関数では、4バイト形式のIPアドレスを
in_addrという構造体で表すので注意。(たいていここで混乱する)
"127.0.0.1"などの文字列形式を4バイトにパックするために、
gethostbynameやgethostbyaddrの戻り値を利用してもよい。
たとえば、こんな感じ。
struct hostent *hptr;
hptr = gethostbyname( (char*)getenv( "REMOTE_ADDR" ) );
hptr = gethostbyaddr( hptr->h_addr, hptr->h_length, hptr->h_addrtype );
printf("%s", hptr->h_name);
これは最初のgethostbynameでhptrのh_addr、h_length, h_addrtypeを
取得し、それを使って今度はgethostbyaddrを呼ぶことで、h_nameを
取得しているわけ。
手元のFreeBSDでは、必要なヘッダはsys/types.hとnetdb.hだった。
これはOSによって違うかも?
そのへんは man gethostbyaddrでわかるんじゃないかな。
002011
2001/05/14(月) 02:59ID:r0Z2G3wgなんとか、出来ました。
こんな自分にも、わざわざ教えて下さって本当に感謝します。
そしてこれからも精進していこうと思います。
0021名無しさん@お腹いっぱい。
2001/06/24(日) 18:36ID:65Gxh8rshttp://gcc.gnu.org/gcc-3.0/gcc-3.0.html
libstdc++の最新版も入ったそうなのでSTLがまともになってることを期待。
0022名無しさん@お腹いっぱい。
2001/06/25(月) 00:32ID:pEls8e6Q0023名無しさん@お腹いっぱい。
2001/06/25(月) 01:23ID:k5UlKqNo<input type=hidden name="get" value="143242341324">
<input type=submit value="abcd">
</form>
これをTELNETで見ようと思ってもサッパリ分かりませんでした
いま将棋とオセロにはまってます
このCGIの出力結果を見るにはどんな文ををサーバーに送れば見ることが出来ますか?
詳しく分かりやすく専門用語を使わずに教えてくださいおしえてください
0024名無しさん@お腹いっぱい。
2001/06/25(月) 09:52ID:???0025>>23
2001/06/25(月) 15:41ID:???0026名無しさん@お腹いっぱい。
2001/06/26(火) 21:35ID:euzbuCB20027名無しさん@お腹いっぱい。
2001/06/30(土) 18:41ID:???Windowsだと金かかるのか?
初心者向けサイトにもその辺りは何にも書いてないぞ(^^;
0028名無しさん@お腹いっぱい。
2001/06/30(土) 19:19ID:fH7f8wxQC言語でCGIを作るなら、WEBサーバと同じOS環境が必要だよ。
たとえばLinuxのGCCで作ったCGIをアップするなら、
そのCGIを置くWEBサーバもLinuxじゃないと動作しない。
WindowsのVC++とかで作ったCGIは、Windowsサーバじゃないとだめ。
0029七資産
2001/07/01(日) 01:20ID:???基本はwebサーバにftpでソースファイルを送ったあと、
telnetでログインしてコンパイルする。
Cコンパイラにどういうものを用意してくれているかは
ISPに聞いてくださいな。そこまではさすがに面倒
見きれない。
003027
2001/07/01(日) 13:05ID:???0031JAPU
2001/07/01(日) 19:23ID:???(面倒だけど。)
0032名無しさん@お腹いっぱい。
2001/07/01(日) 19:39ID:n8uZvlf2てゆーかGCCだとSTLのヘッダを読み込むのが遅くて困ってます。
VC++みたいなヘッダのプリコンパイル機能ってあります?
gccのマニュアルざっとみたけど見つからないの。。。
0033名無しさん@お腹いっぱい。
2001/07/02(月) 01:20ID:7DkK5h6g0034名無しさん@お腹いっぱい。
2001/07/02(月) 02:19ID:???ローカルでコンパイルすればいいじゃん。
まあサーバにC++関連のsharedライブラリが入ってないつー
場合もあるけど、そんなときはstaticリンクで乗り切れ。
0035名無しさん@お腹いっぱい。
2001/07/03(火) 20:23ID:???仕事なら当然だが、趣味でも最近はみんな自前サーバ立ててるな。
おれもそうだ。
0036名無しさん@お腹いっぱい。
2001/07/04(水) 23:58ID:RFlJOQ320037名無しさん@お腹いっぱい。
2001/07/05(木) 00:09ID:M8XJRojU誰か使った人いる?
0038弐ch編者
2001/07/06(金) 21:14ID:???0039JAPU
2001/07/06(金) 22:25ID:???とりあえず、あまり参考にならないと思うけど輪講用に適当にでっち上げたもの:
http://www.japu.org/tmp/http.c
httpd.c の方はあまりにも汚くなったので捨てました。
0040名無しさん@お腹いっぱい。
2001/07/10(火) 18:49ID:???何か便利なモジュールとかってないんですか?
0041名無しさん@お腹いっぱい。
2001/07/10(火) 18:56ID:???とりあえず共用鯖では絶対に動かそうと思うなよ。
0042名無しさん@お腹いっぱい。
2001/07/10(火) 19:20ID:???許されている物を動かして、鯖が止まったならば鯖缶の責任。
0043名無しさん@お腹いっぱい。
2001/07/10(火) 20:26ID:???サイアク。
やりたいなら自分の鯖でやれ。
0044名無しさん@お腹いっぱい。
2001/07/10(火) 21:53ID:???だいたいの鯖屋の規約には「運用に支障をきたす」云々が有るから、
鯖が止まるようなものは「許されている物」じゃねーけどな。
つことで結局、いきなり共用鯖では動かさないでね(ハァト
0045名無しさん@お腹いっぱい。
2001/07/10(火) 22:09ID:???>鯖が止まるようなものは「許されている物」じゃねーけどな。
そうだよね。
バグチェックして、鯖管にソース見せて許可貰えば
共用鯖で動かしてもいいんだよね。
それで落ちたら鯖管の責任。
# そこまで(ソース見せる)しなくてもいいとは思うけど。
# 自鯖で正常に動作すればいいでしょ。
# 責任は自分にあるけど。
と言うことで、>>42に同意。
まあ、
>>40が「いきなり共用鯖で動かす」とも、
>>41が「入念なテストの後に共用鯖で動かすのも駄目」とも、
>>42が「いきなり共用鯖で動かしても良い」とも、
「↑」が何番の発言を指すのか、とも、
全く何処にも書かれていないのですがね。
004640
2001/07/11(水) 01:01ID:???ちゃんと自鯖で動かします。
0047名無しさん@お腹いっぱい。
2001/07/11(水) 01:14ID:???負荷かけまくるのはダメだろ。正常に動いても。
共用鯖はローカルとは違い、他の人も使ってることを忘れずに。
ローカルでは落ちなくても、共用鯖では落ちるって事もあるから。
#負荷大きくないのに落ちたなら、鯖管の負荷計画が拙いって事になるけどね。
004845
2001/07/11(水) 15:55ID:???>負荷かけまくるのはダメだろ。正常に動いても。
うん、そうだね。
ちなみに、私は共用鯖で負荷かけまくりな物を
動かすような非常識な人間を対象に書いたつもり
じゃないです。
ここ見てる人がそんな非常識な訳がないと思う…
0049名無しさん@お腹いっぱい。
2001/07/12(木) 12:43ID:djup2iK612のページかなり必要なネタが網羅されていていいね。
参考にしよう。
0050名無しさん@お腹いっぱい。
2001/07/14(土) 16:33ID:gnTS0OVs変なURLに見えるけど内容は確か。
ttp://members.tripod.co.jp/casinoA1/
0051名無しさん@お腹いっぱい。
2001/07/15(日) 23:15ID:???参考書に書いてあった
int main(){
/*適当なくだらん処理*/
hoge();
return 0;
}
void hoge(void)
{
/*printfのなんか適当な処理*/
}
ってユーザー定義関数ではしばらくvoidを使いなさいって書いてあったんだが
コンパイルするときにhogeはintにしましょうみたいなエラーがでるんだが・・
実際にvoidを省略するとコンパイル&実行できるんだが。。。
深く考えるのはやめとくか。。。
0052名無しさん@お腹いっぱい。
2001/07/17(火) 21:51ID:ZAF8cotQ0053JAPU
2001/07/18(水) 12:06ID:???2. プロトタイプ宣言しないと int hoge(); と見なされちゃうというお約束。
3. というか、printf 使うなら #include <stdio.h> 必要では?
0054名無しさん@お腹いっぱい。
2001/07/19(木) 18:58ID:???#include <math.h>
void amount(int kingaku,int nensuu,float riritu)
{
int i;
printf("金額%d円\n%d年返済\n利率%f%\n",kingaku,nensuu,riritu);
for(i = 0;i <= nensuu;i++)
{
printf("%3d 年後の元利合計 = %.0f 円\n",i,kingaku*pow((1+(riritu/100)),(i+1)));
}
}
int main()
{
int k;
int n;
float r;
do{
printf("元金の金額は?\n");
scanf("%d",&k);
}while (k < 0);
do{
printf("年数は?\n");
scanf("%d",&n);
}while (n < 0);
do{
printf("利率は?\n");
scanf("%f",&r);
}while (r < 0);
amount(k,n,r);
return 0;
}
005554
2001/07/19(木) 18:58ID:???0056わ、
2001/07/20(金) 03:38ID:O.8zSDuM0057名無しさん@お腹いっぱい。
2001/07/21(土) 10:24ID:???0058名無しさん@お腹いっぱい。
2001/07/21(土) 12:43ID:Jr0QyeiQ0060JAPU
2001/07/21(土) 16:14ID:???手前みそであれだが、こんなのもあるぞ。
http://www.japu.org/tmp/parse_query_sample.c
# フォームのデコードってURIのアンエスケープのこと言ってるんだよね?
0061名無しさん@お腹いっぱい。
2001/07/23(月) 12:27ID:???ところで、CでCGIってマイナーなんすかね?
>>12のページ以外でまともに解説してるサイトも文献も見つかりませんが
0062JAPU
2001/07/23(月) 14:22ID:???一般的にCで書くと、効率はある程度上がるが思いっ切りコストがかかるからね。(Perl とかと比べて。)あと、C が使えればあとは「CGIの知識」だけで使えるから、特に「CでCGI」の解説は不要説もあり。
006361
2001/07/23(月) 15:12ID:???確かにCを昔からやっていらっしゃる方には必要ないかもしれませんね
おいらのようにperlから入ってきて最近Cを学んでるものにとって
はなかなか難しいです。
必要なCGIの知識が多少あるのでそれでもまだ良い方なのでしょか?
perlでは簡単に出来たことが。。。ブツブツとは思いますが
必要な関数が揃ってしまえばCの方が楽なのかもしれませんね。
0064名無しさん@お腹いっぱい。
2001/07/23(月) 16:08ID:???>>12のサイトで半角カナを全角に変換する関数がありますが
http://www-cms.phys.s.u-tokyo.ac.jp/~naoki/CIPINTRO/CCGI/kanjicod.html
ものすごく厨房なんですが、これの引数ってなにを入れればいいんですか?
0065JAPU
2001/07/23(月) 16:11ID:???とりあえずこっちにも置いたので、お急ぎならどうぞ:
http://www.aist-nara.ac.jp/~yasuyu-h/tmp/parse_query_sample.c
0066名無しさん@お腹いっぱい。
2001/07/23(月) 17:42ID:uM3WiVLU0067名無しさん@お腹いっぱい。
2001/07/24(火) 12:07ID:???ざっと見てみたが、コード変換後にそのコード用の関数を使用するみたい
なんで一通り漢字変換処理が終ってから使用すると思われ。
引数は1個目が頭1バイト、2個目が二つ目の1バイトだと思いますが
0068名無しさん@お腹いっぱい。
2001/07/24(火) 12:19ID:.J0xIpNMhttp:www.hoge.com/hoge.cgi
でランダムに画像表示させたいのですが・・・・・
サイズが5KB程度の使い物にならない小さいファイ筆はできるのですが
10KBを超えるとうまくいきません。
原因はなんでしょうか?
0069名無しさん@お腹いっぱい。
2001/07/24(火) 12:32ID:???なぜその質問をこのスレに?
Content-type: image/jpeg
でも最初に吐き出してみれ
0070名無しさん@お腹いっぱい。
2001/07/24(火) 15:29ID:???>>64さんと同じ状態で
>>67さんの言われるようにやったつもりですがダメでした。
お手数ですがサンプルなどを示していただけませんでしょうか?
0071名無しさん@お腹いっぱい。
2001/07/24(火) 15:32ID:???いと思いますが
0072名無しさん@お腹いっぱい。
2001/07/24(火) 15:44ID:4bcQgJxIということでいいのだろうか?>>70
すると半角カナの処理というものは
1.半角カナが表示できないよ どうしよう ウエンウエン
2.半角カナを全角カナに変換したいけどできないよ ワーン
3.半角カナの入力があった場合「半角だゴルァ!!」と表示させるぞ ゴルァ!!
さて、どれでしょう?
密かにどれでもないことを期待する。
007370
2001/07/24(火) 18:50ID:???それ以外にバケない方法があれば教えていただければ幸いです。
0075名無しさん@お腹いっぱい。
2001/07/25(水) 15:39ID:???少なくとも2人はいらっしゃると思われる半角カナファンのかたへ
こういうページは見られましたか?
0076名無しさん@お腹いっぱい。
2001/07/25(水) 22:14ID:sJbBeL9c私はアセンブリを全く知らないのでこのhoge.exe.stackdumpの内容を理解する事ができません。
メモリ操作が間違ってるのだとは思いますが・・・・・
どなたかこのファイルが何を教えてくれているのか教えてください。
Exception: STATUS_ACCESS_VIOLATION at eip=00401197
eax=00000000 ebx=00000004 ecx=0254FA7C edx=00000000 esi=6107D0E8 edi=00000000
ebp=0254F818 esp=0254FAD0 program=E:\APACHE\CGI-BIN\HOGE.EXE
cs=0167 ds=016F es=016F fs=4CB7 gs=0000 ss=016F
Stack trace:
Frame Function Args
0254F818 00401197 (00000000, 00000000, 00000000, 00000000)
0254FBFC 00401197 (00000001, 04580998, 04580008, FFFFFFFE)
0254FD88 61003859 (00000000, 00000000, 4D448DCE, 00000002)
0254FDB8 61003A3D (00401064, 00000000, 81952E1C, 00000000)
0254FDD8 61003A7C (00000000, 00000000, FFFFFFFF, 00000001)
0254FE08 00406063 (00401064, 0254FC8C, BFFC9490, 0254FF68)
0254FE38 0040103D (00000000, 81952BB8, 00540000, 6C696B53)
0254FF78 BFF8B6E6 (81952DD8, 00000008, 81952BB8, 00000000)
893210 [main] hoge 1744003 handle_exceptions: Exception: STATUS_ACCESS_VIOLATION
912544 [main] hoge 1744003 handle_exceptions: Error while dumping state (probably corrupted stack)
0077名無しさん@お腹いっぱい。
2001/07/26(木) 11:38ID:???ふつーはソースみるかデバッガ使うかする。
0078名無しさん@お腹いっぱい。
2001/08/06(月) 16:54ID:???を全角カナ文字に変換までしてくれる関数はありませんか?
0079名無しさん@お腹いっぱい。
2001/08/06(月) 17:13ID:???0080名無しさん@お腹いっぱい。
2001/08/06(月) 19:40ID:???とりあえずMAPファイル出してスタックダンプの各行がどの関数か調べなさい
0081名無しさん@お腹いっぱい。
01/08/31 02:18ID:wS5jDtEgで、多数のテーブルデータ(1000*5ぐらいの項目数)を扱うなら
どのような手法を使うのがもっとも良いでしょうか?
5000個もファイル作ってられないし、適度に項目を連結して保存、
取り出す都度再分解、という手法で良いんでしょうか?
0083名無しさん@お腹いっぱい。
01/08/31 12:06ID:yzeHKSD2これは、一般的に逝ってそうなのか、それとも、そのコードを書いたやつがたまたまヘタレだったのか。
0084名無しさん@お腹いっぱい。
01/08/31 12:26ID:ZHAulmbY0085名無しさん@お腹いっぱい。
01/11/03 00:20ID:Z5GZ1dPh箱庭のC++バージョンのコンパイルのことで聞きたいス。
今借りてるサーバがTELNET使用禁止なんだけど、GCCは使用可とのこと。
こういう場合は、CGIを使ってコンパイル出来るヨ・・・って聞かされたんだけ
ど・・・。
検索して「telnet.cgi」っていうのを見つけたけど、なんか箱庭をコンパイルでき
そうな感じがしない・・・。
誰かわかる人います?
0086名無しさん@お腹いっぱい。
01/11/03 00:22ID:???>そうな感じがしない・・・。
感じで決め付けるな。
008785
01/11/03 00:44ID:Z5GZ1dPhtelnet.cgiではソースファイル拡張子の設定が一種類しかできない
ようなのでムリかな・・・と。
箱庭C++版は「.c」と「.h」を使うので。
0088名無しさん@お腹いっぱい。
01/11/03 00:55ID:???或いは出来る人に頼みましょう。
ここでサポート出来る段階ではないです。
008985
01/11/03 01:01ID:Z5GZ1dPh確かにshellとCはまるでダメです。
書籍のコンパイルの説明などをいろいろ目をとおしたけど、どれも
CGI(Perl)を使ったやり方の説明がなかったので。
なんかいい書籍はないですかねぇ・・・。
ご忠告感謝です。
0090名無しさん
01/11/03 01:05ID:???良く解らんけど、その感じだと多分エラーを捕まえて無いんだろ?
どんなcgi使ってるか知らないが適当にファイルにリダイレクトでも
しなきゃ、エラーが読めないじゃん。
で、読めたとしても、まあ悲観的に言うと8割方処理系依存で一つや二つ
エラーが出ると思うが。
それを直して、またコンパイルして・・・・
コーディングしろとは言わんが、ローカルでコンパイル位出来ないと
道は遠そうだ
0091名無しさん@お腹いっぱい。
01/11/03 01:12ID:???Perlとちがって低いとこまでいじれるから,
問題起きた時大変だよ。
それが原因で鯖トんだりしたら,85氏の責任。
いろいろ請求されたりするかもしれん。
鯖名・telnet.cgi・GCC・.hとかで検索かければ,
先人がなにか書いてるかもね。
009285
01/11/03 01:43ID:Z5GZ1dPhまだコンパイル自体してないんです。
telnet.cgiについてもよくわかっていないので。
あせらずオイオイ勉強していくことにします。
お二方のご助言感謝。
0093名無しさん@お腹いっぱい。
01/11/03 01:45ID:???タダだし、暇つぶしにはなると思うよ
PERL分かるなら、コマンド投げてる所の下にでも system ("$hoge 2>>./error.txt");
とでも書いてerror.txt置いとけばメッセージは読めるよ(読みにくいけど。。)
0094名無しさん@お腹いっぱい。
01/11/03 02:04ID:???http://www.cygwin.com/
WINでUnixLIKEなシェルが使えるよ、これでしばらく遊べば
後は同じ事をサーバでやるだけだから・・・・
コケた時にSTDERRを上手くキャッチするこってす
009585
01/11/03 09:29ID:m85yJ//jでは早速試してみることにします。
それにしても質問が激しくアレだったので「厨房氏ね」とかいう
レスを覚悟してたら・・・親切なレスついて嬉しいス。
これからはCとshellの勉強に励む事にします。
みんなありがと〜。
0096名無しさん@お腹いっぱい。
01/11/08 18:55ID:???0097名無しさん@お腹いっぱい。
02/01/15 13:27ID:NbvxSmgA速いor転送量・サーバ負荷が軽減されるぜ!がんばれ!
0098名無しさん@お腹いっぱい。
02/01/15 13:45ID:???「転送量」は吐き出すモノによって変わるものだから、
C でやろうが Perlでやろうが同じです。
0099名無しさん@お腹いっぱい。
02/01/15 15:01ID:8PDDHsp4C言語でのCGIの場合、領域の確保が問題に思えます。
相手がどこまでのサイズのデータを送信してくるかわかりませんし。
送信フォームでサイズ指定をしても、悪意を持ったものに
不正なサイズの大きなデータを送られたら、領域に指定した
サイズをオーバーしてしまうように思えます。
リファラーなどで制限しても、それくらいはどうにでもなりますし。
かと言って、無闇に初期化する領域を大きくしてもメモリの無駄に感じます。
皆さんはそのような事に対してどのような対策をとっておられるのでしょう?
C言語の勉強をしているのですがどうにもそこで詰まってしまって・・・。
どうか、どなたかご教授ください。
0100日下部圭子 ◆ib749tYo
02/01/15 15:42ID:???> C言語でのCGIの場合、領域の確保が問題に思えます。
> 相手がどこまでのサイズのデータを送信してくるかわかりませんし。
malloc()やrealloc()を使って動的に確保するのが一般的でしょう。
データの最大長が数十キロや数百キロ程度なら、固定長で確保しても
問題ないと思いますが。
> 送信フォームでサイズ指定をしても、悪意を持ったものに
> 不正なサイズの大きなデータを送られたら、領域に指定した
> サイズをオーバーしてしまうように思えます。
Cに限らず、どのような言語でもデータ量の上限チェックは入れる
必要がありますよ。
# CGIだと、Webサーヴァーのほうで制限してくれるのかな?
----------------------------------
||//
(@_@) Kusakabe Keiko
----------------------------------
010199
02/01/15 16:21ID:???malloc関数はこういう時に使うのですね。
今まで色んな所でsizeof演算子と組み合わされているのを見てきたのに
いまいち良くわかっていなかったのですが、ようやく理解できました。
これから色々試しながら勉強していこうと思います。(もちろんローカルで)
勉強になりました。
本当にありがとうございます。
■ このスレッドは過去ログ倉庫に格納されています