68user's page 掲示板

Prev< No. 531〜541> Next  [最新発言に戻る] [過去ログ一覧]
No. 531 # やまい [E-mail] 1999/11/10 (水) 18:33
名前を「やまい」元(山井 孝雄)に変えました。
またまた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
です。

チェックポイント等がありましたら教えてください。





No. 532 # 匿名200x 1999/11/11 (木) 07:36
始めまして。
質問があります。
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)
なんか情報が少なすぎますけど
「自分の環境ではこうですよ。」
でもかまいません。
よろしくお願いします。

No. 533 # goe 1999/11/11 (木) 11:47
サーバ上に、Windowsで圧縮したlzhファイルをおいて、サーバで解凍したいのですが、
xxx% lha x filename(圧縮ファイル名)
と、コマンドを入力しても実行されません。
lhaのツールがインストールされているか調べる方法等がわかりません。教えていただけますでしょうか?

No. 534 # イプサム 1999/11/11 (木) 13:23
はじめまして。
c言語関数で調べていることがあります。
子プロセスを生成するspawn関数というものがあります。
この関数が、POSIX準拠の関数か否かをご存知の方
いらっしゃいますか?
よろしくお願いいたします。

No. 535 # イプサム 1999/11/11 (木) 13:24
はじめまして。
c言語関数で調べていることがあります。
子プロセスを生成するspawn関数というものがあります。
この関数が、POSIX準拠の関数か否かをご存知の方
いらっしゃいますか?
よろしくお願いいたします。

No. 536 # イプサム 1999/11/11 (木) 13:24
はじめまして。
c言語関数で調べていることがあります。
子プロセスを生成するspawn関数というものがあります。
この関数が、POSIX準拠の関数か否かをご存知の方
いらっしゃいますか?
よろしくお願いいたします。

No. 537 # 68user 1999/11/11 (木) 19:20
> 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 準拠ではないと思うんですが…確信はありません。

No. 538 # PUYO [URL] 1999/11/12 (金) 00:49
初めまして。
ネットワークプログラミングの基礎知識 大変興味深く読ませていただきました。これからもがんばって下さい。

陰ながら応援しています。

No. 539 # 68user 1999/11/14 (日) 04:48
どもども。間違いなどありましたら、ぜひご指摘お願いします。

No. 540 # 日向 1999/11/14 (日) 14:03
はじめまして。
「ネットワークプログラミング」読ませて頂きました。
説明、サンプルプログラム共に大変分かりやすく、
すぐに自分なりに応用することができ、大変為になりました。^^

ただ、一つだけ分からなかったことがあります。
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です。

No. 541 # 68user 1999/11/14 (日) 16:54
# 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 を相手に、いろいろ
試してみて下さい。

Prev< No. 531〜541> Next  [最新発言に戻る] [過去ログ一覧]