トップページ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
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
後者
0432nobodyさん03/07/26 19:19ID:H0wl0HD5
開店セール500円より販売見に来てーーーー!アダルトDVDを見ようー!
▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼
開店セール1枚 500円より→→→http://www.dvd-exp.com 
最短でご注文いただいた翌日にお届け!→→→http://www.dvd-exp.com 
セルビデオ店の人気商品が24時間お買い物が出来ます。
見やすい画面・注文簡単・時間をかけてゆっくり選んでください!
          http://www.dvd-exp.com←へGO!
0433コヨーテ03/07/26 20:52ID:2kRK0hKL
http://elife.fam.cx/a008/
0434nobodyさん03/07/27 00:38ID:???
>431
嘘教えるな。

>430
XREAスレで聞いた方がいい。
コンパイラ開放は一応宣言されているが、後から撤回されたかもしれない。
とりあえずtelnet.cgi使うのはやめれ。
使うならせめてSSH使え。
0435nobodyさん03/07/27 05:09ID:???
知らないくせに「嘘教えるな。」か。
現在SSHからgccを呼べるなら方法を教えてほしいものだ(禁止事項だがな)。
043643503/07/27 05:10ID:???
呼べることは呼べるんだけどねぇ、リンクできないのよ。
043743503/07/27 05:31ID:???
ldを個別に呼べばいいのか・・・
gcc -c -o hello.o hello.c
ld -lc -e main -o hello.cgi hello.o
043843503/07/27 06:07ID:???
エントリポイントってmainじゃなくて本当の入り口のことかな・・・・ldの使い方わからん・・・
CGIからgccを呼んだ方が楽だと思うんだけどなぁ。
0439nobodyさん03/07/27 06:37ID:???
crt*.oリンクしてエントリポイントをデフォルトにしてもだめだ・・・
0440nobodyさん03/07/27 06:48ID:???
発想変えてgccがldの場所を分かるようにしたらできました。
gcc -B/usr/bin -o hello.cgi hello.c

>>430
gccを使うときに必ず-B/usr/binをつければいいみたい。
0441nobodyさん03/07/27 09:52ID:???
>>435
>現在SSHからgccを呼べるなら方法を教えてほしいものだ(禁止事項だがな)。
telnet.cgiも忌み嫌われてるけどな。
044241803/07/27 10:58ID:TT/DkuOW
文字列長をまったく無視してProg組んでたら友達に
セキュリティホールつくんなボケ!と一喝入れられました。
むしrPOSTで送られてきた文字列の長さを検査する方法を教えてください。
0443nobodyさん03/07/27 11:05ID:???
>>440
>>390
0444レス先間違えた03/07/27 11:06ID:???
>>442
>>390
0445nobodyさん03/07/27 11:09ID:ovF07x1A
腿   \_  |   _/
          彡彡彡
          ミミミミ クリトリスhttp://link.iclub.to/adalt/
         ミミミミ / ̄ ̄ ̄ ̄
         ノ σ ヽ 尿道 http://link.iclub.to/amazon/
       / / ゜ヽ ̄ ̄ ̄ ̄
大陰唇 / //\\ \ 
 ̄ ̄ ̄ ̄  ( ( 膣 ) ── 小陰唇 http://link.iclub.to/docomo/
      \ \\// /
         `   \/  '
\         *──肛門 http://www.yahoo2003.com/f-set.html
  \_____/\_____/
0446nobodyさん03/07/27 12:38ID:???
C/C++のCGIライブラリで有名なのってある?
0447nobodyさん03/07/27 17:11ID:???
>>442
なんも考えずにファイルに取りあえず保存とかどうだ?
0448nobodyさん03/07/29 18:42ID:???
link()ってどういうものなの?
0449nobodyさん03/07/29 19:30ID:???
>>448
既存のファイルに新しい名前を与える。以前の名前と同じファイルに同じようにアクセスできる。
シンボリックリンクを作りたかったらsymlinkを使う。これならリンク先が違うファイルシステム上にあってもOK。
0450nobodyさん03/07/29 22:42ID:???
うーん難しい。。。
AってファイルにBって別名を付けて
AでもBでも同一のファイルにアクセスできるようになるの?
どういう時に使うんだろ。。。
0451nobodyさん03/07/29 22:51ID:???
>>450
Winのショートカットみたいに。
でも普通はハードリンクではなくショートカットによく似ているシンボリックリンクを使うと思う。
まあハードリンクならリンクだけあって実体がないなんてことにはならないけど。
0452nobodyさん03/07/29 22:59ID:???
あらかじめ大事なファイルへのハードリンクをつくっておけば、誤って消してしまっても大丈夫・・・・かも。
0453nobodyさん03/07/30 02:13ID:???
pdumpfsというバックアップツールで、差分以外はハードリンクにしてたよ。
0454nobodyさん03/07/30 10:36ID:???
>>452
謝って消す確率が二倍になるだけかと。
0455nobodyさん03/07/30 10:51ID:???
当然そうだろうな
0456nobodyさん03/07/30 11:22ID:???
>>454
は?なんで?
aというファイルにbという名前(できれば違うディレクトリに)をつけておけば誤ってrm aとしてしまってもbが残っているからファイルの実体は消えないだろ。
0457nobodyさん03/07/30 12:36ID:???
>>456
正解
0458nobodyさん03/07/30 12:45ID:???
>>456
大正解
0459nobodyさん03/07/30 22:43ID:???
超正解
0460山崎 渉03/08/02 02:22ID:???
   ∧_∧
  (  ^^ )< ぬるぽ(^^)
0461ぼるじょあ ◆ySd1dMH5Gk 03/08/02 04:51ID:???
     ∧_∧  ∧_∧
ピュ.ー (  ・3・) (  ^^ ) <これからも僕たちを応援して下さいね(^^)。
  =〔~∪ ̄ ̄ ̄∪ ̄ ̄〕
  = ◎――――――◎                      山崎渉&ぼるじょあ
0462nobodyさん03/08/03 20:16ID:bFsfY9id
今後CのCGIが動かせれる鯖って減っていくのかな?
■ このスレッドは過去ログ倉庫に格納されています