68user's page 掲示板

Prev< No. 4350〜4363> Next  [最新発言に戻る] [過去ログ一覧]
No. 4350 # has 2005/11/05 (土) 11:03:28
>>4346 hagu
もしperlならこんな感じなんでしょうか?
echo $NM | perl -ple 'y/A-Z/a-z/;substr($_,0,1)=~y/a-z/A-Z/;'

No. 4351 # 2005/11/05 (土) 13:43:04
>>4347
>>4348 hagu

連想配列の場合、表示の順序は、ハッシュ法に従うのでランダムとなります。
すみません。

echo $NM | nawk '{for(i=1;i<=length($0); i++) if(i==1) {NM[i]=substr($0,i,1)} else {NM[i]=tolower(substr($0,i,1))}} END{for(j=1; j<i; j++) printf("%c",NM[j]); printf("\n")}'

No. 4352 # hagu 2005/11/05 (土) 13:58:38
>>4349 マーブル
凄い。
sedだけでですね。
でも、凄く、複雑すぎます。

>>4351
今度は、期待したいた結果が得られました。
awkを使っているのも複雑ですね。

No. 4353 # zsh 2005/11/05 (土) 14:28:08
>>4352 hagu
これじゃだめ?

$ echo $NM | nawk '{ a=toupper(substr($0,1,1)); b=tolower(substr($0,2)); printf "%s%s\n",a,b; }'

No. 4354 # 2005/11/05 (土) 23:53:05
>>4353 zsh

そうですよね。
substr()で2文字目以降すべてを変換してしまえばいんですよね。
何、ループで1文字ずつ変換し、表示しているんだろう。

No. 4355 # マーブル 2005/11/06 (日) 02:06:34
あまり知られていないscanfの用法。
既出でしたか残念。>>4041>>4042
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/scanf.3.html

以下同意
-------------------------------------
sscanf(host_path,"%[^/]%s",host,path);
-------------------------------------
p = strchr(host_path, '/');
if ( p != NULL ){
    strcpy(path, p);
    *p = '\0';
    strcpy(host, host_path);
} else {
    strcpy(host, host_path);
}
-------------------------------------

No. 4356 # マーブル 2005/11/08 (火) 01:39:16
fdopen()で作成されたストリームが閉じられたときにファイル記述子も 閉じられる。
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/fdopen.3.html
よって以下のページのL:125は不要です。
http://x68000.q-e-d.net/~68user/net/c-http-2.html

No. 4357 # 68user 2005/11/08 (火) 02:42:15
>>4356 マーブル
ありがとうございます。とりあえず POSIX を確認させてください (明日以降)。
    http://www.opengroup.org/onlinepubs/009695399/functions/fdopen.html

No. 4358 # 68user 2005/11/08 (火) 02:51:42
>>4357 68user
明日以降と言いつつ今確認してみましたが、POSIX にはそういう記述は
ないように見えます。また、Solaris9 のマニュアルにも書いてないように
見えます。
    http://www.freebsd.org/cgi/man.cgi?query=fdopen&sektion=3C&manpath=SunOS+5.9

しかし BSD ならば、4.4BSD-Lite2 にはそのような記述があります。
    http://www.freebsd.org/cgi/man.cgi?query=fdopen&manpath=4.4BSD+Lite2&format=html

Solaris や HP-UX が手元にある方にお願いなのですが、fdclose して fclose した
ときにソケットディスクリプタがクローズされるかどうか truss コマンドなどで
確認していただけないでしょうか (わたしのまわりは FreeBSD と Linux しかないので)。

いずれにせよ何かしらの補足は追記したいと考えています。

No. 4359 # 68user 2005/11/08 (火) 03:00:02
>>4358 68user
> fdclose して fclose したときに
「fdopen して fclose したときに」の誤りでした。

ちなみに「UNIX ネットワークプログラミング第2版」からは、この件についての
記述を読み取ることはできませんでした。

No. 4360 # マーブル 2005/11/08 (火) 04:30:12
>>4359 68user
機種依存等深く考えずに書き込んでしまって申し訳ございません。
また知合いに話せる人がいない為に決めつけたような書き込みになってしまったこともお詫びします。

基本的にFILE構造体にfileディスクリプタが含まれているものと理解していたもので、
fclose時に連動してcloseされるかな?と単純に考えてしまいました。

trussで確認した結果が以下でcloseされているようでした(これおもしろいですね)
SunOS eibw23 5.9 Generic_112233-03 sun4u sparc SUNW(Solaris8か9)
-----------------------------------------------------------
read(0, 0xFF3414EC, 1024) (sleeping...)
read(0, "\n", 1024) = 1
llseek(3, 0, SEEK_CUR) = 0
close(3) = 0
read(0, 0xFF3414EC, 1024) (sleeping...)
read(0, "\n", 1024) = 1
_exit(0)

No. 4361 # マーブル 2005/11/08 (火) 04:33:00
>>4360 マーブル
うゎ、アドレス込みで貼っちまった、ハズカシィ

No. 4362 # マーブル 2005/11/08 (火) 04:48:39
>>4360 マーブル
opensolarisがsolarisとどれだけ違うかわかりませんが、
http://cvs.opensolaris.org/source/xref/on/usr/src/lib/libc/port/stdio/fdopen.c#64
fdの値は単純に渡されているように見えます。
(↑のサイト使い安くて良く使ってます、BSDでこのような感じのページご存知ですか?)

No. 4363 # 68user 2005/11/08 (火) 13:23:30
>>4360 マーブル
昨日は変なことを書いてしまいました。fclose したんだから close するのは
当然ですよね。まぁ fdopen したものはフラッシュだけ行って close しない
実装があっても不思議ではないですが、素直に考えれば close するはず。

よって、125行目の close は削除します。

>>4362 マーブル
> (↑のサイト使い安くて良く使ってます、BSDでこのような感じのページご存知ですか?)
普通の cvsweb でよければ、以下のものが cvsgraph が組み込まれているのでよく使います。
    http://cvsweb.allbsd.org/cvsweb.cgi/src/lib/libc/stdio/fdopen.c
ソース閲覧なら GLOBAL を使ったFreeBSD Source Code Tour が便利ですが、ファイル名が
ころころ変わるので URL を保存しておいても役に立たないのがが困りものです。
    http://snapshots.jp.freebsd.org/tour/
    http://snapshots.jp.freebsd.org/tour/current/userland/cgi-bin/global.cgi?pattern=fdopen&id=&type=definition
    http://snapshots.jp.freebsd.org/tour/current/userland/S/9687.html#53

OpenSolaris のソースを見られるところは知りませんでした。今後活用させて
いただきます。

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