|
名前を「やまい」元(山井 孝雄)に変えました。 またまたHELP依頼です。ご存じの方がおられましたら教えてください。 PERLにDBIとDBD(ODBC)を組み込もうとしています。 PERL5.003のときはうまくいっていたのですが 今回5.00503ではうまくいきません。 PERL(APi522e.exe)をインストールした後、 DBI(DBI-1.13.tar.gz)を展開しインストールまではうまくいきました。 DBD(DBD-ODBC-0.22.tar.gz)を展開した後、 perl makefile.pl は正常に実行できたのですが、 nmake で以下のエラーがでてストップしてしまいます。 cl.exe -c -IC:/Perl/site/lib/auto/DBI -Od -MD -DNDEBUG -GX -DWIN32 -D_CONSOLE -DNO_STRICT -DHAVE_DES_FCRYPT -DPERL_CAPI -Od -MD -DNDEBUG -GX -DVERSION=\"0.22\" -DXS_VERSION=\"0.22\" -IC:\Perl\lib\CORE dbdimp.c dbdimp.c C:/Perl/site/lib/auto/DBI\DBIXS.h(403) : warning C4005: 'DBIS' : マクロが再定義されました。 dbdimp.c(31) : error C2106: '=' : 左のオペランドが、左辺値になっていません。 NMAKE : fatal error U1077: 'cl.exe' : リターン コード '0x2' Stop. なお、使用環境は Windows 4.0 Server ServisePack3 Visual C++ Version 5.0 です。 チェックポイント等がありましたら教えてください。 |
|
始めまして。 質問があります。 C言語(CGI)でファイルロック関数を作ろうと思うのですが どうやらディレクトリがある,ないで判定すれば プロセスが割り込んでくる確率も少ないらしいので mkdir,rmdir,sleep関数を使って作ろうと思います。 でとりあえず各関数使ってみたら 「ヘッダファイルがてーぎされてへんよー!注意しなはれ〜」 みたいなエラーが出てまいりました。 私はWindows環境しかないので FTPアップロード->コンパイルという手段で作成してます。 Windows環境なら"direct.h"をインクルード すれば良いのですがどうやら違う(ヘッダファイルがない)みたいです。 サーバーの/usr/includeディレクトリとか覗けるので色々探してみましたが お手上げ状態です。。。 そこでmkdir,rmdir,sleep関数のヘッダファイルの位置を 教えてほしいのですが… # インクルードしなくても動くことは動くんですが。。。気に入らないです。 サーバーが何たらUNIXか何たらLinuxかがわかりません。 BSD系UNIX(???)(Linux???)たぶん何たらLinuxだと思うのですが。。 gccのバージョンは(gcc -vした結果) >Reading specs from /usr/lib/gcc-lib/i386-pc-linux->gnulibc1/egcs-2.91.66/specs >gcc version egcs-2.91.66 19990314 (egcs-1.1.2 release) なんか情報が少なすぎますけど 「自分の環境ではこうですよ。」 でもかまいません。 よろしくお願いします。 |
|
サーバ上に、Windowsで圧縮したlzhファイルをおいて、サーバで解凍したいのですが、 xxx% lha x filename(圧縮ファイル名) と、コマンドを入力しても実行されません。 lhaのツールがインストールされているか調べる方法等がわかりません。教えていただけますでしょうか? |
|
はじめまして。 c言語関数で調べていることがあります。 子プロセスを生成するspawn関数というものがあります。 この関数が、POSIX準拠の関数か否かをご存知の方 いらっしゃいますか? よろしくお願いいたします。 |
|
はじめまして。 c言語関数で調べていることがあります。 子プロセスを生成するspawn関数というものがあります。 この関数が、POSIX準拠の関数か否かをご存知の方 いらっしゃいますか? よろしくお願いいたします。 |
|
はじめまして。 c言語関数で調べていることがあります。 子プロセスを生成するspawn関数というものがあります。 この関数が、POSIX準拠の関数か否かをご存知の方 いらっしゃいますか? よろしくお願いいたします。 |
|
> 2000年1月1日にセットしたいのですが? BIOS で時間をセットすればいいでしょう。 > PERLにDBIとDBD(ODBC)を組み込もうとしています。 う〜ん、全然わからんです。Windows環境持ってない上に、こういう エラーって、大抵の場合 #ifdef WIN32 の書き忘れが原因だったりするんで、perl/Windows/DBI/DBD に精通していない 僕にはさっぱりわかりません。 > サーバーが何たらUNIXか何たらLinuxかがわかりません。 `i386-pc-linux' とあるので Linux なんでしょうけど、 OS名は uname -a でわかります。 # ディストリビューション名ってどうやって調べるんだろう? > 「ヘッダファイルがてーぎされてへんよー!注意しなはれ〜」みたいなエラー というのはあり得ないです。インクルードしなくても動くということは 「mkdir/rmdir/sleep という関数の宣言がされていない」という warning (implicit declaration of function `mkdir') ですかね。エラーや warning は 訳さずそのまま書いて下さい。 で、インクルードファイルがわからないときは、man で確認して下さい。 % man 2 mkdir % man 2 rmdir % man 3 sleep とすると、 NAME mkdir - make a directory file SYNOPSIS #include <sys/stat.h> int mkdir(const char *path, mode_t mode) という情報が得られます。 > xxx% lha x filename(圧縮ファイル名) > と、コマンドを入力しても実行されません。 「実行されない」とは何ですか? 「Command not found」になるんですか? % locate lha で、ファイル名に `lha' を含むファイル一覧が表示されますが、 それでも見付からないなら本当にインストールされていないんでしょう。 管理者に頼むか、自分でインストールすることになります。 > 子プロセスを生成するspawn関数というものがあります。 > この関数が、POSIX準拠の関数か否かをご存知の方 うーん、わからんです。FreeBSD/Solaris ともに spawn という関数は ないので、POSIX 準拠ではないと思うんですが…確信はありません。 |
|
初めまして。 ネットワークプログラミングの基礎知識 大変興味深く読ませていただきました。これからもがんばって下さい。 陰ながら応援しています。 |
|
どもども。間違いなどありましたら、ぜひご指摘お願いします。 |
|
はじめまして。 「ネットワークプログラミング」読ませて頂きました。 説明、サンプルプログラム共に大変分かりやすく、 すぐに自分なりに応用することができ、大変為になりました。^^ ただ、一つだけ分からなかったことがあります。 HTTPクライアントでPOSTメソッドに対応しようとしたのですが、 $message = "name=test&mail=test&url=test&message=test\r\n"; $len = length($message); print SOCKET "POST /cgi-bin/mybbs.cgi HTTP/1.1\r\n"; print SOCKET "REFERER: (略)/cgi-bin/mybbs.cgi\r\n"; print SOCKET "Content-length: $len\r\n"; print SOCKET "\r\n"; print SOCKET $message; とした所、実際にはPOSTされていないようなのです。 これは自分の掲示板(本のサンプルの真似ですが)に対してのPOSTですが、 REFERERチェックの入らない友人の掲示板でテストしてみてもPOSTされないようです。 ので、恐らくこちらのスクリプト側に誤りがあると思われるのですが…。 また、\r\nを\rや\nに変えても駄目でした。 どこが間違っているのでしょうか…?ご教授頂ければ幸いです。 ちなみにSunOS 5.6,Perl 5.004_04です。 |
|
# GET ができるのに POST だけができないのなら、外してますが… HTTP/1.1 では、Host ヘッダが必須になります。 POST /cgi-bin/mybbs.cgi HTTP/1.1\r\n Host: 相手先のサーバ名\r\n Content-length: $len\r\n \r\n $message でどうですか? これが原因なら、HTTP/1.0 にすればうまくいくはずです。 また、サーバのレスポンスは「400 Bad Request」となっているはずです。 それでもダメなら、 #!/usr/local/bin/perl $|=1; sysread(STDIN, $input,$ENV{CONTENT_LENGTH}); print "Content-type: text/plain\n\n"; print "$input\n"; という、データを受けて表示するだけの CGI を相手に、いろいろ 試してみて下さい。 |