|
どうも皆さん始めまして。 私は最近Cygwinでプログラミングの勉強を始めました。 Linuxのことはまだほとんどわからないので2つ同時に 勉強しなければならないので大変です(^_^;) で、インターネットで拾ってきたいろんなサンプルソースを コンパイルして遊んでるんですが、LinuxとWin32での ソースレベルでの互換性に疑問があります。 たとえば、あるサンプルソースの場合、シリアルポートにアクセス するのに #makefile SERIALDEVICE = /dev/ttyS0 #tool.c /* setup serial port */ void open_serial(char *devicename) { struct termios newtio; dfd = open(devicename, O_RDWR | O_NOCTTY); if (dcfd < 0) { perror(devicename); exit(-1); } open_serial(SERIALDEVICE); という具合にデバイスをオープンしているのですが、 このソースをWin32アプリとしてコンパイルしても当然(?)動きません。 で、SERIALDEVICEの部分を COM1 に変えて見たのですが、これも 動きませんでした。 他のファイルやソースを眺めてみても、良くわからないのですが、 この場合、Win32で動作させるにはどのようにすべきなのでしょうか? |
|
ども、はじめまして。雅人と言います。 質問なのですが 掲示板をつくろう(1)でperlを書くならEUCで書くべきと 書かれてたのでSJIS(CRLF)からEUC(CRLF)に変換したところ 逆に文字化けが起こってしまいました。 ローカルな環境(win95)でもアップロード先(virtualave.net) でも文字化けが起こってしまいます。 これの原因とは一体なんなのでしょうか? よろしくお願いします。 |
|
超メール初心者あらため宗佑です。 procmailの転送設定、自己解決しました。 記述が足りなかっただけでした。 うーん、奥が深いですね、メール転送。 これからスクリプトを徐々に複雑にしていこうと思います。 でもprocmailを記述しているHPって少ないものなんですね。 載っている例も基本的なものです。 私も自分で試している途中ですが、procmailの達人みたいな例の 載っているHPをどなたかご存知内でしょうか? お願いいたします |
|
@雅人さん > ローカルな環境(win95)でも メモ帳などのエディタで化ける、ということならば EUC を読めるエディタを入手して下さい。 > アップロード先(virtualave.net) でも ブラウザの文字コード設定を「日本語 EUC」として直るならば、 CGI の出力する日本語部分が短かすぎるため、ブラウザが 文字コードを正しく解釈していないのでしょう。その場合は、 print "Content-type: text/html\n\n"; を print "Content-type: text/html; charset=EUC-JP\n\n"; として下さい。 @宗佑さん > でもprocmailを記述しているHPって少ないものなんですね。 > 載っている例も基本的なものです。 確かに少ないですね。僕もあまり見かけたことがありません。 ただ、基本的なところをわかっていれば procmailrc(5) と procmailex(5) でなんとかなることも多いです。 @Madstar さん うーん、さっぱりです。シリアルポートの操作さえしたことがないので…。 |
|
> print "Content-type: text/html; charset=EUC-JP\n\n"; > として下さい。 というより、Content-type ヘッダには EUC-JP/Shift_JIS/ISO-2022-JP などの charset を付加 *すべき* です。 僕のところの CGI プログラムには一部にしか付いていませんが、 これは悪い CGI の見本です。必ず charset を付けましょう。 |
|
どうも、ありがとうございました! 無事できました。 |
|
みなさん、はじめまして。海苔王と申します。 現在、ソラリス7でサーバーを構築しています。 apache,sendmail,popper と動かしてきて、昨日までは メールが動いていたのですが、突如、受信ができなくな ってしまいました。電八で出たエラーは以下のとおりです。 +OK QPOP (version 3.0.2) a ******starting. C: USER *** S: +OK Password required for ****** C: PASS ******** S: -ERR [SYS/TEMP] maillock error 3: '/usr/mail/*****' といった内容でした。sendmail.def からいろいろ見直したのですが、 うごきませんでした。どうかアドバイスお願いします。 |
|
チェック項目を思い付くままに。 1. /var/log/messages や /var/log/maillog に詳細なエラーは出ていないか 2. /usr/mail/ のパーミッションがおかしくなったのではないか (ls -ld /usr/mail) 3. /usr/mail/ にロックファイルらしきものは残っていないか (ls -lA /usr/mail) 4. ディスクの残り容量は (df -k)。i-node space が枯渇していないか (dk -ki) 5. ソースから grep maillock して、エラー箇所を捜し出す あと重要なのが、全ユーザでメールを取得できないのか、 一人だけメールを取得できないのかってこと。全ユーザなら 1,2,4 あたり。一人だけなら 3 をチェック。 ってな感じでしょうか。 |
|
>うーん、さっぱりです。シリアルポートの操作さえしたことがないので…。 残念です(T_T) まぁシリアルポートなんて今更余り使わないですよねぇ(^_^;) いろいろ検索かけてるんですが、さっぱりです。 |
|
>まぁシリアルポートなんて今更余り使わないですよねぇ(^_^;) DOS時代には、awkで print "AT" > "AUX" みたいな感じでモデムとお話してましたが、 Windowsではどうなんだろう…試してません(^^; |
|
> シリアルポート ぼくの当てにならない記憶によると、 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 -> ? |