トップページ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
0269nobodyさん03/07/01 19:12ID:???
1つのCGIに引数を使って色々なページから呼び出すのと
各ページにスクリプト自体をコピーして使うのとだと
サーバーの負担って違うの?
前者はアクセスが集中するけど1つで管理しやすい、
後者は1つのスクリプトに集中しないけど
更新のとき面倒・・・
どっちがサーバーにやさしいの?
0270nobodyさん03/07/01 20:09ID:???
>269
サーバーに優しいのはもちろん後者。
更新の時に面倒なのはサーバーには関係ないし。
ただし、保守性が下がる事でバグが発生しやすくなると一概には言えない。

サーバー負荷軽減を考えるのは、大前提として保守が行なえていなければならない。
0271nobodyさん03/07/01 20:10ID:???
>>268
fprintfとかfputsとか、その時々にあったものを。
fwriteは使わないなぁ。
0272nobodyさん03/07/01 22:01ID:???
>>270
そうなのか?結局のところ同じCPUが同じ数のプロセスを処理する羽目になるけれど。

0273nobodyさん03/07/01 22:03ID:???
>>270
それに、Windowsサーバとかなら別のバイナリファイルと認識させるとメモリにロードしたコード領域を
複数プロセスで共有できないからその分不利じゃないか?
0274nobodyさん03/07/01 23:09ID:???
>>271
いずれにしてもCの標準関数オッケーってことですね。
0275nobodyさん03/07/01 23:11ID:???
>>274
OKじゃない理由を聞きたい。
0276nobodyさん03/07/02 19:12ID:???
いや、なんとなくです・・・
他にやり方あるのかなーと思って。
0277nobodyさん03/07/02 20:31ID:???
>>276
別にシステムコールとかAPIとか呼び出しても良いけれど。
0278nobodyさん03/07/03 00:29ID:???
ただし、stdioとシステムコールをまぜて呼ぶのは激しくお勧めしない。
0279nobodyさん03/07/03 02:44ID:???
あ、API呼び出したりしてます。うまく行かないときありますね。
READ ONLY ではオープンできるけど、WRITEではオープンできない。
エラーステータスは、アクセス拒否ですね。
0280初心者 ◆hjAE94JkIU 03/07/03 06:00ID:vVw2g54i
Windowsの環境でC言語でCGIを設置するにはどうすればいいんですか?
基礎から教えてください。おながいします。
0281nobodyさん03/07/03 07:49ID:???
>>280
コンパイルする。
以上。
0282nobodyさん03/07/03 10:43ID:8QXUvEtT
>>281
完璧なレスだね。
0283nobodyさん03/07/03 10:45ID:???
>>281
リンクは?
028428103/07/03 12:40ID:???
http://www.google.co.jp/
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);
■ このスレッドは過去ログ倉庫に格納されています