トップページphp
507コメント145KB

C言語CGI専用スレッド

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。2001/05/04(金) 04:31ID:???
C/C++ CGI 専門のスレッドです。
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
0332nobodyさん03/07/07 18:18ID:???
>>331
誰もsuEXECの話なんかしていないぞ。
0333nobodyさん03/07/07 18:30ID:???
俺はオマエと話なんかしてないぞ
0334nobodyさん03/07/07 19:35ID:???
>>331
>それはレンタルのサーバスペースでの話だろうよ?

でも酷くてもnobodyさんじゃないの。権限なんて無いに等しい。
0335nobodyさん03/07/08 06:01ID:???
web上から数値を入力して
それをC言語で作ったcgiで受け取って計算するには
具体的にどうすればいいんでしょうか?
0336nobodyさん03/07/08 06:17ID:???
>>335
普通にCでCGI組めば良し。
0337nobodyさん03/07/08 06:19ID:???
>>336
普通にcinとか使ったらいいんですか?
0338nobodyさん03/07/08 06:21ID:???
>>335
Perlなどで書くときと同じ。
REQUEST_METHODにしたがって入力データを読みパースする。
ただし、あくまでも文字列なのでatoi,strtod,sscanfなどの関数で数値に変換してやる必要がある。
Perlなんかだと"70"をそのまま70として扱うことができるけどね。
0339nobodyさん03/07/08 06:45ID:???
>>337
cinか環境変数か。

ってここC++はありなのか?
0340nobodyさん03/07/08 07:43ID:???
FILE *cin=stdin;
0341nobodyさん03/07/08 09:46ID:???
カウンタファイルが同時アクセスが原因で直壊れちゃいます。
何か良い解決策ありませんでしょうか。
0342nobodyさん03/07/08 10:43ID:C4MsgQ7t
>>341
flock()使え
http://www.linux.or.jp/JM/html/LDP_man-pages/man2/flock.2.html
0343nobodyさん03/07/08 11:03ID:???
flockってflock自体も衝突しなかった?
確かNULLだか返ってきたような来ないような・・・うろ覚えスマンコ
0344nobodyさん03/07/08 12:38ID:???
そうそう元のプロセスを殺してfork()で子プロセス作って
そっちに処理を継続させずっと半年ほど
とあるネトゲのサーバー群のUP/DOWNの情報を
収集しグラフで出力するCGI
この間常駐物はイカンって強制的に止められたけど
こういうのも常駐って言うの?
なんか違うような・・・
0345nobodyさん03/07/08 17:14ID:???
>>343
戻り値の型がintなのに、なんでNULLが返るんだ。
034634303/07/08 20:22ID:???
スマンコあれ書いてた時携帯だったので直前の342リンク先見れんかったんだわ
0347nobodyさん03/07/08 21:12ID:???
>>344
デーモンを作るときの手口とかなり類似してるので、名実ともに立派な常駐物だと思われ。
0348nobodyさん03/07/08 22:08ID:???
あなた達は何でCで?
0349nobodyさん03/07/08 22:09ID:???
>>348
エロいからです。
0350nobodyさん03/07/08 23:24ID:???
>>349
ひねったのか?
0351nobodyさん03/07/09 09:15ID:???
フレームは使わずにニュースサイト風に
何処のページでもメニューが表示されるようにしたいのですが、
メニューだけのページと各ページとを合成するCGIを作って
それで出力されるhtmlファイルにアクセスしてもらうのって意味ないすか?
合成するCGIに直接アクセスするタイプだと鯖に負担かかりそうなので
こういうの考えたんだけどダメっすかね。。
Cなら分かるんだが、PHPとか他の言語ワカンネぇし
覚えても直流行り廃れ激しいしCだけで丁度組めそうだなと思ったんだが・・
0352nobodyさん03/07/09 12:12ID:fhWRgtVA
C++じゃ駄目なの?
0353nobodyさん03/07/09 12:18ID:???
C++だと何かいいことあるんですか?
教えてください。
0354nobodyさん03/07/09 14:30ID:???
>>353
OOPが好きなの
0355nobodyさん03/07/09 17:18ID:???
http://me.bird.to/hakoniwa/script_cpp.html

