|
> シリアルポート ぼくの当てにならない記憶によると、 winでシリアルポートを開くときはAPIのCreateFile()を使うはずです。 その辺を調べてみてください。 で、この辺のソースはwin系と*nix系での互換性を維持するのは 難しいところだと思います。 ぼくはCygwinは使ったことありませんが、おそらくopen()を実装するのに このAPIを使ってると思うので、もしかしたら開けるかもしれません。 が、結局フラグが違うでしょうからあまり意味無いと思います・・・。 #そもそもLinuxのopen()ってシステムコールですしね |
|
初めまして。 Perlの勉強をし始めたばかりなのですけど、ソケットを使ったクライアントプログラムの作り方とか…全くの初心者な私にはすごく解りやすくて、それに読みやすかったです。 全部説明しよとう難しくなってるサイトや、簡単に説明しようと補足説明が抜けてるサイトも多いですけど、このサイトの説明はとても解りやすいです。 えっと感想をここに書いて良い物かどうか解りませんが、本当に参考になりました。ありがとうございます。 |
|
少なくともNTであれば C:\> type CON > COM1 といった方法でシリアルポートとお話できます。 parityやbaud rate、タイムアウト等の設定は、MSDOSと同じ modeコマンドで行います。 Windows95/98のことは知りませんが、似たようなものだと思いますよ。 |
|
@ありしあさん お褒めの言葉ありがとうございます。でもありがたくは思いますが、 もっとありがたいのは「ここは間違っている」「ここの記述が 理解しにくかった」などの指摘です。もちろん「こういうサンプル プログラムがあるとよい」とか、単なるタイプミスのご報告でも 大歓迎です。 何かしら気づいた点がありましたら、よろしくお願いします。 と言っておきながら、これまでいくつかプログラムの不具合や 記述ミスのご指摘を頂きましたが、忙しくて web に反映できず、 誠に申し訳なく思っています。手元にあるファイルは修正して いますので、暇ができ次第更新するつもりです。 # なのに、また忙しくなってきてしまった…。 |
|
procmailについてあるツールformailについての 質問です。 formailを使用して自動返信設定を作成中なのですが from句を任意で指定したアドレスに変更して、返信したいのです。 今の状態を見るとユーザー名+サーバーのドメイン名といった具合になってしまいます。 これを"xxx@xxx.yyy.zzz"といった指定したメールアドレスをfrom句に入れて自動返信したいのです。そういった方法はあるのでしょうか? よろしくお願いいたします |
|
追記です。 現在、procmailの設定は :0 h c * !^FROM_DAEMON * !^X-Loop:your@own.mail.address | (formail -r -A"Precedence: junk" \ -A"X-Loop: your@own.mail.address" ; \ cat resmsg) | $SENDMAIL -t これだと、送信者名がUNIXのユーザー名になってしまう。 最後の$SENDMAILで送信しているから当然なのですが・・・ ので、この送信者をxxx@xxx.yyy.zzzとしたいのです。 なにとぞ、よろしくお願いします。 追伸 どなたか、linuxサーバー(Redhat 6.2)で使用可能なお勧めの 自動返信ツールをご存知でしたら教えてください。 smtpにはsendmail8.9.3を使用しています。 |
|
むにむに。。思ったこと。 link-check.pl 114-115行目。 &check_link(SITES=>[@sites], MAX_CHILDRED=>20); 138-143 if ( defined $args{SITES} ){ @sites = @{$args{SITES}}; } if ( defined $args{MAX_CHILDREN} ){ $max_children = $args{MAX_CHILDREN}; } MAX_CHILDRED -> ? |
|
>68user 様 アドバイスありがとうございました。 どうやら容量の枯渇が原因でした。 余計なものを移動したら、動くようになりました。 ありがとうございました。 |
|
Perlのネットワークプログラムで、サーバーとの接続が 切れた状態を検出したいのですが、LANケーブルがつながった状態で 通信できなくなった状態は検出してPerlプログラムを終了出来るのですが LANケーブルを引きぬくことによって、通信できなくなった状態はどのようにして検出したらよいのですか? 一応、Perlの中でPingをうって帰ってきた値を見て検出しようと したのですが、Perlの中のPingはRoot権限でないとエラーに なってしまいます。 Root権限以外でPingを実行する方法か、あるいは違う方法を 知っていたら教えて下さい。お願いします(v_v) |
|
@宗佑さん > "xxx@xxx.yyy.zzz"といった指定したメールアドレスを > from句に入れて自動返信したいのです。 これは、単に From ヘッダが xxx@xxx.yyy.zzz になっていれば いいのですか? それとも envelope from が xxx@xxx.yyy.zzz と なっていて、例えば転送途中でメール送信に失敗した場合、 エラーメールが xxx@xxx.yyy.zzz に送られることを意図して いますか? 前者ならただ単に From: を置換するだけなので、formail -i や formail -I でできそうです。後者なら sendmail -f xxx@xxx.yyy.zzz でしょうか。 なお、僕は formail を使ったことはありませんし、できるか どうか試してもいません。 @やままさん > MAX_CHILDRED -> ? む、typo ですね。直しました。御指摘ありがとうございました。 @ありさわさん ケーブルを抜いた状況だとどうなるんですかね。多分僕なら一定時間で タイムアウトさせて unreachable かどうかを判断すると思いますが、 本当はどうすべきなのかは わかりません。 それはそれとして、以下は ping で判断するという前提の話。 ping は ICMP プロトコルを使いますが、これは root 権限が ないと実行できません。その証拠に ping コマンドは root に suid されています。 % ls -l /sbin/ping -r-sr-xr-x 1 root wheel 195956 Jul 27 23:31 /sbin/ping* というわけで、素直 (?) にping コマンドを使うのがいいのでは ないでしょうか。 |
|
>ケーブルを抜いた状況だとどうなるんですかね。多分僕なら一定時間で >タイムアウトさせて unreachable かどうかを判断すると思いますが、 >本当はどうすべきなのかは わかりません。 OS 依存ですが、ifconfig -a とすると表示されることがあります。 下は FreeBSD の場合です。 dc0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 inet 192.168.0.1 netmask 0xffffff00 broadcast 192.168.0.255 inet6 fe80::xxx:xxxx:xxxx:xxxx%dc0 prefixlen 64 scopeid 0x1 ether xx:xx:xx:xx:xx:xx media: autoselect (none) status: no carrier supported media: autoselect 10baseT/UTP <full-duplex> 10baseT/UTP none no carrier というのがケーブルが抜けたことを意味していると思っても だいたいあたっているはずです。一方、Solaris のように抜けた瞬間に /var/adm/messages などに記録されるものもあります。 Solaris がでたついでなので、 >1. /var/log/messages や /var/log/maillog に詳細なエラーは出ていないか Solaris の場合 sendmail のログは通例 /var/log/syslog に記録され、 BSD の /var/log/messages にあたるものは /var/adm/messages です。 |