|
rosegadenさん 回答どうもありがとうございます。 おっしゃる通り、空のファイルを作っただけで起ち上げに成功しました! あーよかった。 L1というのはKeybordについているのですか? その他色々わからないTerminologyがあるのですが、その辺は またゆっくり調べてみます。 ご指導どうもありがとうございました! |
|
はじめまして 実は今Linuxでデーモンプログラムの勉強をしてるのですけど、 よくわかりません。 デーモンプログラムってループして実行時に&でバックグラウンド でいいんでしょうか? HP探しててもサンプルソースが見つからないし‥ よろしかったら教えて下さい。お願いします。 |
|
> デーモンプログラムの勉強をしてるのですけど まずはここを読んで下さい。結構面倒です。 http://www.race.u-tokyo.ac.jp/~moro/unix-programmer/faq-j_2.html#SEC16 実行時に明示的に & でバックグラウンドにしなくても、 自力でデーモンとして常駐 (って UNIX ではあんまり 言わないか) するのが望ましい挙動です。 ところで Netscape6 が出ましたね。 http://www.netscape.com/index.html |
|
68user さんありがとうございました。 自分はデーモンについての知識がまだたりませんね。 HPを見て勉強します。 |
|
お忙しいところすいません。初めまして、はぴおと申します。 ネットワークプログラミング大変分かりやすく、勉強させて いただいております。 このサイトを参考にPerl(CGI)でPOP3クライアントをつくったのですが、 一つだけ分からないことがあります。 色々な本やサイトを見ても、FROMヘッダーにはメール送信者の名前と メールアドレスが入ると思うのですが、自作POP3クライアントで メールを受信した場合、FROMヘッダーにはメール送信者名しか入りません。 同じメールをOutlookで受信してみると、同じメールでもちゃんとFROM ヘッダーに、メールアドレスが付加されてました。 以下自分の推測なのですが、色々と理由を自分なりに考えてみました。 ・自作POP3クライアントが正しくメールを受信できていない。 ・正しくメールを受信できているが、ほかにやらなければいけないこと がある 昨日一日、色々なサイトをまわったり、本を調べたり、MLで聞いて みたりしましたが、分かりませんでした。 藁にもすがる思いでココに書き込んでます。 どうかご意見をお聞かせ下さい。 それでは宜しくお願いします。 以下参考になるか分かりませんが、私の環境です。 -OS: WIndows2000 -Perl : ActivePerl Build 620 -apache_1_3_12_win32 はぴお lovex@bd.mbn.or.jp |
|
初めて投稿させていただきます。 UNIX歴2か月の初心者で 今初めてシェルプログラミングに挑戦してます。 作成したいものは、lastcommで前日のログ履歴を出し、管理者宛にメールを 送るというものなのですが早速つまずいてしまいました。 現在の日付(MON,DAY)を取得するまではできるのですが、”前日”をどうやって表現すればいいのかわからず困っています。 DAYを-1しようとしたのですがうまくいきません。 以下のように記述しています。 どなたかご存知の方、ご教授お願いします。 LANG=C; export LANG BUF= set `date` echo $2 # "Nov"と表示されます echo $3 # "15"と表示されます expr $3 -1 > $BUF # expr: syntax errorになります |
|
68userさんいつも助けていただいて感謝です。 case Expose: while (1){ if ( ! XCheckWindowEvent(display, window, ExposureMask, &event) ){ break; } これを使ってみたところちゃんと一回だけ描画してくれました。 こんな関数もあったんですね。 勉強不足で申し訳ありません。 根本的に解決できなくても動いてくれれば とりあえずは解決したと思っておきます。 本当にありがとうございました。 またお世話になるかもしれないですが、 そのときはよろしくお願いします。 |
|
初めましてbookと申します。 UNIXのgccで作成したライブラリを、CCでコンパイルを行う時に 使用できるのか調査しています。 gcc -c share_test.cc ar cr libtestshare.so share_test.o ranlib libtestshare.so CC test_gcc.cc -L. -ltestshare 現状は、ライブラリ内の関数を呼び出す箇所で、 コンパイルエラーになってしまいます。 そもそも、このような使い方が出来るのかどうか、 ご存知の方がいらっしゃいましたらご教授ください。 よろしくお願いします。 |
|
> ”前日”をどうやって表現すればいいのかわからず困っています。 > DAYを-1しようとしたのですがうまくいきません。 > expr $3 -1 expr $3 - 1 です。- と 1 の間にスペースが必要です。 しかし、これだと毎月1日に実行すると 0日となって しまうので、根本的にまずいです。というわけで、-v オプションを使いましょう。 % date -v-1d で1日前の日付が得られます。ただし、Solaris などの date には -v オプションはないので、sh でやるなら perl などを呼び出すのがいいでしょう。 # なので、最初から perl で書くのも手です。 > 現状は、ライブラリ内の関数を呼び出す箇所で、 > コンパイルエラーになってしまいます。 どういうエラーが出るのかちゃんと書きましょう。 FreeBSD と Solaris ではこの方法でうまく動きました。 あと、これは static link 用のライブラリですので、 拡張子は .so より .a が適切でしょう (違うかなぁ?) > 自作POP3クライアントでメールを受信した場合、 > FROMヘッダーにはメール送信者名しか入りません pop は、ただ単にヘッダとボディを送信するだけです。 From がどうだとか Subject がどうだとか、そういう データ内部には立ち入りません (基本的には)。 Outlook で「メールのソースを表示」したものと、 自作 pop3 クライアントの出力の、From: 周辺を両方 見せて下さい。 |
|
前日の日付取得の件 68userさん、ご教授ありがとうございました。 Solaris環境なのでシェルで作成するのはやめます。 perlも少し触ったことがあるのですがC言語の方が経験が長いので Cで作成しようと思っています。 が、一般的 or perlの方が効率的なのでしょうか? |
|
68userさん、早速のレスありがとうございます。はぴおです。 ちょっと長くなってしまいますが、同じメールを自作POP3クライアントと Outlookのそれぞれで受信したソースを載せておきます。 なんか"<"、">"の部分だけが読み込めてない感じです。 それではよろしくお願いします。 [自作POP3クライアント] ------------------------------------------------------------- Received: from ns.ics.lan ([202.228.221.126]) by bd.mbn.or.jp (8.9.1/bd.mbn.or.jp-2.0) with ESMTP id RAA13962 for ; Wed, 15 Nov 2000 17:26:03 +0900 (JST) Received: from kimura ([202.228.221.125]) by ns.ics.lan (8.9.3/3.7W) with ESMTP id RAA26374 for ; Wed, 15 Nov 2000 17:20:05 +0900 Message-ID: <000501c04ede$6249e4d0$5400a8c0@kimura> From: "kimura" To: "kimura" Subject: test Date: Wed, 15 Nov 2000 17:31:00 +0900 MIME-Version: 1.0 Content-Type: text/plain; charset="iso-2022-jp" Content-Transfer-Encoding: 7bit X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 5.50.4133.2400 X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4133.2400 X-UIDL: cde5eb4f8ec74762f85d10deccb2a5a3 test [Outlook Express] ------------------------------------------------------------- Received: from ns.ics.lan ([202.228.221.126]) by bd.mbn.or.jp (8.9.1/bd.mbn.or.jp-2.0) with ESMTP id RAA13962 for <lovex@bd.mbn.or.jp>; Wed, 15 Nov 2000 17:26:03 +0900 (JST) Received: from kimura ([202.228.221.125]) by ns.ics.lan (8.9.3/3.7W) with ESMTP id RAA26374 for <lovex@bd.mbn.or.jp>; Wed, 15 Nov 2000 17:20:05 +0900 Message-ID: <000501c04ede$6249e4d0$5400a8c0@kimura> From: "kimura" <lovex@bd.mbn.or.jp> To: "kimura" <lovex@bd.mbn.or.jp> Subject: test Date: Wed, 15 Nov 2000 17:31:00 +0900 MIME-Version: 1.0 Content-Type: text/plain; charset="iso-2022-jp" Content-Transfer-Encoding: 7bit X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 5.50.4133.2400 X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4133.2400 X-UIDL: cde5eb4f8ec74762f85d10deccb2a5a3 Status: RO test |
|
68userさん、さきほどは説明不足ですみませんでした。 エラー内容と環境を書いておきます。 よろしくご教授お願いします。 gcc -c share_test.cc ar cr libtestshare.so share_test.o ranlib libtestshare.so CC test_gcc.cc -L. -ltestshare test_gcc.ccは読み込んだライブラリ内の関数を呼び出しているだけです。 ###################### エラー内容 ###################### 未定義の 最初に参照している シンボル ファイル ShareTest::get(void) test_gcc.o __builtin_delete ./libtestshare.a(share_test.o) __rtti_user ./libtestshare.a(share_test.o) ShareTest::~ShareTest(void) test_gcc.o ShareTest::ShareTest(void) test_gcc.o ld: 重大なエラー: シンボル参照エラー。 a.out に書き込まれる出力はありません ###################### 使用環境 ###################### Kernel Architecture is sun4u OS Name is SunOS OS Version is 5.6 OS Distribution is Japanese Solaris 2.6 HW:2 s297s_hw2smccDesktop_09b SPARC Kernel Version is SunOS Release 5.6 Version Generic_105181-17 [UNIX(R) System V Release 4.0] |
|
> gcc -c share_test.cc > CC test_gcc.cc -L. -ltestshare ああ、CC って typo かと思っていたら、C++ なのか…。 # C++ は完璧に忘れたなぁ。Hello world さえ作れないです。 おそらく gcc と CC でクラス/メソッドのシンボル名の 命名規則が違うのが理由だとは思うのですが、意図的に gcc と Sun の CC を混在して使っているのですか? gcc (g++) か CC に統一できない理由があるので、調査 しているということですよね? もしそうなら、すいませんがわかりません。gcc の オプションで指定できるのかもしれませんが…。 > なんか"<"、">"の部分だけが読み込めてない感じです。 もしかして CGI として動かして HTML を吐いていませんか? んでもって < > & を (< > & に変換せず) その まま出力していたりしませんか? 根拠は以下の通り。 1. received の <〜> も出力されていない for ; Wed, 15 Nov 2000 17:26:03 +0900 (JST) for ; Wed, 15 Nov 2000 17:20:05 +0900 2. でも Message-ID は出力されている。 Message-ID: <000501c04ede$6249e4d0$5400a8c0@kimura> タグは英文字から始まる。数字が先頭にくることはない。 > が、一般的 or perlの方が効率的なのでしょうか? 僕なら間違いなく perl でやりますが、まぁそれはお好きな方で。 ちなみに sh からだと set `perl -e 'print scalar(localtime(time()-60*60*24))."\n"'` です。 |
|
> % date -v-1d > で1日前の日付が得られます。ただし、Solaris などの > date には -v オプションはないので、sh でやるなら > perl などを呼び出すのがいいでしょう。 このオプションは知りませんでした勉強になりました。 > Solaris環境なのでシェルで作成するのはやめます。 あきらめるのは早いです。 #!/bin/sh LANG=C set `date` year=$6 mon=$2 date=$3 if [ `expr $year % 4` = "0" ] ; then is_leap="YES" fi if [ `expr $year % 100` = "0" ] ; then is_leap="NO" fi if [ `expr $year % 400` = "0" ] ; then is_leap="YES" fi date=`expr $date - 1` if [ "$date" = "0" ] then case $mon in Jan) mon="Dec" date=31 ;; Feb) mon="Jan" date=31 ;; Mar) mon='Feb' if [ "$is_leap" = "YES" ]; then date=29 else date=28 fi ;; Apr) mon="Mar" date=31 ;; # 以下略 *) ;; esac fi echo The yesterday is $mon $date. なんていう面白味も芸もないスクリプトなら Solaris でも動くんじゃないかと 思いますよ。 もっとも、 > 作成したいものは、lastcommで前日のログ履歴を出し、管理者宛にメールを > 送るというものなのですが早速つまずいてしまいました。 この用途なら、日付の計算は不要で前々日分までの lastcomm のログの バックアップをとっておいて、前日分との差分を diff でとるという方法もあります。 (ただし、lastcomm のログなので、GB 単位になってもおかしくないのですが。) FreeBSD なんかのセキュリティチェックは全部前日分までのバックアップと 本日分のログの差分抽出でやっていますね。 # また長くなりすみません。 |
|
> あきらめるのは早いです。 うーん、ごもっとも。恥ずかしながらこういう 方法には全く気づきませんでした。 |
|
68userさん、ご教授ありがとうございました。 gccのオプション調べてみます。 |
|
こんにちは、はぴおです。 68userさんレスありがとうございました。 非常に恥ずかしい話ですが、68userさんのおっしゃる通りです。 何で気が付かなかったんだろうか??? ありがとうございました! HTTP、SMTP、POP3ができたので、今度はFTPをやろうかと 思います。 |
|
お世話になります。 実は今、C言語でCGIの勉強をしているのですけど、 CGIのデバッグってどうやるんでしょうか? もしかして、動作確認はいちいちブラウザで確認するしかないのですか? つ、つらい‥ なにか、効率的なデバッグ方法を知っていらしたら 教えて下さい。お願いします。 |
|
> もしかして、動作確認はいちいちブラウザで確認するしか > ないのですか? まさか :-) CGI というのはインタフェースです。 ブラウザからの情報を、環境変数と標準入力経由で プログラムに引き渡すインタフェース。それが CGI。 だから、 % env REQUEST_METHOD=GET QUERY_STRING='hoge=1&fuga=2' ./foo.cgi とか % set content='number=123&str=%21%22%23' % echo -n $content | env REQUEST_METHOD=POST CONTENT_LENGTH=`echo -n $content|wc -c` ./foo.cgi とかとか、 #ifdef DEBUG #define INPUTFILE_FOR_DEBUG "debug.txt" { char tmp[128]; struct stat sb; setenv("REQUEST_METHOD", "POST", 1); stat(INPUTFILE_FOR_DEBUG, &sb); sprintf(tmp, "%d", sb->st_size); setenv("CONTENT_LENGTH",tmp , 1); freopen(INPUTFILE_FOR_DEBUG, "r", stdin); /* この使い方合ってるっけなぁ… */ } #endif とかとかとか。 |