見事なOOPだよ。
0356nobodyさん03/07/09 22:24ID:???
>>353
std::string
これに尽きる。
0357みきポン03/07/11 18:50ID:yaaqxGUY
きゃーC言語ってCGIも作れるんですかー?
みきポンとこの会社って丁度研修でC言語ってのやってるんですぅー
がんばろーっと
毎日暴走させてますが分からないことあったら
教えてねぇ〜 じゃーねぇ〜 ミ☆
0358nobodyさん03/07/11 20:01ID:???
>>357
もう絶対にこないでください。
0359nobodyさん03/07/11 20:03ID:???
>>358
オマエモナー
0360nobodyさん03/07/11 20:23ID:???
釣られるなよ…おい。
0361nobodyさん03/07/11 21:16ID:???
オマエモナー
0362nobodyさん03/07/13 18:32ID:???
>>297
>> Cのソースファイルをアップしておき、telnetを使って接続してから
>この時点でバカ丸出し。

素で分からないんですが。
telnetでログインしてからコマンドでファイルを取得しろという事?
telnetなんて使わずSSH(slogin)を使えという事?
0363nobodyさん03/07/13 19:51ID:???
>>362
上級者の>>297にしか分からないことです。
0364山崎 渉03/07/15 11:07ID:???

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄
0365みきポン03/07/16 11:41ID:eO5RiK8m
ファイルの存在チェックってみなさんどうしてます〜?
みきポン日記CGIを作りたいのね♪
月単位で過去ログをわけて、画面の下の方に半年分、
ログファイルが存在する月だけログファイルへリンクはりたいの!
どうやって調べたらいいのぉ〜?(´・∀・`)アハハ
_stat()?
0366nobodyさん03/07/16 11:54ID:???
>>365
上級者の>>297にしか分からないことです。
0367みきポン03/07/16 12:16ID:???
>>297
お願いしますm(..)m 297さん
0368nobodyさん03/07/16 16:47ID:???
>>365
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
int stat(const char *file_name, struct stat *buf);
0369nobodyさん03/07/16 22:46ID:???
>>3652
ファイルをfopenで開いてみる。モードは"r"で。

FILE *fp;
if((fp=fopen(file,"r"))==NULL){
perror("file");
return 1;
}
fclose(fp);
0370みきポン03/07/16 23:04ID:???
>>368
あれ?MSDNだと_stat()ですけどstat()と同じものなの?
そうそう、みなさん最終的にはLinuxやFreeBSDなどUNIX系OSのサーバーにUPしますけど
動作確認はWindowsの自分のマシン上で確認してるの?
それとも、CGIを作るにはLinuxマシンを用意した方がいいかなぁ?
なんか今さっき気が付いたのですが、Windows系のみUnix系のみの関数がありますね。。
やっぱりUNIX固有の便利な関数が多いからLinuxマシンでもないと無理なのかなぁ(;;

>>369
もしファイルが存在したら開いちゃうけど、ファイルI/O系って遅くない?
遅い順にDB接続>ファイルI/O>変数の代入で遅い方ほど回数少なくしてって習ったんだけど。。
0371nobodyさん03/07/16 23:14ID:???
オープンしただけではI/Oは行わない。
0372みきポン03/07/17 08:03ID:???
そーなんだぁ^^ありがとー
0373nobodyさん03/07/20 18:37ID:Q2qUuQyi
CでつくったCGIが動くレンタルサーバー屋って少ないの?
0374nobodyさん03/07/20 18:41ID:???
>>373
はい
0375nobodyさん03/07/21 01:16ID:ycV7HkUx
CでCGIの作り方を紹介してるみなさんのお勧めサイト教えて!
0376nobodyさん03/07/21 01:30ID:???
>>370
あんま、CでのCGIって知らないんだけど
Cで作ったCGIのソースってどうするの?鯖上でコンパイル?だよね?

VCだとUnix系のソースと互換性がない部分があるからLinuxマシン用意するか
Windowsで確認したいならソースで互換性が取れるMingwとか入れた方がいいよ

↓ここの MinGW-3.0.0-rc3.exe。
http://sourceforge.net/project/showfiles.php?group_id=2435&release_id=90000
コンパイルはコマンドラインだけど

あとファイル存在チェックで fopen は遅いね access か stat がいい。
037737603/07/21 01:34ID:???
>>371
あ、fopen は遅いとか書いちゃったけどなんか書いてあった。
処理しなければI/O行わないんだ。知らんかった。
でも、ファイルハンドル用のメモリ確保とかしてるよね
まあ、些細なことか
0378nobodyさん03/07/21 03:02ID:???
ファイルハンドルだってさ。
0379nobodyさん03/07/21 09:28ID:???
>>376
別にクライアントに同じOS入れるとかクロスコンパイルするとか。
038037603/07/21 12:42ID:???
>>378
そんな細かいこと指摘されても...

>>379
うわぁ >>310 見たときはアホか。とか思ったけど
ほんとにできるんだ。すげぇ。ありがとう。

http://www.sixnine.net/cygwin/cygwin-doc/devel/cygwin-to-linux-cross-howto.html
038137903/07/21 13:10ID:???
>>380
俺もファイルハンドルとファイルディスクリプタだったら>>380に同意だったんだが・・・。
0382nobodyさん03/07/21 21:39ID:ycV7HkUx
やや!MinGWこれなんかよさげですね!
VCからさっさと乗り換えるべ
0383nobodyさん03/07/21 21:39ID:???
すまんこ、、あげちまった
0384あぼーんNGNG
あぼーん
0385あぼーんNGNG
あぼーん
0386nobodyさん03/07/21 22:11ID:???
あんたらスゲーよ。
0387nobodyさん03/07/22 00:45ID:???
業者ウザイ
DMと同じくネットのリソースをムダに食いつぶすだけの存在で規制かけて欲しい
0388nobodyさん03/07/22 06:40ID:???
>ネットのリソースを

また訳の分からんことを言う。
まぁ、Webプログラマ風情じゃこんなもんか。
0389nobodyさん03/07/23 13:51ID:???
CでCGIやると、scanfとかfgetsとか前もって文字数定義しなきゃいけないでそ。
ユーザの入力文字数をどうやって制限するんですか。
0390nobodyさん03/07/23 16:16ID:???
>>389
質問の意図がよく分からない。
ユーザが入力する文字数を制限することはできないが、受け取る文字数の制限ならfgetsやstrncpyでできるだろ。
それとも入力された文字数を知りたいのか?それならPOST時は環境変数CONTENT_LENGTHを参照すればわかる。
0391nobodyさん03/07/23 16:46ID:???
>>390さん、早速ご返事いただきありがとうございます。
いや、Cは、ほんとの初心者なもので、受け取る文字数の制限が
fgetsやstrncpyでできることもよく分かってなかったんです。
そうか、できるんですね。夏厨、ごめんなさーい。
0392nobodyさん03/07/23 17:23ID:???
>>338
ネットリソースという言葉をこの文脈で使うのは変なの?

>>387の意図は理解できるんだけど。
0393nobodyさん03/07/23 21:28ID:???
>>392
この手の厨は都合の悪いことを訊かれると暴れるから注意な。
0394nobodyさん03/07/23 21:39ID:???
>>393
ご要望にお応えして。



























0395nobodyさん03/07/23 23:01ID:KwmZHKax
Cでファイルの行数を調べたいのですが。
(たとえば行数をしらべたいファイルtest.datだとするとどうすればいいでしょうか?)
0396あぼーんNGNG
あぼーん
0397nobodyさん03/07/23 23:40ID:HKrDQto9
CでPerlのDBIのようなDBにアクセスする為のものはあるのでしょうか?
0398nobodyさん03/07/24 00:40ID:???
>>395
ファイルを全部読み取って一文字一文字 \n がないか調べる
ソース
int linecount( char* (以下省略

>>397
各社で提供されているDBアクセスライブラリを使うことになる。
DBIみたいにMySQLもOracleもMSSQLでも共通っていうライブラリはないね
あんま、よくしらんからあるかもしれんが
0399nobodyさん03/07/24 03:35ID:???
>>392
388じゃないけれど、ものすごく違和感がある。まあ同じく言いたいことは分かるが。
わざわざ387のようなことを書くことも無駄だと言えるな。

>>395
行数をどう数えるか定義しないとな。文字が全くない場合はどうするのか、末尾が改行の場合と改行でない場合それぞれをどう数えるか。
0400nobodyさん03/07/24 06:49ID:???
1行あたりのバイト数が決まっているなら目的の行に直ぐに移動できるのですが
1行が可変長だとこういう場合もやっぱりfscanfなんかでグルグル回して
目的の行に移動しなきゃいけないんですかね?
なんかファイルサイズが大きいと読み込みながら探すって処理が
凄く時間かかりそうで、読み込まずに何行目ってシークする方法ないでしょうか。

CGIみたいな同じプログラムを同時に複数の人が使う場合
注意しなくてはいけない点など何か有りますか?
なんとなく今疑問に思ってるのがファイル名が決まっていると
同時に複数の人がファイル操作の時、衝突が起こるのではと思ってるのですが
こういうのを再現というかテストする場合どのようにするればよろしいのでしょうか。。
2台のマシンから、いっせーのっで!ってアクセスするんですか?
その程度でもやっぱり同じタイミングだと衝突って起こるのものなのですか?
040139503/07/24 15:58ID:CbPhxA3z
>>398(ほか数名)サンクス。
0402nobodyさん03/07/24 16:04ID:YlVsb0iT
http://www.39001.com/cgi-bin/cpc/gateway.cgi?id=ookazujp
http://www.39001.com/cgi-bin/cpc/welcome.cgi?id=ookazujp
http://www.bannerbridge.net/cgi-bin/click.cgi?mid=b000000002&pid=p000000244
http://www.bannerbridge.net/cgi-bin/click.cgi?mid=b000000003&pid=p000000244
http://www.bannerbridge.net/cgi-bin/click.cgi?mid=b000000017&pid=p000000244
http://www.adultshoping.com/index.cgi?id=1057809839
http://www.bannerbridge.net/cgi-bin/click.cgi?mid=b000000008&pid=p000000244

!!!!! ━━━━━━(゚∀゚)b━━━━━━ グッジョブ!!!!!
0403nobodyさん03/07/24 16:05ID:82g81umj
みんなぬいじゃった★全部みえちゃうよ☆
http://www3.free-city.net/home/espresso/princess/peach.html

☆綺麗なおしりときれいなおっぱいがたくさん!
http://www3.free-city.net/home/espresso/bigapple/queen.html
0404nobodyさん03/07/24 16:10ID:V/WD+Kmm
☆貴方の見たい娘がイッパイ(^0^)☆
http://yahooo.s2.x-beat.com/linkvp/linkvp.html
0405_03/07/24 16:22ID:???
http://homepage.mac.com/hiroyuki44/hankaku06.html
0406_03/07/24 16:23ID:???
http://homepage.mac.com/hiroyuki44/
0407nobodyさん03/07/24 16:35ID:???
MinGW+MSYS入れてみましたが、
lockf()系が動かないです。。ショボンヌ
0408nobodyさん03/07/24 22:41ID:???
>>400
結局のところ1文字ずつ改行コードか否かを判断する必要があるわけで、あきらめて下さい。
0409nobodyさん03/07/25 01:06ID:???
>>400
上の段は>>408が答えてくれたので下の段の質問を担当

いっせーの!は仕事でもよくやります。衝突起こります。
ただ、ファイル操作っていうのが「読み込みだけ」ならいくら衝突しても問題なし。
書き込みするのであれば、flockだかlockfだかの関数を使用して制御しなくてはなりません

>>407
結構動かないもの一杯あるよ
Windows API とか C++ 標準のクラスとか。バージョンうpを待つか、あきらめて下さい。
0410nobodyさん03/07/25 01:27ID:???
Windows上でUnix系の関数が全部動くのって無いんですかねぇ。。
MinGW+MSYSは、これはこれでチョロっとUnix操作の練習には良いですね。
勉強のためにもlinux入れようかなぁ。
0411nobodyさん03/07/25 01:37ID:???
>>410
cygwin の GCC ならUnix関係は全部動いたはず...。
でも cygwin って漏れ的になんか嫌なんだよなぁ
一番いいのはやはり Linux 入れるのがよろしいかと思われます
0412nobodyさん03/07/25 01:46ID:???
ありがと、んじゃ試してみますぅ〜
0413nobodyさん03/07/25 02:18ID:???
aaacafeの無料HPにC言語CGI設置した人っているんでしょうか?
0414nobodyさん03/07/25 06:47ID:???
>>413
そりゃ一人位はいるんでは?
0415nobodyさん03/07/25 20:51ID:Dg8fdiO+
aaacafeの説明に「自分でコンパイルしてアップロード」
って書いてあったけど、それでCGIはちゃんと動くんですか?
0416nobodyさん03/07/25 22:06ID:xb80qzca
>>415
あんまり詳しいことは知らんが、OSが同じ環境でコンパイルしてたら
動くんじゃないんですか?
自分のWindows環境で作ったプログラムが他人のWindows上で動かせるのと
同様に・・・。
0417nobodyさん03/07/25 22:06ID:???
>>415
特に動かない理由はないですが。
0418nobodyさん03/07/25 22:10ID:xb80qzca
教えて欲しいこと。
トクトクのOSってなんでしたっけ?
知ってたら教えてください。
0419nobodyさん03/07/25 22:25ID:???
>418
確か赤帽。
042041803/07/25 22:34ID:xb80qzca
>>419
Thanks. Led Hat Linuxですな。
0421nobodyさん03/07/25 22:45ID:???
>>420
ちょっと欲しい。 <LED HAT
042241803/07/25 23:04ID:xb80qzca
そういやトクトクでコンパイルしたCGIがXreaで使えたよ!
0423nobodyさん03/07/26 01:23ID:???
めんどくさくない?
0424nobodyさん03/07/26 01:29ID:???
Cygwinでflock(),lockf()使えなかったです。
0425nobodyさん03/07/26 01:32ID:8P2qcw+E
XREAでコンパイルすればいいだろ・・・
0426nobodyさん03/07/26 01:36ID:???
ローカルでコンパイルしたいよね。
0427nobodyさん03/07/26 02:01ID:???
>>421
LED Hatって青とか赤とか7色に光りそうだよね。しかもシルクハット。おしゃれ付け髭付き。

>>422
( ´_ゝ`)

スクリプト言語とかJavaバイナリならどこでも使えるよ!
つーかさ、正直CはCGIに適してねえだろ・・・。
まあ、おもしろいけどさぁ
0428nobodyさん03/07/26 07:32ID:???
>>427
>スクリプト言語とかJavaバイナリならどこでも使えるよ!
Perlですらflock問題とかあるけどな。

>つーかさ、正直CはCGIに適してねえだろ・・・。
CGIは掲示板を作るだけの物じゃないぞ。
042942403/07/26 12:50ID:???
fcntl()が代わりみたいなので、自分でlockf()ってコールされたら
fcntl()呼ぶように書いちゃった^^;
無ければ作ればいいだけだったんだ。。おさわがせしましたー
043041803/07/26 19:17ID:J4DAnaOu
Xreaってコンパイラ開放されていましたっけ?
それともtelnet.cgiですかね?
0431nobodyさん03/07/26 19:18ID:???
>>430
後者
■ このスレッドは過去ログ倉庫に格納されています