トップページ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
0285nobodyさん03/07/03 12:44ID:???
>>284
ネタ・・・だよね?
リンクって(ry
0286nobodyさん03/07/03 17:57ID:???
Cで掲示板CGIを組み始めたのですが
管理者画面を個人認証のパスをかけたディレクトリに入れて
そこから掲示板の修正や削除を行なっています。
この方法だと危ないですか?
みんなパスとかどうしてます?
0287初心者 ◆hjAE94JkIU 03/07/03 20:11ID:vVw2g54i
>>281
Windows環境のC++でコンパイルすると〜.exeファイルができるんですが
これをそのままアップしても動きません。
Cのソースファイルをアップしておき、telnetを使って接続してから
コンパイルするとか聞いたんですが、詳しい方法を教えてもらえませんか?
0288nobodyさん03/07/03 20:19ID:???
>>287
相手も同じWindowsで、.exeのファイルがCGIとして実行されるように設定されていれば動くと思うけど。
0289nobodyさん03/07/03 20:35ID:???
>Windows環境のC++でコンパイルすると〜.exeファイルができるんですが

嘘です。その作業で出来るのは*.objファイルです。
0290nobodyさん03/07/03 20:36ID:???
(^_^;)
いや、俺も似たようなつっこみを283でしたけど。
0291初心者 ◆hjAE94JkIU 03/07/03 20:53ID:vVw2g54i
Microsoft Visual C++6.0です。
Debugフォルダの中に〜.exeファイルができていますが
これは違うんでしょうか?
0292nobodyさん03/07/03 20:55ID:???
>>291
何が?
0293あぼーんNGNG
あぼーん
0294あぼーんNGNG
あぼーん
0295nobodyさん03/07/03 21:39ID:???
>>291
ひとつ聞くが、アップするサーバもOSはWindowsなのか?
0296nobodyさん03/07/03 22:02ID:???
>>295
Windowsと言っても腐るほどあるが。Alpha版ならi386なバイナリはそのままでは動かないわけで。
0297nobodyさん03/07/03 22:16ID:???
> Cのソースファイルをアップしておき、telnetを使って接続してから

この時点でバカ丸出し。
0298初心者 ◆hjAE94JkIU 03/07/03 22:22ID:vVw2g54i
サーバはおそらくUNIX系ではないかと思います。
なぜバカ丸出しなんでしょうか?
初心者丸出しは認めますが(・ー・)
0299あぼーんNGNG
あぼーん
0300nobodyさん03/07/03 22:41ID:???
サーバがUNIXなら、Windowsでコンパイルする意味が無い。
0301nobodyさん03/07/03 23:18ID:???
>>296
そんなこと分かっているが。
ここは重箱の隅をつつくスレなのか?
0302nobodyさん03/07/04 02:36ID:2TW51+UT
>>297
それはサーバー管理者に聞くことであって、ここで聞くことではないよ。
あと、Debugバージョンって配布して使っても良いの?
030330203/07/04 02:37ID:2TW51+UT
間違えた。>>297じゃなくて>>291ね。スマソ
0304nobodyさん03/07/04 02:40ID:???
>>287
サーバーがUNIX系なら、動くほうが奇跡!!
あと、コンパイルする方法なんてのは、サーバー管理者に聞くべし。
ここで聞いても、だれもわからない。
0305nobodyさん03/07/04 03:05ID:???
>>287
ここで聞く前に、自分なりに調べたの?
サーバーの環境とか設定とか。
サーバー管理者に使用許可ももらわないとね。
telnetの操作方法までここで聞こうとしてるんじゃないかと取れるよ。
あと、CGIの基本知識やOSの基本知識。
それなりに自分でやるべきことをやっていれば、
そんな質問は出てこないと思いますけど。
0306nobodyさん03/07/04 06:24ID:???
>>300
>サーバがUNIXなら、Windowsでコンパイルする意味が無い。
クロスコンパイルってご存じですか?
0307nobodyさん03/07/04 10:31ID:???
そんなコンパイラってあるの?
0308nobodyさん03/07/04 10:41ID:???
Windows上でUNIXのコードを吐く、もしくはサーバーマシンのコードを吐く香具師?
そんなんあるんだ。どこにあるの?教えて!!>>306
0309あぼーんNGNG
あぼーん
0310nobodyさん03/07/04 12:48ID:K0OHWjZ9
cygwin + gcc
0311nobodyさん03/07/04 19:30ID:???
パスワード関連のライブラリってないかな?
0312nobodyさん03/07/05 08:24ID:???
>>311
あるだろ。と言うか素直にcrypt使えば?らくちん。
0313nobodyさん03/07/05 09:26ID:i+qO+lkT
OSの認証機能使うのが一番簡単。
0314nobodyさん03/07/05 13:56ID:???
>>312
ありがとう!
なんだか面白そう^^
0315初心者 ◆hjAE94JkIU 03/07/06 16:16ID:nuS2Ew3T
http://www.xrea.com/?action=spec
>C、C++はあらかじめコンパイルしてアップロードしてください。
と書いてあるのですが、どの環境でコンパイルしてどのファイルを
アップロードすれば動くようになるんでしょうか?
0316nobodyさん03/07/06 16:33ID:???
>>315
ソースファイルをうp。
コンパイルするためのコマンドをsystem関数で呼ぶPerlスクリプトをうp。
PerlスクリプトをCGIとして実行。
031731603/07/06 16:35ID:???
ちなみにgccのパスは/usr/bin/gcc
0318nobodyさん03/07/06 17:14ID:???
OoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoO
Buttobi.net's telnet.

You can use following commands.

ls, more, vi, cat, cd, cp, mv, rm, pwd
mkdir, rmdir, chmod, exit

OoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoOoO

こんなメッセージが出たんですが、これはtelnetは許可しているけど
ccやgccでのコンパイルは許可してない(=CでのCGIは不可)
ってことなんでしょうか?
0319あぼーんNGNG
あぼーん
0320nobodyさん03/07/06 18:45ID:???
>ccやgccでのコンパイルは許可してない(=CでのCGIは不可)

いや、クロスコンパイルとか同じOSでセルフコンパイルとか。
=に直結するわけではない。
0321nobodyさん03/07/06 18:57ID:???
それよりtelnet.cgiを試した方が早いと思う。
032232103/07/06 18:58ID:???
というか、サーバ上でコンパイルできなければCが使えるとは言えない。
0323nobodyさん03/07/06 19:02ID:???
>>321
>それよりtelnet.cgiを試した方が早いと思う。
cc or gccの使用権が無いことには変わらんが。

>>323
アホですか?
032432203/07/06 19:09ID:???
>>323
俺へのレスか・・・

なにがアホなの?
Cで作ったものを動作させることができないとは言っていないけど。
0325nobodyさん03/07/06 19:45ID:???
ぶっとびねっとはプログラムの一行目が#!/usr/bin/perlでないとCGIとして実行できないようになっているから、
ローカルでコンパイルしても無駄だよ。
0326nobodyさん03/07/07 00:54ID:???
323はログインシェルとPerlから呼ぶシェルが常に同じだと思っているのかな・・・
0327nobodyさん03/07/07 00:55ID:???
ぶっとびねっと止めます

login: mullah
Password:
Last login: Fri Dec 28 13:09:43 from ocn.ne.jp
+-----------------------------------------+
| * * * * * YOU CAN USE COMMAND * * * * * |
+-----------------------------------------+
| cd, ls, rm, cp, mv, pwd, mkdir, rmdir |
| chmod, more, cat, vi, passwd, tar, gcc |
| gzip, gunzip, exit |
+-----------------------------------------+
tok2$

トクトクならgcc使えるんですよね?
0328nobodyさん03/07/07 01:15ID:???
サーバーのディレクトリにかける個人認証って危ないんですか?
いろいろ個人的に重要なファイルを置いて、携帯から使ってたりしてたんですが。。
0329nobodyさん03/07/07 06:26ID:???
>>326
ええ、今時root権限で動いてるCGIなんて居ませんし。
ファイルのアクセス、非アクセスを制御してるのはシェルではなくOS。当然っしょ。
0330nobodyさん03/07/07 09:32ID:???
>>329
本気ならxreaなどに同様のことを言ってあげてください。
0331nobodyさん03/07/07 17:38ID:???
>329
それはレンタルのサーバスペースでの話だろうよ?
自宅サーバなんかだといちいちSuExecなんかしてない。
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
あぼーん
■ このスレッドは過去ログ倉庫に格納されています