トップページ⇒tech
1001コメント260KB

UNIXプログラミング質問すれ Part3

レス数が1000を超えています。これ以上書き込みはできません。
0001実行されるのでしょうか?NGNG
p

UNIXおよびUNIX clone環境一般のプログラミングに関する質問スレッド

前スレ:
http://pc5.2ch.net/test/read.cgi/tech/1055110889/
http://pc2.2ch.net/tech/kako/992/992057422.html

>>2 関連スレ
0002デフォルトの名無しさんNGNG
test
0003デフォルトの名無しさんNGNG
>>1
立て逃げせずに関連スレ張れよ馬鹿

0004デフォルトの名無しさんNGNG
関連スレ
Cygwin使っている人いますか? その11(UNIX板)
http://pc5.2ch.net/test/read.cgi/unix/1076240971/
Cygwin使っている人いますか? Part2(Windows板)
http://pc5.2ch.net/test/read.cgi/win/1052361218/

関連板
http://pc5.2ch.net/unix/
http://pc5.2ch.net/linux/

0005デフォルトの名無しさんNGNG
前スレ>>992
で,お前は一体,何を言いたいんだ。
一人,自己完結して終い?
0006デフォルトの名無しさんNGNG
>>5
みっともない。。。
0007デフォルトの名無しさんNGNG
しかし>>992はtrapくらい検討するべきだったろう
トラブってもマニュアル読まない人?
0008デフォルトの名無しさんNGNG
>>5
初めの実装ではスクリプトの中で'&'付けてコマンドを実行するようにしていました。
OS起動によりスクリプトを起動したら、ログイン後に実行し続けている
はずのコマンドのプロセスがなくなっていました。そこでなぜかと
調べているときに、他のアプリケーションのスクリプトでは'&'を付けて
起動しているコマンドがほとんどないことに気が付きました。
根本的な知識がなかったために質問させてもらいました。

>>7
自分ひとりで検討したわけではないのですが、何かまずい欠点などあったら
指摘してもらえますか?
0009デフォルトの名無しさんNGNG
マニュアルを読んでない。
0010デフォルトの名無しさんNGNG
>>9
nohupのマニュアルの中に何がまずいかは書いてあるから読め
ということでしょうか?
読んだ結果決定したことなので今更何ともいえないです。
0011デフォルトの名無しさんNGNG
trapというキーワードが与えられているのに、
マニュアルを再読しないの? ああ、もう済んだことだしね。
0012デフォルトの名無しさんNGNG
>>11
再読はしています。済ますつもりもありません。
ハングアップのシグナルを無視してコマンドを実行するという点で
まだ違いが読み取れていません。
0013デフォルトの名無しさんNGNG
"nohup.out"なんつー謎のファイルが出現して,精神衛生上悪い。

そもそも,>>990に'&'の恐ろしい害が書いてあるのは,ちゃんと理解したのか?
>>992の「僕不安なの〜」なんてレス見る限り,全く理解していないように思うのだが。
0014デフォルトの名無しさんNGNG
"nohup.out"なんつー謎のファイルが出現して,精神衛生上悪い。

そもそも,>>990に'&'の恐ろしい害が書いてあるのは,ちゃんと理解したのか?
>>992の「僕不安なの〜」なんてレス見る限り,全く理解していないように思うのだが。
0015デフォルトの名無しさんNGNG
>>13
さっさと答えを書けばよいのでは?
そんなことで儚い優越感に浸っても仕方がないだろう。
0016デフォルトの名無しさんNGNG
>>15
必死だな
0017デフォルトの名無しさんNGNG
>>16
オマエモナー
0018デフォルトの名無しさんNGNG
POSIXのシグナルで、一つのハンドラを複数のシグナルに登録することはできますか?
0019デフォルトの名無しさんNGNG
できます。
0020デフォルトの名無しさんNGNG
selectシステムコールを使っていてタイムアウトは設定していないのに戻り値に-1が入って抜けてしまいます。
シグナル割り込みが発生していると思うのですがシグナルを無視するような方法なんてあるのでしょうか?
0021デフォルトの名無しさんNGNG
signal関数でできるかもしれない。
いずれにせよ、なんで-1が返ってるのかを確認するのが先だと思うが。
0022デフォルトの名無しさんNGNG
>>20
とりあえずerrnoがEINTRかどうか見てから判断しても遅くはないだろう
signalは無視することもできるが、単に無視しちゃまずい
場合もあるだろう(子プロセスからのSIGCHLDを待ってる場合など)

sigaction()なら古いsignal()より細かい制御ができるが、
sigaction()がサポートされてるかどうかとか
どんなシステムコールが再開をサポートしてるかとか
その辺はシステムによるんで、結局
while ((n_read = read(fd, buff, sizeof buff)) == -1 && errno == EINTR)
;
みたいにループにしちゃうのは良く使う手だ
002320NGNG
>>21 >>22
ありがとうございます。
とりあえずerrnoを見てEINTRならループで回すことにします。
0024デフォルトの名無しさんNGNG
>>20-23
errnoチェックすんのはUnixの鉄則ではないか。
0025デフォルトの名無しさんNGNG
別に Unix に限ったことじゃないと思うが...。
(Windows は GetLastError() だったりするけど。)

ていうか、>>20 は場当たり的杉。
select が -1 を返す
⇒ 「シグナル割り込みが発生していると思う」
⇒ 「シグナルを無視する」

errno みて、「あっ ! 割り込まれてんじゃん !!」とわかったら、「誰がシグナル送っとんじゃ、ゴラァー !!」と思うのが普通だと思ってたけど、最近はみんなこうなのか ?
0026デフォルトの名無しさんNGNG
>>25
サンプル数1で全国の星の数ほどいるプログラマの考え方はこれだと決定するのですね。
最近はみんなそ(略


ときに、誰がシグナルを投げたかなんてわかるんですか?
0027デフォルトの名無しさんNGNG
>>26
わかる。ぐぐれ。

ヒント: sigaction
(ヒントっていうかそのものか。藁)
0028デフォルトの名無しさんNGNG
>>26
>> 最近はみんなこうなのか ?
> サンプル数1で全国の星の数ほどいるプログラマの考え方はこれだと決定するのですね。

どこを見て「決定している」と判断しているか非常に興味がある。
最近は、こういう奴も多いのか ?
0029デフォルトの名無しさんNGNG
UNIXダサすぎ。
つかってて平気ですか?
0030デフォルトの名無しさんNGNG
>>29
みんな我慢汁がまんしてる。
0031デフォルトの名無しさんNGNG
↓久しぶりにキモーイのAAよろしこ。
0032デフォルトの名無しさんNGNG
UNIX最高なんだけどぉ
0033デフォルトの名無しさんNGNG
>>29
UNIX好きさ。快適だ。
君は何がいいと思うんだ?
0034デフォルトの名無しさんNGNG
OpenVMS
0035デフォルトの名無しさんNGNG
Unix最高だぜ!
一度Unixの良さを知ったら他の奴にはもう戻れない。
0036デフォルトの名無しさんNGNG
ここの住人はSmalltalkやInterlisp-Dみたいな環境使ったことないんだろうなあ。
0037デフォルトの名無しさんNGNG
Squeakが玩具である事だけは確認しました。
0038デフォルトの名無しさんNGNG
複数人が同時にログインして作業できるOSって、他にないからなあ。
UNIXがなかったらと思うとぞっとするよ。
0039デフォルトの名無しさんNGNG
viみたいな知障エディタしかないので
なにもできない。
0040デフォルトの名無しさんNGNG
本物のviを使えるなんてすごい環境だな。
0041デフォルトの名無しさんNGNG
UNIXはなんか問題が起るとlibcやカーネルのソースまで
おいかけて問題を探さなくちゃならない。ハッカーじゃない
普通の人の精神状態を平静に保つには、クローズドな
システムがよい。分業と称した責任の擦り付け合い。
0042デフォルトの名無しさんNGNG
>> 41
> クローズドなシステムがよい。
例えば?
0043デフォルトの名無しさんNGNG
>>36
あなたが本当に Smalltalk や Lisp の信奉者であるなら UNIX の良さが分かると思うけど
(こないだ Medley 触ってみたけど、今の時代にあの中で生活するのは厳しいかな)。
0044デフォルトの名無しさんNGNG
2chの鯖だって、本当は原因追求しなくちゃいけない。
rootさんに悪いからあんまり触れないけど。

>>42
Solaris
ちなみに俺の中ではクローズドなUNIXなるものはない。
0045デフォルトの名無しさんNGNG
41を44の返答で補ってみた.
> UNIXは(Solarisと違って)なんか問題が起るとlibcやカーネルのソースまで
> おいかけて問題を探さなくちゃならない。ハッカーじゃない
> 普通の人の精神状態を平静に保つには、クローズドな
> システム(例えばSolaris)がよい。分業と称した責任の擦り付け合い。

Solarisで開発したことないから,よく分かんないんですけど,
Solarisには,例え問題が起きてもlibcやカーネルのソースまで
追いかけなくても問題が解決する機構があるんでしょうか?

それとも,Solrarisのカーネルやlibcには,そもそも問題がないとの主張ですか?

「クローズド」の意味を私が理解できてないのかな?
0046デフォルトの名無しさんNGNG
>>45
> Solarisには,例え問題が起きてもlibcやカーネルのソースまで
> 追いかけなくても問題が解決する機構があるんでしょうか?

サポートと言うありがたい機能がついてるからな。










あまり役に立たなかったりするけど...。
0047デフォルトの名無しさんNGNG
商用のメリットって、わかんねえことはサポートに投げられることだよな。
UNIXに限らんけど。
0048デフォルトの名無しさんNGNG
クソ遅いshが基本のUNIXなんて早く死滅すればいいのにね。。
shスクリプトあらかじめバイトコンパイルとかやってキャッシュ化するとかできんの?
どうせそれやっても遅だろうけど。
0049デフォルトの名無しさんNGNG
shが遅ければPerlで書いてしまうというのもあるけどぉ?
それでも遅いと感じるなら、Cで書くしかないけど。
0050デフォルトの名無しさんNGNG
シェルの処理速度が百倍速くても、殆ど体感的には誤差の範囲だと思うけど。
fork() とかコマンド自体の事なら、十分速いから無問題。
0051デフォルトの名無しさんNGNG
だーから実際計ればわかるがshが一番時間食ってるんだよ。
クソ遅え。。
アホコマンド連発する文化だしな。
0052デフォルトの名無しさんNGNG
>>51
そんなのは処理依存だし、時間掛かる処理に sh を使っているおまいが悪い。
つか UNIX の基本は sh じゃなくて C だろ。
0053デフォルトの名無しさんNGNG
↑アフォ?
処理系依存て。
0054デフォルトの名無しさんNGNG
↑日本語で書いたつもりだが・・・?
0055デフォルトの名無しさんNGNG
処理依存と処理系依存の違いについて
0056デフォルトの名無しさんNGNG
誰も処理系の話などしてない。
0057デフォルトの名無しさんNGNG
shが時間食うか?
個々のコマンドの方が時間かかると思うのだが。
0058デフォルトの名無しさんNGNG
さぁ、いよいよ荒れてきました。
0059デフォルトの名無しさんNGNG
shが時間を食うと言うより、個々のコマンドのプロセスを生成/消滅させるのに時間を食う。

そろそろ終わりにしようや
0060デフォルトの名無しさんNGNG
>>52
ですよね.

>>51
調べたと言うんなら,律速段階をCなりなんなり使って最適化すりゃいいじゃん.
あなたには選択の自由がある.
0061デフォルトの名無しさんNGNG
まあshの場合「やりたい仕事の内容」と「それにかかる時間」が明らかに
見合わない場合はあるよね
その辺は適当に。
典型的な例がtestだのechoだのdateだのexprだのだ
まあ例をあげたらキリがないがな
これがshの組み込みになってない場合は明らかに時間がかかりすぎる
ループの中で使ったりしたらシャレにならん
一行メッセージを出力するだけのためにfdを複製しfork()exec()wait()
を実行するのは割りがあわなすぎる

ま、Cってのは極端だな
他のスクリプト言語が使えるならそっちを使えばいいだろう
0062デフォルトの名無しさんNGNG
そこでCommonLispですよ!
0063デフォルトの名無しさんNGNG
具体的にshにやらせていて、遅くて困ってるのって何?
0064デフォルトの名無しさんNGNG
>>61
cは最終兵器だよな(w

>>63
イパーイある。俺が担当したうちのなかで一例を挙げると「ローダの無いRDBへの更新コマンド群の作成」
shで10時間ほどかかっていたのをawkに書きなおした。5秒になった。
shを使っていて遅いならば、それはshを使うのが悪い。
sh類は単なる「プログラマブルランチャー」だと思うべし
0065デフォルトの名無しさんNGNG
Windows上のbatファイルで全てやろうとする変態がいたら見てみたいものだ。
0066デフォルトの名無しさんNGNG
つか、shの中からawkなり自作プログラムなりを起動するのがふつうだろ。
shは個々のプログラムでは制御しにくい全体の処理フローを担当。
0067デフォルトの名無しさんNGNG
一度書いたshを見直してみるのが一番はやいと思いますが・・
0068デフォルトの名無しさんNGNG
どうだろう
むしろshベースのツールボックス的アプローチが伝統で
性能や機能にに問題があったら他のものを使う
が基本だと思うんだが、shの「ツールボックス的アプローチ」
がある意味「やりすぎ」なんだよな
echoだのtestだのexprだのまでが外だしってのは
昔のデザインなのにあそこまで富豪的なのはある意味すげえ

tclはコマンド(プロセス) が コマンド関数
に置き変わっただけでものすごくshに似てるけど
当たり前の話として、比べものにならないほど速いよね
インタプリタの中ではそれでも遅い部類だけど

Cなんて使うまでも無いことが多いよ。ただやっぱり
shの非効率は、時として次元が違いすぎるものになる。
0069デフォルトの名無しさんNGNG
wgetはその基本的な機能をライブラリとして外に出して欲しいな。
0070デフォルトの名無しさんNGNG
画像データを実行ファイルに埋め込んで使うことはできますか?
言語はC++です。
0071デフォルトの名無しさんNGNG
できる。がんばって配列として打ちこみなさい。
0072デフォルトの名無しさんNGNG
>>64
それは元のshell script書いた奴が糞だっただけかも知れないので、
目的じゃなくて、処理内容を書いてみなよ。(目的書いてどうする!?)

まあ、shell scriptでヘビーな文字列処理はやらない方がいい、
これは議論の余地がないけどな。お爺ちゃんも言ってた。
0073デフォルトの名無しさんNGNG
>>70
xbm, xpm形式は、
画像データファイルそのものが、header fileとして利用できる。
0074sh 厨がかかるかな ?NGNG
>>72
ネタかハッタリだろ。
いくら sh が遅いと言っても、awk の 7200倍も遅いわけがない。
0075デフォルトの名無しさんNGNG
7199倍遅い
0076デフォルトの名無しさんNGNG
>>74
そうだな、作りによっては7200倍どころじゃないだろうからな(w
以下のshスクリプトはcat -nの真似をするが(正確に同じではないが)
ここまで遅いものを他のスクリプト言語(awkを含む)で作るのは難しいだろう。
ためしにちょっとでかいファイルを読ませてみ。死ぬから。

ま、こんなものは当然誰もつくらない。すなおにcat -nを使えばよいからだ。
しかし、readもechoも、それをループの中で使うことも、それ自体では
ごく普通のshスクリプトで用いられる可能性がある点に注意だ。

for i
do
    exec <$i
    lineno=1
    while read line
    do
    echo $lineno "$line"
    lineno=`expr $lineno + 1`
    done
done
0077デフォルトの名無しさんNGNG
諸悪の根源だが、
sh作った奴、アホだろ。
http://minnie.tuhs.org/UnixTree/V7/usr/src/cmd/sh/mac.h.html
0078デフォルトの名無しさんNGNG
その、アホが作ったshをいまだにありがたく使っている重度のアホもいる。
UNIXは基本的に、こうしたアホスパイラルで構築されている事が随所で観測できる。
0079デフォルトの名無しさんNGNG
Bourneってここまでアホだったのか…
0080デフォルトの名無しさんNGNG
>>77-79
有名なハナシだろそれ。
似たような風習は昔はちらほらあった。
現在の基準で過去を断罪すること勿れだよ。

>>76
単に処理の比率の問題だろ。
shスクリプトでループ回すときは内側の処理はもっと重いのが普通だし、
awkじゃできないこともある。

行番号つけるために>>76みたいなことして使えないと評価する奴がいるとしたら
適切な道具の使い方を知らないそいつの頭が使えないだけの話。
0081デフォルトの名無しさんNGNG
>>72
数値計算もやらない方がいい。

>>76
長いわりに話のレベルが低くて激藁
どんな言語だってループ(再帰)はあるし、
ループの中で使える処理の重いサブルーチンがある。

そのfor文は…
0082デフォルトの名無しさんNGNG
>>81
0083デフォルトの名無しさんNGNG
>>76
> そうだな、作りによっては7200倍どころじゃないだろうからな(w

実際にやってみた。

OS: FreeBSD 4.7R
CPU: Pentium200MHz
Mem: 48MB

% /usr/sbin/time /tmp/76.sh /usr/src/sys/sys/* > /dev/null
  2088.41 real  85.80 user  394.67 sys
% /usr/sbin/time cat -n /usr/src/sys/sys/* > /dev/null
  0.56 real  0.44 user  0.11 sys

まあ、遅いが 7200倍も違わない。
ついでに言うと、誰が考えても expr の呼び出しに時間がかかっているのは明白。
FreeBSD の sh は数値演算を sh 自身でできるから、

10c10
< lineno=`expr $lineno + 1`
---
> lineno=$(($lineno + 1))

とした版を作ると

% /usr/sbin/time /tmp/76-1.sh /usr/src/sys/sys/* > /dev/null
  227.18 real  16.66 user  44.69 sys

と、400倍ぐらいになる。
0084デフォルトの名無しさんNGNG
>>83
>FreeBSD の sh は数値演算を sh 自身でできるから、
と言うからには
>< lineno=`expr $lineno + 1`
>---
>> lineno=$(($lineno + 1))
これぐらいは内部で自動的に書き換えして欲しいよね。
互換性なくなるならイラネ。
0085デフォルトの名無しさんNGNG
>>84
> これぐらいは内部で自動的に書き換えして欲しいよね。

(゚Д゚)ハァ?

> 互換性なくなるならイラネ。

歳幾つ? いまや$((数式))がないshの方が互換性がないんだけど…
http://www.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html
0086デフォルトの名無しさんNGNG
>>84
そんな余分な自動化はいらんよ。
だいたい、expr がどんなプログラムかを sh が知っているわけじゃないんだし。
0087デフォルトの名無しさんNGNG
shイラネ
008876NGNG
>>80
ごめんおれアホだから

> awkじゃできないこともある
awkぐらいにしか勝てないのですか?

>>81
何言ってるかわからないよ。もしかして俺よりレベル低いですか?

>>83
意外に早いな
ハノイの塔とかフィボナッチ数列にすべきだったか(w
確かに今どきのshellで明らかに遅くなるのはexprだけだろうな
あそこだけはどうしてもfork()&exec()とパイプからの読み取りが
発生するからな

>>85
でも今だにオープンソースのCの世界ではK&R風に書くかansi2knr.cは
つけるよね
Posix互換shellの機能は当然期待せずbourne shell互換に書くよね
>>76もそういうscriptのつもりなんだけど
互換性ってのはそういうことでしょ
C++なんかもっとひどいよね
0089デフォルトの名無しさんNGNG
オープンソースだったら、shですべてやっちゃうような無茶なものは修正されるでしょ。
0090デフォルトの名無しさんNGNG
>>88
> でも今だにオープンソースのCの世界ではK&R風に書くかansi2knr.cは
> つけるよね

gccにバリバリ依存しているものも多いですが…
0091デフォルトの名無しさんNGNG
>>90
そうか?
どっちかというと、autoconfやgmakeに依存してるもののほうが多いような
気がするが
まあオープンソースといってもピンキリだからな

しかし、
・互換性を(さして)気にしなくていい
・極めてシビアな状況(/usr/binがつかえないなど)では実行できなくてもいい
んなら、shスクリプトにする必要なんぞどこにもない気がしないか
特にposix shなんて中途半端のきわみだという気がするが
0092デフォルトの名無しさんNGNG
といって、他のスクリプト系だと非互換部分が大きすぎるし。
awkくらいまで枯れてればいいけど。
0093デフォルトの名無しさんNGNG
いやshでもコマンド仕様自体はシステムによって非互換じゃん
よくあるのがecho()とかいう関数(echoのくだらないラッパー)
0094デフォルトの名無しさんNGNG
バージョン違ったら動かねーとか、
そういう悲惨な状態にはなりにくいということ。
0095デフォルトの名無しさんNGNG
FreeBSD の sh は、bash のシンボリックリンクじゃなかったっけ?
0096デフォルトの名無しさんNGNG
>>95
ちがうちがう
0097デフォルトの名無しさんNGNG
*BSDの/bin/shは同じコードなの?
0098デフォルトの名無しさんNGNG
>>97
OpenBSDはかなり手が入ってる。Tab補完や履歴検索が出来るんで常用可。
0099デフォルトの名無しさんNGNG
ま、POSIX互換が普通と思ってる奴は少ないわな
0100デフォルトの名無しさんNGNG
ashだよな。
0101デフォルトの名無しさんNGNG
>>98
bash?
0102デフォルトの名無しさんNGNG
>>101
bashは(/bin/shとして起動した時にも)
独自拡張をoffに出来ないので*BSD方面では
/bin/shとしては評判が悪い。
0103デフォルトの名無しさんNGNG
>>102
bashismですな。
0104デフォルトの名無しさんNGNG
>>98
Openのshはksh(pdksh)だぽ
0105デフォルトの名無しさんNGNG
cshイラネ
0106デフォルトの名無しさんNGNG
つーかcshのどこがCに似てんだよゴルァ
言ってみろよゴルァ
0107デフォルトの名無しさんNGNG
>>106
名前。
0108デフォルトの名無しさんNGNG
そこで、zsh ですよ。
0109デフォルトの名無しさんNGNG
bashって最悪。
$echo -eってしてみ。
さらに$printf -aのように-[a-zA-Z0-9]を表示しようとすると
オプションと勘違いするし…。
0110デフォルトの名無しさんNGNG
Cで指定した時間が来たらシグナルを送ってくれるような関数ってありますか?
setitimerだとかなり時間がずれるので正確なのがあればいいんですけど。
OSはRHLinux9です。
0111デフォルトの名無しさんNGNG
どれくらいの正確さを要求している?
秒?ミリ秒?ナノ秒?
0112デフォルトの名無しさんNGNG
>>111
そこまで正確じゃなくて分単位程度の正確さを求めています。
夜間だけプログラムを動かして朝の7時に処理を止めたいので指定した時刻に
シグナルを送ってくれるような関数があればいいんですけど。
0113デフォルトの名無しさんNGNG
itimerって分以上にズレるんか・・・知らんかった
0114デフォルトの名無しさんNGNG
>>112
> 夜間だけプログラムを動かして朝の7時に処理を止めたい
それはat(またはcron)とkillの組み合わせでいいような...
0115デフォルトの名無しさんNGNG
>>114
7時までに止めたいのは一部の処理でその後にもいくらか処理したいので
KILLはできません。
setitimerで1分ごとにシグナル送ってハンドラ内でtime関数を使って
設定時刻と比較するしかないのかな。
なんかもっとスマートな方法がありそうな気がするけど。
0116デフォルトの名無しさんNGNG
>>115
man kill
0117デフォルトの名無しさんNGNG
>>115
> KILLはできません。

それはKILL -TERMのことか? 他のsignal使えよ。、
setitimer(2)は分単位でずれることはないしな。
0118デフォルトの名無しさんNGNG
clock_nanosleep+TIMER_ABSTIMEはどうだ?
0119デフォルトの名無しさんNGNG
>>116-117
すいません。killについてよく知りませんでした。
確かになんとかなりそうです。ありがとうございます。
0120デフォルトの名無しさんNGNG
>>119
名前が悪いよね
0121デフォルトの名無しさんNGNG
デーモン作ってビジーループで時間見ても良いんじゃないかとね?
0122デフォルトの名無しさんNGNG
ビジーループはまずい。
0123デフォルトの名無しさんNGNG
>>121
そんなことしなくても、>>114 の方法で十分。
0124デフォルトの名無しさんNGNG
>>120
同意
0125デフォルトの名無しさんNGNG
kill me!
0126デフォルトの名無しさんNGNG
昔、とある現場でファイルの構成管理にSCCSというのを使っていたので
懐かしく思い、いろいろ検索してはみたもののSCCSのダウンロードサイト
や解説ページが見つかりません。どなたかご存知ないでしょうか。
0127ルナNGNG
学校の課題で
「MIDIダイレクト、sound文で、音の高さのデータを共用したい。
あなたの考え方を述べなさい。」
というレポートを書かないといけないのですが、
図書館や本屋さんで調べても内容が難しくてわからず、何を
共用すればいいかもまったく検討もつきません。
どういう風にまとめればいいでしょうか?
何かアドバイスを頂ければと思い、ここに来ました。

答えにくい質問だとは思いますがどなたかアドバイスを
いただけると助かります。
お願いします!
0128デフォルトの名無しさんNGNG
宿題スレに池
0129ルナNGNG
どこにあるんですか?
0130デフォルトの名無しさんNGNG
>>126
商用 UNIX なら今でも入っています。フリーでは sccs 互換の cssc というプログラムが
あったんですが、今探したら見つかりませんでした。
0131デフォルトの名無しさんNGNG
>>130
商用だと素で SCCS が入ってることが多いんだけど。
互換のやつはこれだよね。
http://cssc.sourceforge.net/index.shtml
0132デフォルトの名無しさんNGNG
>>127
意味不明かつ意図が分からん。
0133デフォルトの名無しさんNGNG
おれもよくわからんが、
「あなたの考えを述べなさい」だから、
「その内容では、何を言いたいのか分かりません」
でもいいんじゃないかと思った。
0134デフォルトの名無しさんNGNG
Linuxでプログラミングの勉強を始めようと思っていまつ。
pythonから始めたほうがいいとハッカーサイトに書いてあったのでつが
なにを組んでいいのかわかりません。
Cは少し勉強したことがありまつ。

ハッカーになりたいのでつ
よろしくでつ
0135デフォルトの名無しさんNGNG
>>134
ハッカーになりたいならインタープリタを書くのがお勧め。
最初は電卓とか、初期設定ファイル用のパーサからかな。
0136デフォルトの名無しさんNGNG
>>135
ありがとうございまつ。
やっぱりpythonからでつか?

がんがってみまつ。
0137デフォルトの名無しさんNGNG
>>136
インタプリタ「を」書く。
python用のインタプリタを書くつもりなら別にいいけど。
0138デフォルトの名無しさんNGNG
とりあえずCやっとかないと、カーネルソースすら読めねぇって。
0139デフォルトの名無しさんNGNG
scheme のインタプリタが楽だよね。
0140デフォルトの名無しさんNGNG
ワシらの若い頃は「おまえ scheme の処理系も書けないの、プ」とか「おまえ
エディタも書けないの、プ」とか「おまえ版管理ソフトも書けないの、プ」と
か言われたもんじゃ…。

パーサ、メモリ管理、ファイル処理、文字列検索、文字列比較、か。なるほど。
0141デフォルトの名無しさんNGNG
>>137-140
ありがとうございまつ
0142デフォルトの名無しさんNGNG
最近はみんなマルチメディア方面に一所懸命で
記号処理ツールの作成はやらないのではないかな。
0143デフォルトの名無しさんNGNG
>>110でsetitimerの時間がずれるって書いたけど単に別の部分のalarmと競合して
itimerが無効になってただけだった・・
どうりで指定した時間になっても終わらないはずだ。
とりあえずkillallでなんとか思い通りに止まってくれました。
0144デフォルトの名無しさんNGNG
>>143
sleepとalarmは競合する。
0145デフォルトの名無しさんNGNG
競合すると言うか、sleep がシグナル (SIGALARM) で割り込まれるだけだと思うが。
0146デフォルトの名無しさんNGNG
>>142
マルチメディア方面と言っても、
JPEGやMPEG1のdecodingなど>>140とたいして変わりないよね。
0147デフォルトの名無しさんNGNG
UNIXでマルチメディアだ、とか聞くと笑っちゃうよ。

だってうんこsh画面のイメージが強すぎて、
こんなんでマルチメディアできんの??
とか先入観入って思わずSGIとかの存在忘れちゃうしよ。
ウププ

ところで本当にできてるの?
UNIXでマルチメディア(禿藁
0148デフォルトの名無しさんNGNG
できているよ。
真のマルチメディアはUNIXにあり
0149デフォルトの名無しさんNGNG
ほんとに?(藁
だってうんこshが
0150デフォルトの名無しさんNGNG
>>148
相手すんなよ。
0151デフォルトの名無しさんNGNG
ていうかさ、うんこsh使ってる人って、
マルチメディアが何だかわかってる?(藁
絶対わかってないよね。
コワー(藁
0152デフォルトの名無しさんNGNG
マルチメディア?
扱うデータ形式の操作やとりまわしが面倒なだけなような
だれか他の特質を回答希望

>>151
だれならわかっているかを回答よろしく
0153デフォルトの名無しさんNGNG
>>151
先生!
「マルチメディア」って分かりません。
マルチメディアってなんですか?
0154デフォルトの名無しさんNGNG
○血メディア
0155デフォルトの名無しさんNGNG
マルチメディアという term が相当古い感じはするけど、グラフィックやるにも X じゃ
オーバーヘッドが大きそうな気はする。SGI が頑張っていた頃はそうでもなかったのかな?
サウンド関連は知らない。
0156デフォルトの名無しさんNGNG
Macはそこそこがんばってる。
糞重いけど。
0157デフォルトの名無しさんNGNG
>>155
> オーバーヘッドが大きそうな気はする。

想像で言うなよ。お前知識(というか伝聞)が古すぎだよ。
0158デフォルトの名無しさんNGNG
>>156
一般利用者はMac OS Xでいいだろうけど、
この板のメインキャストであるプログラマから観たら、
糞APIと糞言語のシステムだな。
0159デフォルトの名無しさんNGNG
普通にtelnetで入ってgccとか使ってる分にはその辺のUNIXと変わらない。
0160デフォルトの名無しさんNGNG
0161デフォルトの名無しさんNGNG
>>157
今の X は、Windows みたいなカーネル空間に一部突っ込んじゃう様な実装に比べても、
十分な速度が出てるって言ってます?
0162デフォルトの名無しさんNGNG
>>161
きょうびのハードじゃ「カーネル空間に一部突っ込んじゃう」必要性はあんまりないのでは?
むしろ...
0163デフォルトの名無しさんNGNG
俺のイメージね。

X: ウィジェット毎にソケット作るよ。
Win: GDI はカーネルモジュールだよ。
0164デフォルトの名無しさんNGNG
Xももはやビットマップ転送にしか使われてないねぇ
それならもうカーネルの近くに入ってもいいと思うよ
0165デフォルトの名無しさんNGNG
Xはうんこだろ
0166デフォルトの名無しさんNGNG
>>161>>163
DRI知らないでX11語るアフォな人々?
http://dri.sourceforge.net
0167デフォルトの名無しさんNGNG
>>166
くだらない煽りはUNIX板でやってくれないかな?
0168デフォルトの名無しさんNGNG
XがWindowsのように早いウィンドウシステムだったら誰も文句は言わないだろう。
0169デフォルトの名無しさんNGNG
Xのほうが早いですよ
0170デフォルトの名無しさんNGNG
>>168
どういう環境,用途で使うからXの速度に不満が出るの?
ちょっと興味がある.
ソフト,ハードとも教えてみてよ.
0171デフォルトの名無しさんNGNG
Xが遅いというとどうしてこうも必死な反応が返って来るんだろうか。
0172デフォルトの名無しさんNGNG
>>171
Xに依存してるものは多いですからね.
0173デフォルトの名無しさんNGNG
Xは速いよ。角度とか。
0174デフォルトの名無しさんNGNG
じゃーねー。
『Xlibがとにかく遅い!!』
『Xlibのオーバヘッドがでかくて我慢ならん!!!』
0175デフォルトの名無しさんNGNG
自分で書き直せば?
0176デフォルトの名無しさんNGNG
>>174
別に特殊な用途ではないのね?
ハードは何使ってるの?
OSは?
0177デフォルトの名無しさんNGNG
たかが描画命令程度でプロセス間通信するなんてオーバーヘッド多すぎ。
バカじゃねえの。
0178デフォルトの名無しさんNGNG
そういう設計なんだからしょーがないじゃん
0179デフォルトの名無しさんNGNG
>>177
それが律速段階になってるのは確認したの?

177は利用している環境(ハード,ソフト)が特殊なのか,
それともそれを感じる主観が特殊なのか?
0180デフォルトの名無しさんNGNG
バカ発見
0181デフォルトの名無しさんNGNG
(´-`).。oO(>>177は「律速段階」をググってる段階だと思うな)
0182179NGNG
>>179
もう一個あった.
私の主観が特殊って可能性もあるか....

まぁいいや.環境を晒してみてよ.
0183デフォルトの名無しさんNGNG
[現在このスレは、ほのかに荒れています。しばらく、そのままの状態でお待ち下さい。]
0184デフォルトの名無しさんNGNG
Xを使わずにすむならそうしたいねぇ
あんな古い設計はそろそろおさらばしたいところ
0185デフォルトの名無しさんNGNG
GnuFXが必要だろ
0186デフォルトの名無しさんNGNG
(´-`).。oO(Longhornでグラフィック関係がXやNT3.51のようにユーザモードに戻るの知らないのだろうか…)
(´-`).。oO(CSRSS.exeが明記されていないが、それ以外はNT3.51と全く同じ構造になるのよね)
(´-`).。oO(http://www.itmedia.co.jp/news/0310/29/l_avalon.jpg)
0187デフォルトの名無しさんNGNG
Longhorn駄目じゃん。こりゃ当分デスクトップはWindows2000のままだな。
0188デフォルトの名無しさんNGNG
プロセス間通信と区別が付いてない馬鹿発見
0189デフォルトの名無しさんNGNG
>>188
何が違うの?
0190デフォルトの名無しさんNGNG
早く教えれ
0191186NGNG
>>188
誰が何とプロセス間通信の区別が付いていないのかわからないが、

LonghornでCSRSS.exeを使うと明記されていないので、NT3.51やXのようにCSRSS.exeやXサーバ
とプロセス間通信する形でグラフィック関係を実装するとはっきり明記されているわけではないん
だけど、ぱっと見ではNT3.51に戻るようにしか見えないのよね。

Window ManagerもNT3.51と同じようにユーザモードに戻るので、少なくともWindowの処理には
Window Managerとのプロセス間通信が必要になるし、通常の描画処理にしても、CSRSS.exeや
win32k.sysなど単一のコンポーネントが管理するモデルを変更するとは思えない。
0192デフォルトの名無しさんNGNG
> 少なくともWindowの処理には
> Window Managerとのプロセス間通信が必要になるし

馬鹿発見
0193デフォルトの名無しさんNGNG
粘着うぜえ
スレ違いだろ
0194デフォルトの名無しさんNGNG
>>192
早く教えれ
0195186NGNG
>>192
ああ、そうか。必ずしもWindow Managerをプロセスとして実装する必要はないのか。

でも、その場合でも、画面という単一のリソースを複数のアプリからアクセスすることになる以上、
画面に対する排他制御が必要になり、そのため画面の一部になるWindowの管理や描画には、アプリ
ケーション間でプロセス間通信してWindowのロック等をすることになるから、どっかでプロセス間
通信が必要になることには変わりない。

それに、Windowの管理のためのリソースは排他制御のため他のアプリからアクセスできる場所にある
必要があり、かつその場所が独立したWindow Managerユーザプロセス内部ではないとすると、カー
ネルがリソースを保持することになり、Window Managerがユーザモードに移ることと矛盾するぞ。

プロセス間通信なしにユーザモードだけでどうやってWindow管理できるか教えてくれ。アフォなんで
わからん。
0196デフォルトの名無しさんNGNG
TCP/IPはリソース共有してるが、使うのにプロセス間通信してないぞ。
0197デフォルトの名無しさんNGNG
え
0198デフォルトの名無しさんNGNG
> カーネルがリソースを保持することになり、Window Managerが
> ユーザモードに移ることと矛盾するぞ。

(´-`).。oO(Window Managerがユーザモードに移るって誰が言ったんだろう)
0199デフォルトの名無しさんNGNG
>>198
仮定の話だよ。池沼は話の流れが読めないのかそうか。
0200デフォルトの名無しさんNGNG
いいから

>プロセス間通信と区別が付いてない馬鹿発見

これについて教えれ
0201デフォルトの名無しさんNGNG
>>198
>>186
> (´-`).。oO(http://www.itmedia.co.jp/news/0310/29/l_avalon.jpg)
をよく見れ。

NT3.51とNT4.0/2000は
http://www.atmarkit.co.jp/fwin2k/insiderseye/watchdd002/whatwdm1-1.html

特にNT4.0の
http://www.atmarkit.co.jp/fwin2k/insiderseye/watchdd002/winnt4arch.gif
0202デフォルトの名無しさんNGNG
スレ違いというのが分からないのか・・・
0203デフォルトの名無しさんNGNG
最後にXの話に戻れば許すからたまには実のある話聞かせろ知ったか連中が
0204デフォルトの名無しさんNGNG
やっぱマイクロカーネル&マルチOSサーバ最強だよな。
またHurd使い始めるかな。
0205: デフォルトの名無しさん NGNG
おまえら本とに亜ふぉだな(w
まあおれはBSD使ってるから大丈夫だけどな。
0206デフォルトの名無しさんNGNG
何が大丈夫なんだ?w
0207デフォルトの名無しさんNGNG
>>205
おまえもか。おれもさ。
お互い勝ち組でいこうや
0208デフォルトの名無しさんNGNG
OSぐらい選り好みせずになんでもバリバリ使え。
0209デフォルトの名無しさんNGNG
Linuxを使っている俺は負け組か・・・
0210デフォルトの名無しさんNGNG
LinuxでSIGSEGVやSIGFPEなどのエラーシグナルが発生した場合に、C++の例外を送出したいのですが、どうしたらいいでしょう?
シグナルハンドラの中から例外を出してもうまくいきませんでした。。。
0211デフォルトの名無しさんNGNG
出来ません。
0212デフォルトの名無しさんNGNG
>>210
>LinuxでSIGSEGVやSIGFPEなどのエラーシグナルが発生した場合に、
そのシグナルを出すことがむしろ問題だぞ。
バグのあるソースを修正しろYO。
0213デフォルトの名無しさんNGNG
>>204-205
そうか、マイクロカーネルな BSD であらせられる Mac OS X 様は最高か!
0214211NGNG
>>212
そう言う問題じゃないですYO!
0215デフォルトの名無しさんNGNG
>>210
static SignalCode = 0;

static void Handler(int Code){
  SignalCode = Code;
}

sigaction(SIGSEGV, Handler の登録);
sigaction(SIGFPE, Handler の登録);
try {
  /* なんかの処理 */
  if(SignalCode != 0) throw SignalCode;
  /* なんかの処理 */
  if(SignalCode != 0) throw SignalCode;
  /* なんかの処理 */
  if(SignalCode != 0) throw SignalCode;
} catch(int Code){
  /* シグナルの処理 */
}

とやるぐらいしか思いつかん。

>>212
SIGSEGV や SIGFPE の原因が必ずしもソースにあるわけじゃないぞ。
0216デフォルトの名無しさんNGNG
何故そんな不気味なSIGNALをキャッチしたいのか、むしろ仕様を疑うぞ。
それとも、そのアプリがうまく動く自身が無いのか?
0217デフォルトの名無しさんNGNG
>>216
「SIGSEGV や SIGFPE が発生した場合には、C++の例外を投げる」
という仕様を与えられて数値計算か何かのライブラリを作ってるんじゃないの?
0218デフォルトの名無しさんNGNG
いずれにしても変な仕様。
0219デフォルトの名無しさんNGNG
0220デフォルトの名無しさんNGNG
C99 floating point rounding and exception handling は知ってるのかな?
feclearexcept, fegetexceptflag, feraiseexcept, fesetexceptflag, fetestexcept
0221デフォルトの名無しさんNGNG
SIGSEGVは?
0222デフォルトの名無しさんNGNG
>>221
落ちてやるのがみんなのためかと。
0223デフォルトの名無しさんNGNG
UNIX のソースを開いたとき CL という
小さい文字が改行の位置に出てくるのですが・・・
これは何なのでしょう
0224デフォルトの名無しさんNGNG
改行コード
0225デフォルトの名無しさんNGNG
改行じゃなく改頁でしょ。
0226デフォルトの名無しさんNGNG
>>223
印刷時にそのコード(CL)で改ページするって奴ね。
0227デフォルトの名無しさんNGNG
C-Lか? (FF, '\f')

http://www.google.com/search?q=foldoc+form+feed&sourceid=mozilla-search&start=0&start=0&ie=utf-8&oe=utf-8
0228デフォルトの名無しさんNGNG
CR+LF の C と L を取って CL って事は無いかな?
ローカルに持ってくる時に改行コードが変わったとか。

何にしてもエディタ依存の様な。
0229デフォルトの名無しさんNGNG
>>226
>>223の話を聞くと1行ごとに改ページが入っていそうな。
0230デフォルトの名無しさんNGNG
>>223
使ったエディタと読んだソースを書け。
0231デフォルトの名無しさんNGNG
うわ!改頁コードを知らない初心者がこんなにいるとは...
0232デフォルトの名無しさんNGNG
「改頁コード」なんか知らん。
0x0C の事なら書式送り (form feed) だし、FF とか ^L と表すからね。
0233デフォルトの名無しさんNGNG
書式送りは改頁に使うとは決められていないから、一行毎に入っていても
エディタによっては普通に見られるね。
0234233NGNG
見られるってのは読めるって意味ね。

>>223
元は tar.gz でアーカイブされたファイルじゃなかった?
0235デフォルトの名無しさんNGNG
COBOLERはみんなそういうワ
0236デフォルトの名無しさんNGNG
>>232
> 「改頁コード」なんか知らん。

改頁コード: 65件
改ページコード: 219件

書式送り: 109件
0237232NGNG
>>236
ホントだ。プリンタ由来の単語みたいだね。JIS 的にも「改頁」なのかな。
プレーンテキストでは FF の意味は決まってなかった気がするけど。
0238デフォルトの名無しさんNGNG
つぅか使わん。
0239デフォルトの名無しさんNGNG
/::::::::::::::: ..:::::::::::::::i、::::::::::::::::::::'、':,.    /  ヽ
  /::::::::::: ....:::::::::::::::::::::i:::!`、:ト、::::::::::::i i!   /     i >>238
 i   ...::::::|'、ヽ;::::::::::::::|,!:!__リ,,'iヽ::l''、:'、  /     /
 | ..::::::::;:::i!:i ヾ:、ヽ:::::::::| リ , -─ リ i;il:ヽ, i    /    あはははは〜
 l:::::::::::::::i',i ':i ,メ、 \;:l '゙    `、 !::::/l ...::::::/``ヽ
 l::ヽ:::::ヽ:i,レ',.゙-‐''''         ',/'/..::::::::::/    l'ヽ;、  
  i:::::>、:ヾ,' /     _,.. -‐'ヾi    ,レ'::::::::::;r':..   /  i_\
  i:::i. `'‐,ゝ    i"     '! ,.‐''" :::::::::::i゙::::::::.../.  ノ 'i    
   !::\ `ヽ    ':,     l{   ..:::::/::L,. ‐'":::::;/  !
   l::::::::`''‐r\    ヽ.,__,.ノィ'‐-‐''"'ォ‐--,゙弋''''"::::::;.ノ
   |::::::::;ィ:::}、 ``'''─--、-‐ニ┤ ___ハ,`''ーヽ-'=‐''"

0240デフォルトの名無しさんNGNG
/::::::::::::::: ..:::::::::::::::i、::::::::::::::::::::'、':,.    /  ヽ
  /::::::::::: ....:::::::::::::::::::::i:::!`、:ト、::::::::::::i i!   /     i >>232
 i   ...::::::|'、ヽ;::::::::::::::|,!:!__リ,,'iヽ::l''、:'、  /     /
 | ..::::::::;:::i!:i ヾ:、ヽ:::::::::| リ , -─ リ i;il:ヽ, i    /    あはははは〜
 l:::::::::::::::i',i ':i ,メ、 \;:l '゙    `、 !::::/l ...::::::/``ヽ
 l::ヽ:::::ヽ:i,レ',.゙-‐''''         ',/'/..::::::::::/    l'ヽ;、  
  i:::::>、:ヾ,' /     _,.. -‐'ヾi    ,レ'::::::::::;r':..   /  i_\
  i:::i. `'‐,ゝ    i"     '! ,.‐''" :::::::::::i゙::::::::.../.  ノ 'i    
   !::\ `ヽ    ':,     l{   ..:::::/::L,. ‐'":::::;/  !
   l::::::::`''‐r\    ヽ.,__,.ノィ'‐-‐''"'ォ‐--,゙弋''''"::::::;.ノ
   |::::::::;ィ:::}、 ``'''─--、-‐ニ┤ ___ハ,`''ーヽ-'=‐''"
0241デフォルトの名無しさんNGNG
>>239-240

今年の流行語大賞はコントロールブレイクとか本気で思ってる人ですか?
0242デフォルトの名無しさんNGNG
画像ソフトを作成しているのですが、
libpngを使い、ダイナミックリンクで読み込んでいます。

これをlibpngが導入されていない環境では、
使用せず、導入されている環境では使用するような方法はあるのでしょうか?
スタティックリンクは使いたくないので・・・。

すいませんが、お願いします。
0243デフォルトの名無しさんNGNG
>>242
コンパイル時だったら
$ ./configure <---------
$ make
# make install

実行時の判断は??? >>243
0244デフォルトの名無しさんNGNG
-実行時の判断は??? >>243
+実行時の判断は??? >>245
0245デフォルトの名無しさんNGNG
#include <stdio.h>
0246デフォルトの名無しさんNGNG
dlopen()?
0247デフォルトの名無しさんNGNG
>>246
へー,面白そう.
0248デフォルトの名無しさんNGNG
実行時の判断て,libcのバージョン違ったらどうするんだ?
バイナリ配布なら,staticにリンクするべき。
0249デフォルトの名無しさんNGNG
>>248
そんなに愉快にI/Fは変わらないので問題なしです。
0250デフォルトの名無しさんNGNG
>>248
本題とはずれるけど、glibcではsymbol versioningが使えるらしい。
ttp://www.gnu.org/software/libc/FAQ.html#s-1.17
0251デフォルトの名無しさんNGNG
signalの使い方がが良く見えないんで教えてください。

1. longjmp( )は、シグナルハンドラからの使用を考慮されている、
あるいは使用例としてよく出てくるんですが
実際、シグナルハンドラからのlongjmp( )は安全ですか?
というのは、3Cの関数あたりからシグナルが発生したときに
メモリリークやなにかの状態不一致など発生しないよう考慮されているんでしょうか?

たとえば、malloc( )の中でメモリブロックのチェインを組み替えている
途中でシグナル ->longjmp( ) ->組み換え中おメモリブロックは忘れ去られたまま
なんてことにはならないようになっているんでしょうか?


2. シグナルハンドラとそうでない部分との排他制御は
そうでない部分で、シグナルをマスクするだけで十分ですか?

3. シグナルハンドラが実行されているさいちゅうに
多重に呼び出されることはありますか?
0252デフォルトの名無しさんNGNG
タイプミス。

s/組み換え中おメモリブロックは忘れ去られたまま/組み換え中のメモリブロックは忘れ去られたまま/

ごめんなさい。
0253デフォルトの名無しさんNGNG
>>251
1.シグナル受信時は即時にハンドラを起動しない。
 malloc時はアトミックに処理するはず。
2.>シグナルハンドラとそうでない部分との排他制御は
 >そうでない部分で、シグナルをマスクするだけで十分ですか?
 言ってる意味がわからん。そうでない部分とは?
3.>シグナルハンドラが実行されているさいちゅうに
 >多重に呼び出されることはありますか?
 何が多重かわからんのだが、シグナルハンドラ処理時に同じシグナルを受けた場合は
 ブロックする。多重には実行されない。

RTFM
0254デフォルトの名無しさんNGNG
遅レスだが、
>>210
>LinuxでSIGSEGVやSIGFPEなどのエラーシグナルが発生した場合に、C++の例外を送出したいのですが、どうしたらいいでしょう?
>シグナルハンドラの中から例外を出してもうまくいきませんでした。。。
もし、バグでメモリを破壊していてSIGSEGVになったらどうする?
その作りは、信号が赤信号であるのにそのまま突っ走るようなものだな。
いつか衝突するぞ。そして原因究明が困難なものになるだろう。
0255デフォルトの名無しさんNGNG
>>251
> というのは、3Cの関数あたりからシグナルが発生したときに
> メモリリークやなにかの状態不一致など発生しないよう考慮されているんでしょうか?

それは君の仕事です。

> 2. シグナルハンドラとそうでない部分との排他制御は
> そうでない部分で、シグナルをマスクするだけで十分ですか?

シグナルに対する排他としては十分です。
ブロックされている間シグナルはプロセスに運ばれませんから。

> 3. シグナルハンドラが実行されているさいちゅうに
> 多重に呼び出されることはありますか?

UNIXによって方言があります。最近のは全部ブロックするはずですが。
0256デフォルトの名無しさんNGNG
>>254
そう言ったらあるWindows鯖ソフトの作者にバカにされたよ。
そいつは嬉々として一般保護違反を隠しながら動く痛いソフトを神面して配布しているよ。
0257デフォルトの名無しさんNGNG
しかし、>>254の言うのも間違っていると思うよ。

(一部の)signalには、異常報告の意味があるけど、
その時にC++の例外を投げて欲しいというのは、
ごく自然な要望だ。
0258デフォルトの名無しさんNGNG
>>257
で、問題はそれを誰に投げるかって話だな。
0259デフォルトの名無しさんNGNG
>>251
POSIX的にはlongjmp()はsignal maskの扱いについてunspecifiedなんで、
できることならsiglongjmp()を使っとけ。
ttp://www.opengroup.org/onlinepubs/009695399/functions/longjmp.html

あと、このページ、
ttp://www.opengroup.org/onlinepubs/009695399/functions/xsh_chap02_04.html
特に下の方の async-signal-safe な関数の一覧も読んどけ。
0260デフォルトの名無しさんNGNG
>>253
> malloc時はアトミックに処理するはず。

本当ですか?
0261デフォルトの名無しさんNGNG
アトミックってなんですか?
ひょっとしてアトムの弟ですか?
0262デフォルトの名無しさんNGNG
そりゃコバルト・・・は兄か。
0263デフォルトの名無しさんNGNG
>>260
RTFS
0264デフォルトの名無しさんNGNG
>>263
http://www.science.uva.nl/~mes/jargon/r/rtfs.html
これ?
0265デフォルトの名無しさんNGNG
Read The Fucking Sourceウケタ
0266デフォルトの名無しさんNGNG
Cで可変長のCSVを切り出すのは面倒。
なんかいいライブラリないの?
0267デフォルトの名無しさんNGNG
strtok()を使ったり,strchr()で地道にやれか...。
0268デフォルトの名無しさんNGNG
Cで簡単にできる文字列処理などない。
0269デフォルトの名無しさんNGNG
Cで簡単にできる処理などない。
0270デフォルトの名無しさんNGNG
>>266
C++だったらboost::tokenizerとかあるけど
0271デフォルトの名無しさんNGNG
アトミックってたってどの次元でアトミックなのかが問題だろ。

1.スレッドに対してアトミックなのか?
2.シグナルに対してアトミックなのか?
3.プロセッサに対してアトミックなのか?

3ならば1,2を満たす。1と2は無関係。

ここで問題なのは2なんだが、mallocがアトミックなのは1じゃないのか?
0272デフォルトの名無しさんNGNG
>>271
スレッドに対してアトミックでも嬉しくも何ともない予感。
別のスレッドが確保してるであろうメモリに非同期にアクセスしに行くなんて自殺行為な訳で。

とか煽りつつどんなメリットがあるのか聞いてみたいテスト。
0273デフォルトの名無しさんNGNG
>>272
>>271 は、malloc() がスレッドセーフであろう、というようなことを言ってると思われ。
そうして、もちろんそうでなければ使い物にならない。
0274271NGNG
>>272

>別のスレッドが確保してるであろうメモリに
>非同期にアクセスしに行くなんて自殺行為な訳で。
>とか煽りつつどんなメリットがあるのか聞いてみたいテスト。

では煽られつつ答えるテスト。

malloc( )はヒープというプロセスに1つ、スレッド間で共有された資源
の操作をする関数。

獲得以降がスレッド個別の資源だと仮定すると、
malloc( )は共有資源を個別資源にする関数。

そのためには共有資源への操作が必要。

だからアトミックである必要がある。
当然free( )も同様。

>別のスレッドが確保してるであろうメモリに
>非同期にアクセスしに行くなんて自殺行為な訳で。

非同期にアクセスしたら死ぬけど、
非同期にならんようにミューテックスとかあるんじゃないのか?
0275デフォルトの名無しさんNGNG
ふと思ったけどアトミックと排他処理って同じもんなの?

いくら排他しても処理途中で割り込まれる要素があればそれはアトミックとは言えない気がします。
0276271NGNG
>>275

いや俺も同じではないと思うが、
話を合わせている都合上、そうなってしまった。
すまん。
0277デフォルトの名無しさんNGNG
LISPのアトムも分解できるわけだが
0278デフォルトの名無しさんNGNG
ウランちゃんの衣服を分解・・・ハァハァ
0279デフォルトの名無しさんNGNG
何か誤解されたわけだが
0280デフォルトの名無しさんNGNG
排他することでアトミックであることを確保するんですよー
0281デフォルトの名無しさんNGNG
用語の使い方って難しいね。
おそらく中途半端な知識を持ってる人が結構誤解するのかもね。
0282デフォルトの名無しさんNGNG
>>251
> 1. longjmp( )は、シグナルハンドラからの使用を考慮されている、
> あるいは使用例としてよく出てくるんですが
> 実際、シグナルハンドラからのlongjmp( )は安全ですか?
ttp://www.opengroup.org/onlinepubs/009695399/functions/xsh_chap02_04.html
より引用。
> In the presence of signals, all functions defined by this volume of
> IEEE Std 1003.1-2001 shall behave as defined when called from or
> interrupted by a signal-catching function, with a single exception:
> when a signal interrupts an unsafe function and the signal-catching
> function calls an unsafe function, the behavior is undefined.

で、malloc()もlongjmp()もsiglongjmp()もsignal unsafe。
よって、「malloc()中にシグナル発生 → シグナルハンドラ内でlongjmp()
(またはsiglongjmp())呼び出し」となった場合の動作は「undefined」。
実際にglibcのソースを眺めてみたが、シグナルに対して特別なことをやっては
いないみたいだから、メモリリークやデッドロックが発生する可能性があるな。

> 2. シグナルハンドラとそうでない部分との排他制御は
> そうでない部分で、シグナルをマスクするだけで十分ですか?
OK.

> 3. シグナルハンドラが実行されているさいちゅうに
> 多重に呼び出されることはありますか?
ここらへんについては、BSD由来のsignal()とSysV由来のsignal()とで
挙動が大きく違っていたが、新しいシグナル操作関数であるsigaction()では
そこら辺の混乱が解消されている。
ttp://www.opengroup.org/onlinepubs/009695399/functions/sigaction.html
SA_NODEFERの項を見よ。
0283282NGNG
ちなみに↓に書いてあるように、malloc()はthread-safeではある。
ttp://www.opengroup.org/onlinepubs/009695399/functions/xsh_chap02_09.html
すなわち、複数のスレッドが同時にmalloc()を呼び出しても安全ということ。
0284デフォルトの名無しさんNGNG
閑話休題:
割とメジャーなもので SIGSEGV をトラップしているものとしては、mpeglib なんかがある。
これは、MPEGデコーダの性質上

・入力データは外部から与えられるため、信用できない(変なデータって実は結構ある)
・デコード処理は高速性が求められるため、最も内側のループにはエラーチェックを入れにくい
 (実際のとこチェック不可でエラーが発生する箇所は、DCテーブルの再構築時がほとんどみたいです)
・エラーが発生したとき、止めるよりはちょっと画像が乱れるだけで動いてくれた方が(大抵は)うれしい
・ストリームを適当に先へ進めば、エラーをリカバリできるポイントが見つかる

から。
IA32 でいうところの 0:32 モデルじゃなくて、怪しげな操作をするときには 32:32 で
厳しくアクセス可能な範囲を限定したポインタが使えるとこういうとき便利っぽいですよね。
0285デフォルトの名無しさんNGNG
>>284
もうしわけありません。
どうもSIGSEGVをトラップする利点がわかりません。
SIGSEGVがある特定の区間以外発生することは無いっていうことなのでしょうか?
0286デフォルトの名無しさんNGNG
>>284
>IA32 でいうところの 0:32 モデルじゃなくて、怪しげな操作をするときには 32:32 で
>厳しくアクセス可能な範囲を限定したポインタが使えるとこういうとき便利っぽいですよね。
これってどういう意味なのでしょうか?
0287デフォルトの名無しさんNGNG
>>286
ごめんなさい。16:32 の間違いでした。
セグメント(セレクタ)16bit, オフセット32ビットのポインタを使ったメモリアクセスのことです。
0288デフォルトの名無しさんNGNG
>>285
既に 284 で4つ理由を書いています。
どれに同意できない(あるいはわからない)のですか?
0289デフォルトの名無しさんNGNG
話は変わるが主婦が家庭裁判所で訴えられるってどういう状況?
0290デフォルトの名無しさんNGNG
このスレ的にはUNIXプログラマと浮気した場合かな。
0291デフォルトの名無しさんNGNG
つーか、Java VMとかでもJITコンパイラを搭載しているようなやつは
ぬるぽ^H^H^H NullPointerException を検出するために
SIGSEGVをトラップしているものが多い。
# もちろんSunのHotspot VMもそう。
0292デフォルトの名無しさんNGNG
>>291
ガッ!!^H^H^H^H
0293デフォルトの名無しさんNGNG
>>284
リカバリなんてできるんですか?
0294デフォルトの名無しさんNGNG
>>284
>・入力データは外部から与えられるため、信用できない(変なデータって実は結構ある)
>・デコード処理は高速性が求められるため、最も内側のループにはエラーチェックを入れにくい
> (実際のとこチェック不可でエラーが発生する箇所は、DCテーブルの再構築時がほとんどみたいです)
>・エラーが発生したとき、止めるよりはちょっと画像が乱れるだけで動いてくれた方が(大抵は)うれしい
>・ストリームを適当に先へ進めば、エラーをリカバリできるポイントが見つかる
これはSIGSEGVになる可能性があるという作りだってことですか?
そもそもSIGSEGVにならないように作らなければならないと思っていたのですが。
0295デフォルトの名無しさんNGNG
>>293-294
コードのこの範囲でSIGSEGVが発生する可能性があってそれはこうこうこういう状況で
その時はこうすればリカバリできるって完全に把握してSIGSEGVを受けとる場合がある
のよ。
普通のプログラムがバグなんかで予測してない挙動してSIGSEGVで落ちてるような状況
とは違う。
そういうプログラム書いてる時にバグ作りこんじゃうとどつぼにはまるけどね。
0296デフォルトの名無しさんNGNG
・デコード処理は高速性が求められるため、最も内側のループにはエラーチェックを入れにくい
 (実際のとこチェック不可でエラーが発生する箇所は、DCテーブルの再構築時がほとんどみたいです)

↑こんなの絶対に使いたくねー!!
0297デフォルトの名無しさんNGNG
冬ソナファンは民主党に投票しよう!  投稿者:わんこ 投稿日:2004/07/08 22:16 No.622
わたしはそれは在日韓国人に対する差別だと思うんです。
第二次大戦中の日本国民の韓国人に対する強制徴用、大量虐殺に始まり
今日での在日韓国人に対する差別。
その最たるものが在日韓国人に参政権がないことです。
日本人と同じく税金を払い義務を果たしているにもかかわらず、です。
ところが今回の参院選ではなんと民主党が在日韓国人に参政権を与えることを公約としています。
そこで我々冬ソナファンがヨン様の国、韓国の人々のために
立ち上がろうではないですか!!
冬ソナファンの力で民主党に政権を取らせ、在日韓国人の参政権獲得の手助けをしましょう!!
ヨン様のためにがんばろう!!!
0298デフォルトの名無しさんNGNG
>>295
>コードのこの範囲でSIGSEGVが発生する可能性があってそれはこうこうこういう状況で
>その時はこうすればリカバリできるって完全に把握してSIGSEGVを受けとる場合がある
>のよ。
SIGSEGVが発生する可能性がわかっているならば、そうならないように作るべきでは?
それを知っていてあえてSIGSEGVを受信するような作りがよくわからないのです。
それが仕様であることはわかるんですけど、自分はその仕様に納得がいきません。
0299デフォルトの名無しさんNGNG
>>298
そうならないように自前のチェック入れると処理が重たくなるということでは?
0300デフォルトの名無しさんNGNG
それで間違えて書いちゃうようならSEGVになった方が
まだ運がよくて、スタック書きつぶしたりしたら下手
すりゃセキュリティホールだよな。

間違えて読んじゃうだけならぎりぎりセーフ?
0301デフォルトの名無しさんNGNG
いやだから、
・SEGVが発生する条件は完全に特定できている(ゼロ除算とか)
・それを回避する方法も分かりきっているが、コストがかかるので避けたい
場合に使うんじゃないの。
0302デフォルトの名無しさんNGNG
>>298
納得がいかなくてもやらざるを得ない、時の手段ってことでしょ。リミター解除して高速飛ばすようなもん。
これぞまさしく「素人にはお勧めできない」。

玄人にもお勧めできないけど。
0303デフォルトの名無しさんNGNG
>>301
>・SEGVが発生する条件は完全に特定できている(ゼロ除算とか)
ゼロ除算ってSIGSEGVでしたっけ?
もしかして、SIGSEGVに限らずsignal全般ってことを言いたいのでしょうか?
0304デフォルトの名無しさんNGNG
>>299
>そうならないように自前のチェック入れると処理が重たくなるということでは?
高速化の為にSIGSEGVをあえてするか堅牢性をあげるためにセキュリティ重視をするかって言われたら、
自分は後者を選ぶ。
0305デフォルトの名無しさんNGNG
高速化の為にあえてSIGSEGVなプログラム書くこと自体が理解できない。
0306デフォルトの名無しさんNGNG
>>305
激しく同意。
mpeglibという名前からしてライブラリなんだろうけど、絶対に使いたくないな。
0307デフォルトの名無しさんNGNG
>>306
いや、使うところ違うし。
0308デフォルトの名無しさんNGNG
なんだプラグインか。
0309デフォルトの名無しさんNGNG
セキュリティはどうだっていいんだが(OSごとセキュアにすりゃいいという話もあるし)、
結局環境依存では。
0310デフォルトの名無しさんNGNG
ネットワーク共有メモリの実装にSEGVとメモリ保護使った書き込み検出を
してるライブラリが有って感心した記憶がある。変則的な手段だとは思う
けど、忌み嫌うほどでも無いと思う。
0311デフォルトの名無しさんNGNG
Garbage Collection でも使ってたりするね。
0312デフォルトの名無しさんNGNG
>>310
MS Windowsでも、その汚いけれども高速な手段を結構使ってるらしいですね。
0313デフォルトの名無しさんNGNG
>>309
ようするに、「動けばいいや」ってことですか?
であるならば、もう何も言うまい。
0314デフォルトの名無しさんNGNG
でもさー、signalってprocess globalなんだよなぁ
unixはそこがダサい
0315デフォルトの名無しさんNGNG
>>313
mpegのデコードの話だろ?
テーブル引くのに入力をチェックしないってだけじゃねーの?
不正な入力なら絵が壊れてもいいって割り切りでしょ。不正ならどうせ壊れるんだし。
0316デフォルトの名無しさんNGNG
>>314
プログラムの終了には全スレッドにシグナルを投げる必要がある?
0317デフォルトの名無しさんNGNG
>>314
process globalな割り込みが無いほうが困るのでは
0318デフォルトの名無しさんNGNG
ん、グローバル変数だって言いたいのか?
たしかにシグナルはグローバルな設定だが・・・
0319名無しさん@そうだ選挙に行こうNGNG
>>318
取りあえず晒しage
0320名無しさん@そうだ選挙に行こうNGNG
フリーのOSで鯖を作るならkqueueが最高?
0321名無しさん@そうだ選挙に行こうNGNG
>>320
?
0322名無しさん@そうだ選挙に行こうNGNG
>>314
posix realtime extension

ちなみに昔null accessをSIGSEGVのsignal handlerで処理している
Lisp処理系があった。まあ別に速くはなってないと思うが。
0323名無しさん@そうだ選挙に行こうNGNG
>>322
シグナルハンドラではグローバルなフラグを立てる感じ?

0324名無しさん@そうだ選挙に行こうNGNG
>>320
OS毎に非ポータブルなハイパフォーマンスAPIがあるからそれ使え。
それがkqueueとは限らない。
0325名無しさん@そうだ選挙に行こうNGNG
>>318
ライブラリAとライブラリBがsignalの奪い合いをする可能性がある、ってこと?
まああんまり気にしたことはないけど。

ああ、JavaでJNI使うときに一度ハマったねぇ
0326名無しさん@そうだ選挙に行こうNGNG
>>325
て言うかシグナルをトラップするようなライブラリ好んで使うなと。
0327名無しさん@そうだ選挙に行こうNGNG
>>323
いや、longjmpしてLispの(throw ...)へ突入。
0328名無しさん@そうだ選挙に行こうNGNG
あ、(throw 'ぬるぽ)って書くべきだった?
0329名無しさん@そうだ選挙に行こうNGNG
>>327
こうなると構造化もへったくれもないですな。
C++とかなら舜殺しそう。。。
0330251NGNG
251でsignalハンドラからのlongjmpについて
質問したものです。

回答してくださったみなさま、ありがとうございます。
参考にさせていただきます。

特に、>>282さんの回答は根拠もしめされてまして
大変なっとくいくものでした。
ありがとうございました。
0331魔方陣NGNG
学校の課題で魔方陣が出ました。でも全く説明がなくて・・・。

c 氏名 日付
   program pr2

integer a,i,j,k,l
parameter(n=3) !n は奇数
    dimension a(n,n)

print '(1x,a,i2)','pr2 魔方陣 n=',n
print *,'学生番号 氏名’
  
   do k=0,n-1
do l=0,n-1
i=(k+l)*2+(n+1)/2+2
j=l-k+(3*n+1)/2
a(mod((i-1),n)+1,mod((j-1),n+1)=n*k+l+1
end do
end do

do i=1,n
print '(9i5)', (a(i,j), j=1,n)
end do
end  
     
これは3×3で、課題はこれを9×9で計算して提出しろ、というものなんですが、
どこをどう変えればいいのかわかりません。
助けてください。 
0332名無しさん@そうだ選挙に行こうNGNG
宿題は宿題スレへ
0333名無しさん@そうだ選挙に行こうNGNG
>>314
Win32だとSEHがありますからね。
あれはtry - catch - finallyのセマンティクスで使えるから
ものすごく楽だし美しい

まあスタック巻き戻しの際にお掃除とかしてくれるわけじゃないから
C++ではいまいち使い物にならないけど
0334名無しさん@そうだ選挙に行こうNGNG
>>333
C++では普通に使用禁止です。
0335デフォルトの名無しさんNGNG
>>300あたりの人
喪前らが普通に使っている JPEG ライブラリ、MP3 ライブラリ、MPEGデコードライブラリの
大半はトンでもない不正データを食わせると sigsegv 起こしますよ。

んで、たかだか「入力ファイルが変」ってだけでバキバキ落ちる画像・動画再生プログラムは
ユーザに受け入れられませんよ。
0336デフォルトの名無しさんNGNG
> 大半はトンでもない不正データを食わせると sigsegv 起こしますよ。

それが検証できるデータはありますか?
0337デフォルトの名無しさんNGNG
あるよ
0338デフォルトの名無しさんNGNG
UNIXプログラマになるには、libcのソースコードを暗記しないとダメなんですか?
UNIXの世界で有名なミスターtheo氏がそのようなことを言ってましたが。
0339デフォルトの名無しさんNGNG
>>338
は?暗記してないの?
0340デフォルトの名無しさんNGNG
アン肝なにも俺が書いたわけだが
0341デフォルトの名無しさんNGNG
>>339
してるんですか?
0342デフォルトの名無しさんNGNG
gccのソースを暗記しよう

暗記パンとか使って
0343デフォルトの名無しさんNGNG
なんだその暗記パンって
0344デフォルトの名無しさんNGNG
>>343
忘れてくれ・・

世代の違い?
ドラえもん 暗記パン
あたりで検索してみて
0345 NGNG
>>341
当然だろ。
0346デフォルトの名無しさんNGNG
>>344
最後は食べ過ぎたのび太が自爆するんだっけか?

エネルギーを吸収する敵にはキャパ以上のエネルギーを叩き込んで自己崩壊を待つ。
昔のアニメの定石ですな・・・。
0347デフォルトの名無しさんNGNG
668 :デフォルトの名無しさん :04/07/12 22:28
rm -f calculation.o
gcc -g-c ship.h -lm
gcc:Compilation of header
file requested
make:***[calculation]
Error1

と出力されます.
今日初めてwindows環境でUNIXを使うのですが、これの解決策を教えて下さいませんか.
お願い致します.
デスクトップ上の問題なのでしょうか?
0348デフォルトの名無しさんNGNG
誰か翻訳コンニャクを
0349デフォルトの名無しさんNGNG
>>347 の今後の為にも、答えない方がいいのかな…
0350デフォルトの名無しさんNGNG
>>349
http://pc5.2ch.net/test/read.cgi/tech/1058134693/286
http://pc5.2ch.net/test/read.cgi/unix/1086622860/207
0351デフォルトの名無しさんNGNG
スティーブンスの詳解UNIXプログラミングすげーなコレ!!!
かなり高価だけど、真剣に読み進めてプログラミングを繰り返していくと
技術が腕に染み込んでいくのがわかる。
0352デフォルトの名無しさんNGNG
怖くて読めないな。
うわ〜染み込んでる〜。
0353デフォルトの名無しさんNGNG
頭には浸みないのか。
0354デフォルトの名無しさんNGNG
351は脳まで筋肉でできているような奴だから。
0355デフォルトの名無しさんNGNG
>>354
少し位筋肉がないとモテんぞ。
0356デフォルトの名無しさんNGNG
>>351はまじめないいレスじゃないか。いぢめるなよ。
0357デフォルトの名無しさんNGNG
実際スティーブンスの本は素晴らしいよね。
この人のネットワークプログラミングの本は、
今でも漏れのバイブルです。
0358デフォルトの名無しさんNGNG
日本人でもスティーブンスくらいドキュメンテーション能力のある人いないかね。
0359デフォルトの名無しさんNGNG
スティーブンスの本はUNIXの歴史が詰まってるところがよいわけで、
単にUNIXに詳しいだけの人がああいう本を書けるのかどうか。
0360デフォルトの名無しさんNGNG
スティーブンス氏は訴追の対象です。
0361デフォルトの名無しさんNGNG
cp パス パス/ファイル2> /dev/null
上のコマンドの>と/dev/null
の意味は何ですか?。
0362デフォルトの名無しさんNGNG
>>361
Linux板のくだ質逝け
0363デフォルトの名無しさんNGNG
>>361
環境と言語くらい書け。
0364デフォルトの名無しさんNGNG
cpってエラー以外なんか出力したっけ?
0365デフォルトの名無しさんNGNG
0個のファイルをコピーしました
0366デフォルトの名無しさんNGNG
「ファイル2」の2は、実は標準エラーの2というオチに1メセタ。
0367デフォルトの名無しさんNGNG
>>366
そうだと思うが、書いた本人が判って無いと思う。

0368デフォルトの名無しさんNGNG
>>364
上書き確認とか。
0369デフォルトの名無しさんNGNG
>>368
No such file or directory
Permission denied
とか、いろいろ。

0370デフォルトの名無しさんNGNG
>>369
cpって エ ラ ー 以 外 なんか出力したっけ?
0371デフォルトの名無しさんNGNG
俺のcpは元旦に「あけましておめでとうございます」って言うよ
0372デフォルトの名無しさんNGNG
cpに「できちゃったみたい」って言われたときはどうしようかと思ったよ
0373デフォルトの名無しさんNGNG
>>372
rm -rf
0374デフォルトの名無しさんNGNG
fork() して exec() する前ならまだ間に合う。kill しちゃいな。
0375デフォルトの名無しさんNGNG
ここは家庭不和なシェルスクリプトですね
0376デフォルトの名無しさんNGNG
>>374
親を殺して彼女は悪魔となりました。
0377デフォルトの名無しさんNGNG
winのようにspawnして産み捨て
0378デフォルトの名無しさんNGNG
でも、よく考えたら親が子が死ぬのを待つなんて非現実的だよな。(w
親の方が長く生き続けるっていう概念なのかな。
man 2 wait
まぁ、そもそも人間社会にあてはめること自体がおかしいのだけどね。
0379デフォルトの名無しさんNGNG
親が見捨てるとゾンビになるし
0380デフォルトの名無しさんNGNG
そりゃ正しくないような。unixは暗黒の世界なので死ぬと必ずzombieになる。
waitで正しく看取られて初めて成仏する。
親なき場合は神の子initが月に代わって成敗する。
0381デフォルトの名無しさんNGNG
成敗じゃねえだろうよ。
0382デフォルトの名無しさんNGNG
じゃあ、月に代わっておしおきですか?
0383デフォルトの名無しさんNGNG
forkって子供を産むというよりも単細胞生物の分裂みたいだよね。
0384デフォルトの名無しさんNGNG
メモリをwriteするごとに成長するプラナリア
0385デフォルトの名無しさんNGNG
んー、いまいちか。
0386デフォルトの名無しさんNGNG
印刷に関して教えてください。
unixとwindows双方から印刷できるようにLPDを使用しているのですが、
windows から lpr にて印刷する場合portなどを指定しなければならず、
パソコンをあまり使用しない人には使いにくいので、LAN接続されてい
るプリンタ一覧を表示したいのですが、プリンタ情報を取得するAPIな
どありますか?
0387デフォルトの名無しさんNGNG
unixと言ってもいろいろあるからなあ
商用ならサポートへ
フリーのやつなら環境書け
0388デフォルトの名無しさんNGNG
んー、場合によってはSNMPかなあ?
0389デフォルトの名無しさんNGNG
シェルの質問もここでいい?


1000,10,AB
2000,11,ABCDE
3000,12,AB

てな感じのテキストファイルを

1000,10,AB△△△
2000,11,ABCDE
3000,12,AB△△△

※△は全角スペースのつもり

でな具合に固定長になるよう空白埋めしたいんだけど、
この処理はシェルだけで実現できる?
0390デフォルトの名無しさんNGNG
その機能をもったシェルを自作汁
0391デフォルトの名無しさんNGNG
>>390
実は時間がなくて、シェルで組めないか時間がかかりそうであれば、
他の手段に切り替えないといけなくなってしまったのよ。
(書き方が悪かった。 スマソ)

やれば、なんとかできそうなのね。
0392デフォルトの名無しさんNGNG
お前,小学生か? 息子の作文でもみてる気分になるぞ。
時間がかかりそうって何だよ,糞野郎?
0393デフォルトの名無しさんNGNG
>>392
子は親の鏡ですからね。
0394デフォルトの名無しさんNGNG
>>389
awk呼び出してfilterしろよ。
0395デフォルトの名無しさんNGNG
>>394
うむ。できるね。
何かすぐCで考えちゃう自分に反省。
0396デフォルトの名無しさんNGNG
age
0397デフォルトの名無しさんNGNG
外部コマンドを使わずshellだけだとけっこう大変だね。
特にtestもexprもないようなshellだとかなりつらそうだ。
パズルとしては楽しめるかもしれない。

外部コマンドありならawkでもperlでも呼びゃ一発なので
つまらん。perlを呼ぶだけのスクリプトをshellスクリプト
と呼んでいいかというギモンはあるけどな。

ということでshellだけで書いたソース希望。
0398デフォルトの名無しさんNGNG
シェルって何の事意味してるの?
bash?csh?
0399デフォルトの名無しさんNGNG
シェルスクリプトというと /bin/sh に決まってるだろ
0400デフォルトの名無しさんNGNG
>>386
同一セグメント内の全アドレスへ対して、
snmp情報情報を取得して判断する、
TCPなら、9100番へconnectしてRSTが帰ってこないか、
UDPならICMPのエラー返答
などで判断するしかないんじゃない?

API一発はむり。
0401デフォルトの名無しさんNGNG
>>398
シェルって言ったらExplorerに決まってるだろ
0402デフォルトの名無しさんNGNG
>>386
UNIXでsamba動かして、printer serverやれば?
0403デフォルトの名無しさんNGNG
>>401
アホか。プログラムマネージャだ。
0404デフォルトの名無しさんNGNG
>>403
ばーか、DOSSHELL しかないだろ。
0405デフォルトの名無しさんNGNG
(-_-;)
0406デフォルトの名無しさんNGNG
#!/winnt/system32/explorer.exe
0407デフォルトの名無しさんNGNG
winntとは限らないだろ。馬鹿?
0408デフォルトの名無しさんNGNG
#!/dev/null
0409デフォルトの名無しさんNGNG
>>408
おまえんちの/dev/nullには+xが付いてる訳だな。
0410デフォルトの名無しさんNGNG
409=407
0411デフォルトの名無しさんNGNG
>>410
残念ながらハズレです;
0412デフォルトの名無しさんNGNG
>>407
環境に応じて各自書き換えるくらい常識だろ。
0413デフォルトの名無しさんNGNG
>>412
%WINDIR%

まぁ、両刀使いからしたら常識な訳だが。
0414デフォルトの名無しさんNGNG
 はじめてUNIXのプロジェクトやってて、TeraTerm使って
Winから接続してコンパイルしてんですけど、UNIXって
VC++みたいにステップ実行できる環境ってないんですか?

0415デフォルトの名無しさんNGNG
>>414
gdb。

emacsがあればモアベター
0416デフォルトの名無しさんNGNG
>>414
WindowsのcygwinのXFree86入れてdddとか。
0417デフォルトの名無しさんNGNG
UDPのソケット使っててselect待ちしてるんですけど、特定のFDが有効かどうかって判断できないでしょうか?
タイムアウト設定してポーリングっていうのは負荷がかかりそうなのであまりやりたくないです。
0418デフォルトの名無しさんNGNG
「有効」ってどういう状態?
0419デフォルトの名無しさんNGNG
夏だな。
0420デフォルトの名無しさんNGNG
VC++もgdbもステップ実行に見せかけてるだけ。
インタプリンタじゃあるまいし。
0421デフォルトの名無しさんNGNG
夏だな。
0422デフォルトの名無しさんNGNG
これが夏厨認定厨?
0423デフォルトの名無しさんNGNG
>>417
タイムアウト時間無しのselectに書けるというのはどうか?
0424デフォルトの名無しさんNGNG
>>422
取りあえず>>421みたいになんでも夏と言えば解決すると思ってる方がにわかに急増するのも夏ならではですね。
0425デフォルトの名無しさんNGNG
>>414
どこかで聞いたような… 

ステップ実行できない環境でも、不便に思ったことはないな。 作り方にもよるんだろうけど。
0426デフォルトの名無しさんNGNG
414とお前がデバッガを使いこなせていないことは関係ない
0427デフォルトの名無しさんNGNG
そこで、TRONですよ。
0428425NGNG
>>426
使いこなせていない… そうだな。 ここで愚痴ることではなかった。 すまんね。
0429デフォルトの名無しさんNGNG
sleep()
ってそんなに負荷かかるんですか?
0430デフォルトの名無しさんNGNG
>>429
実測なさい。
0431デフォルトの名無しさんNGNG
>>430
手法は?
0432デフォルトの名無しさんNGNG
>>431
好きになさい。
0433デフォルトの名無しさんNGNG
眠るのになんで負荷がかかるのよ
0434デフォルトの名無しさんNGNG
for(;;) sleep(0)したらヘビーループになるな
0435デフォルトの名無しさんNGNG
>>434
for(;;);
と
for(;;)sleep(0);
とはかなり意味が違う
0436デフォルトの名無しさんNGNG
むしろ、sleep(0)を書く方が分裂症。
0437デフォルトの名無しさんNGNG
実装によるかも知れんが取りあえずソース読んでからものを言えと。>>436
0438デフォルトの名無しさんNGNG
ソース公開されたOSばかりじゃない
0439デフォルトの名無しさんNGNG
>>438
じゃあベンチ取れば?
0440デフォルトの名無しさんNGNG
夏だな
0441デフォルトの名無しさんNGNG
>>440
で、解決しようとする奴が大量に沸くのも夏ならではでし。
0442436NGNG
>>437
何が言いたいのかはわかる。そしてそれは実装に依存しないか?
それに、1アプリがそこまで見込んで、やるべき処理なのかが疑問。
0443デフォルトの名無しさんNGNG
>>442
少なくともOSに制御は帰る・・・のか?
0444デフォルトの名無しさんNGNG
>>443
OS?カーネルの事だね。
0445デフォルトの名無しさんNGNG
>>437
そこまでするとなると、もはや制御系のコーディングだ。
0446デフォルトの名無しさんNGNG
>>445
制御系であんな高級なスケジューラを使わせてもらえる事なんて希です。
0447デフォルトの名無しさんNGNG
>>445
リアルタイムOSって制御系的な分類で良いんでしょうか?
0448デフォルトの名無しさんNGNG
どうしてそんなに分類したがるのだろう
0449句読点書けないバカをサマージャンボする俺NGNG
>>448
0450デフォルトの名無しさんNGNG
>>447
制御系ではリアルタイム性が必要なことが多いつーだけでしょ。

ちなみにリアルタイム性というのは、
ある事象に対して一定時間内に反応できることが保証される
みたいなこと。
0451デフォルトの名無しさんNGNG
ゲーム系
0452デフォルトの名無しさんNGNG
>>450
ハードリアルタイムはそう言う位置づけですね。
0453デフォルトの名無しさんNGNG
ソフトリアルタイムは似非リアルタイム
0454デフォルトの名無しさんNGNG
ソフトリアルタイム=クロックカウント派
似非リアルタイム=まあこんなもんやろ派
0455デフォルトの名無しさんNGNG
クロック数を数えたりして実行速度を上げることはリアルタイム性とは関係ない。
450が言うように、一定時間内に反応できることが「保証される」ということが重要。
一定時間がどれくらいかというのは用途によって異なる。
0456デフォルトの名無しさんNGNG
>>455
?
0457デフォルトの名無しさんNGNG
>>455
ものすごく多いプロセスを生成、実行しても保証されるわけ?
そういうことが可能なんですか?
0458デフォルトの名無しさんNGNG
>>457
実行形の資源が有限である以上そんなこと不可能なの常識で分かるでしょう。
0459デフォルトの名無しさんNGNG
それを一定の精度で保証するスケジューラを持ってるOSを
リアルタイムOSってゆーんじゃ?
0460デフォルトの名無しさんNGNG
>>458
では、そのリアルタイムOSのスペックには
最大同時生成プロセス数〜個とか書かれているのでしょうか?
0461デフォルトの名無しさんNGNG
動いてるプロセスすべてがリアルタイムなスケジューリングを必要とするわけじゃないでしょ。
0462デフォルトの名無しさんNGNG
>>461
そう言う場合もあるかも知れん。
0463460NGNG
>>461
いや、リアルタイムなOSみたこと無いんよ。
だからちょっと疑問に思ったわけですよ。

でも本当のところ内部はどうなってるんでしょうか?
0464デフォルトの名無しさんNGNG
明確な定義があるかどうかは知らないが
http://www.linux.or.jp/JF/JFdocs/RTLinux-HOWTO.html
0465デフォルトの名無しさんNGNG
リアルタイム+スケジューラでググっと。
0466460NGNG
>>464
ほう、なるほど。
ざっと見てみたが、うーむ、どうやって保証してるのでしょうか?
それとも、リアルタイムOSを使用する方は、
ある機器上でリアルタイムOSを動かし、計測しながら、
アプリを設計、作成していく物なんでしょうか?よくわからんが。
0467デフォルトの名無しさんNGNG
>>466
最終的にはそらそうでしょう。ユーザアプリの応答性なんぞ保証できん。
0468460NGNG
>>467
なるほどです。
0469デフォルトの名無しさんNGNG
全部保証するわけじゃないわな。
特定のカーネルスレッドだけ保証したりする訳よ。
後はそのオコボレのCPU使うわけ。
0470デフォルトの名無しさんNGNG
>>466
ユーザプロセスに対するリアルタイム性の「保証」って言うのは、例えば
・少なくとも 18msec 毎にプロセスにCPUが割り当てられる
・CPUが割り当てられた場合には、少なくとも5msecはCPU時間を消費することができる
という風にスケジューリングが厳密に行われる、ということです。

んで開発者はそれらの情報+ハードウェアのスペックに基づいて、
時間内に実行可能なアルゴリズムを選択してプログラムを書く。
ビデオ再生なら「720x480x30fpsはOKだ。でもAAC音声のデコードは無理なのでAC3にしよう」とか。
0471デフォルトの名無しさんNGNG
なんか全然ありがたくないな
0472デフォルトの名無しさんNGNG
どういうのがありがたいんだろう。。
0473デフォルトの名無しさんNGNG
>>471
馬鹿晒して嬉しいですか?
0474460NGNG
>>470
詳しい説明、ありがとうございます。
相当わかってきました。
0475デフォルトの名無しさんNGNG
ハードリアルタイムというのは存在しえないと、
申しているところあるようですが。
そうするとハードリアルタイムといってる達は、
誇大宣伝をうたってるという事ですか?
0476デフォルトの名無しさんNGNG
極論するとリアルタイム処理なんて存在しないことになる。
極論馬鹿はどこにでもいるからこればかりはどうしようもない。
0477デフォルトの名無しさんNGNG
>>475
誰がもうしているって?
0478デフォルトの名無しさんNGNG
システム依存の定数で

_SOMECOSTANT

__SOMECONSTANT

_SOMECONSTANT_

__SOMECONSTANT__

とか色々と異なるスタイルのものがありますが、
これらに何か意味があるのでしょうか?
0479デフォルトの名無しさんNGNG
>>478
なるべく他とかぶらないように♪
0480478NGNG
>>479
ということは、_がたくさん付いている変数ほど、新しく定義された変数ということでしょうか?
_がたくさん付いている変数ほど実際にプログラムから参照される頻度が高いということですか?
0481478NGNG
いや、違いますね。なんか妄想が先走ってヘンなことを書き込んでしまいますた。
もう来ません。
0482デフォルトの名無しさんNGNG
>>478
お前は頭に_, __をつけるな。
言いたいことはそれだけだ。
0483477NGNG
なんかスルーされている。気になってしょうがないんだけど。
0484デフォルトの名無しさんNGNG
>>483
googleは、あなたのお友達。
0485483NGNG
>>484
ああなんだ、ここの住人が申しているということじゃないのか。
0486デフォルトの名無しさんNGNG
シェルとシェルスクリプトについて
体系的に説明しているサイトおしえてクレクレーヌ
0487デフォルトの名無しさんNGNG
man bash
0488486NGNG
>>487
まだそのレベルまで逝ってないYO!
0489デフォルトの名無しさんNGNG
好きなの選べ
http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&oe=UTF-8&q=bash+%E5%85%A5%E9%96%80
0490486NGNG
やだやだー
テキストのみがいいの〜
じゃないと嫌なの〜
0491デフォルトの名無しさんNGNG
>>486
http://www-6.ibm.com/jp/developerworks/linux/000714/j_bash.html
http://www-6.ibm.com/jp/developerworks/linux/000714/j_bash2.html
http://www-6.ibm.com/jp/developerworks/linux/000714/j_bash3.html
0492486NGNG
>>491
サンクスコ
0493486NGNG
でもほんとはトップが目次形式になってるほうがいいのぉ〜
0494デフォルトの名無しさんNGNG
それくらい自分で作れ。
0495486NGNG
>>494
そんなこと言わないでおしえてYO!
0496デフォルトの名無しさんNGNG
>>495
頑張れや。
0497デフォルトの名無しさんNGNG
>>486
http://lagendra.s.kanazawa-u.ac.jp/ogurisu/manuals/sh-text/index.html
0498デフォルトの名無しさんNGNG
わがままだな(w
0499デフォルトの名無しさんNGNG
redhat7.3+g++3.4.0でプログラムを書いているのですが
こいつをdaemonプロセスにしないといけないんです。
forkを使えば処理は行えるのですが
終了処理を外部コマンドから
入力して正常終了するようにしたいです。
killコマンドとかじゃなく・・・ 
どのようにすればいいのですか?
ぐぐってもぜんぜん情報にありつけず困ってます。
よろしくおねがいします。
0500デフォルトの名無しさんNGNG
SIGTERMのハンドラ置き換えて,PIDファイル作る。
外部コマンドは kill -TERM `cat pidfile` のシェルスクリプトで十分。
0501デフォルトの名無しさんNGNG
>>499
共有メモリを使用するのはだめですか。
0502デフォルトの名無しさんNGNG
>>501
むやみに複雑にするメリットはないだろ?
それにdaemonプロセスを終了させるのは1番普通のやりかた。
0503デフォルトの名無しさんNGNG
まちがった。
それにシグナルでdaemonプロセスを終了させるのは1番普通のやりかた。
0504デフォルトの名無しさんNGNG
>>503
クラスとかがりがり使ってるんですが
それだとデストラクタとかも普通に動いてくれるのですか?
シグナル検地するとグローバルの関数への指定しかできないため
うまく終了処理にいけないとおもうのですが・・・
クラスにstaticなメンバーつくって終了処理をっていうことが
できればいいんですが・・・
0505デフォルトの名無しさんNGNG
>>504
普通はシグナルハンドラでは、
(フラグを立てるなりして)メインのアプリケーションロジックに
対して終了依頼があったことを通知するだけ。

そっから先は喪前様のプログラムがちゃんと外部からのイベントを
契機として終了可能にできているかどうか次第。
0506デフォルトの名無しさんNGNG
そもそも、シグナルを受け取ることと異常終了することは別ですよ...。
0507デフォルトの名無しさんNGNG
>>506
意味がわかりにくひ・・・きっと「異常」ってのは編集ミスで残ったに違いない!
0508デフォルトの名無しさんNGNG
シグナル受けとったら否応無しにアボートさせられると思ってるのかとおもたのです。
killコマンドじゃなくとか、デストラクタがとかゆってはるから。
0509デフォルトの名無しさんNGNG
なるほど。漏れは、
・シグナルで終了依頼を受けること
・きちんと終了すること
この2つは別のことだよ、って言ってたのかと思った。
0510デフォルトの名無しさんNGNG
FIFO でもつかっとけ。
0511デフォルトの名無しさんNGNG
シグナルハンドラが走った時点でlongjumpが入るから、ローカル変数のデストラクタなんて走る機会がないと思った。

0512デフォルトの名無しさんNGNG
え”?
0513デフォルトの名無しさんNGNG
わけわかめ
0514デフォルトの名無しさんNGNG
やっぱりWincowsの方が20年新しいだけあって、
色んな概念が分り易いよな。
0515デフォルトの名無しさんNGNG
>>514
牛たちに勝利せよ!21世紀らしい斬新なOS名だな。
0516デフォルトの名無しさんNGNG
勝ち組の雌牛って感じかな
0517デフォルトの名無しさんNGNG
>>511
> シグナルハンドラが走った時点でlongjumpが入るから、

そりゃお前のプログラムの問題だろ。
0518デフォルトの名無しさんNGNG
>>517
よくわかってないですがメッセージキューみたいにシグナルハンドラの実行を任意の時点まで遅延できるんですか?
0519デフォルトの名無しさんNGNG
>>518
sigsetmaskとか

シグナルハンドラにごちゃごちゃ書くのは感心しないが。
0520デフォルトの名無しさんNGNG
ハンドラはキューにメッセージ乗せるだけ、という使い方が安全かなあ
あ、キューの排他が要るね・・・
0521デフォルトの名無しさんNGNG
>>520
メイン処理でキューの排他中にシグナルハンドラが走ったら困りませんか?
待ってても処理はシグナルハンドラに移ってるからいつまでも解放されることがないわけで。

キューへの処理がアトミックなら問題ないんですけどね。

0522デフォルトの名無しさんNGNG
>>521
NIX関係ないプログラミング初級の話なんだが、

メイン処理のキューの排他を、
signalのブロックで囲めばいい。

メンスレッドがI/O扱う類いのものなら、
>>510も検討せよ。
0523デフォルトの名無しさんNGNG
age
0524デフォルトの名無しさんNGNG
排他が必要ってことは、シグナルハンドラは別スレッド(?)で動いてる
ようなものってことですか?

マンドクセ。
0525デフォルトの名無しさんNGNG
別スレッドっていうか、シグナルは割り込みだよ。
0526デフォルトの名無しさんNGNG
signalは標準C関数
0527デフォルトの名無しさんNGNG
標準?
0528デフォルトの名無しさんNGNG
ANSI Cの規格にありますよ。
0529デフォルトの名無しさんNGNG
シグナルがよくわかってない>>499が作っているものは
実行環境がLinuxでC++でマルチスレッドを使っているんだ。
その上シグナルを入れたら、不思議な踊りを踊り出すぞ。

>>499はリチャードの本を一度読んでからやった方がいいってこった。
0530デフォルトの名無しさんNGNG
killっていう名前は明らかに命名ミスだよな。
汎用シグナル送信コマンドなのに、killなんていう過激な単語を割り当ててしまったせいで
>>499のような初心者がこのコマンドを悪魔のように感じてしまう。
責任者でてこーい!
0531デフォルトの名無しさんNGNG
UNIXバッドノウハウコンテストの人気投票で何位ぐらいかな<kill
0532デフォルトの名無しさんNGNG
>>530
大昔はプロセスを止めることしか出来なかったので、
理にかなった命名なのです。
creat(2)と同じで、伝統のある名前なのです。

しかし…いくら互換性といっても物には限度があるよなあ。
0533デフォルトの名無しさんNGNG
UNIX関係者にに命名センスを求めるのが間違い
0534デフォルトの名無しさんNGNG
man co
とかやってヨダレたらしてるおまいらが言うなよwww
0535デフォルトの名無しさんNGNG
>>530
悪魔のように感じるぐらいで丁度いいんだよ。
それが汎用シグナル送信コマンドであることを理解しないうちは、「デーモン」なんか書いてはいけないということだ。
0536デフォルトの名無しさんNGNG
>>534
daemon=悪魔とか言ってる奴も然り。
0537デフォルトの名無しさんNGNG
daemon load
0538デフォルトの名無しさんNGNG
ドラえもん
0539デフォルトの名無しさんNGNG
>>533
というか、シンボルなんて他と違うことだけに意味を持つっていう
原則に拘るべきだな。UNIXみたいな30年も互換性を維持してきた
システムならなおさら。物事を抽象的に眺められる視点が得られるなら
ものの名前なんてどうでもいいと思うね。もちろん分り易い名前が
ついてるに越したことはないけど、そこばかりに目が逝ってしまう
ようじゃダメだろう。
0540デフォルトの名無しさんNGNG
kill -KILL /bin/kill
0541デフォルトの名無しさんNGNG
>>539
どこを縦読み?
0542デフォルトの名無しさんNGNG
>>541
おれなんかおかしなこと言ったか?
0543デフォルトの名無しさんNGNG
物事を抽象的に眺められる視点が得られるなら
ものの名前なんてどうでもいいと思うね。
0544デフォルトの名無しさんNGNG
ああ、そっちの人ですか。まあ好きに何でも反論してください。
0545デフォルトの名無しさんNGNG
アプリとシステムは名前で結ばれてるわけじゃないんで、さっさと変えればいいのに。
0546デフォルトの名無しさんNGNG
>>545
そのうちシステムとユーザーひっくるめてWindowsにリプレースされます。
0547デフォルトの名無しさんNGNG
で、プログラマは取り残されると 〆(。。)
0548デフォルトの名無しさんNGNG
>>543
物事を抽象的に表現するには適切な名前付けが不可欠だと思われ。

お前の各プログラムの基底クラスにmankoとか付けるのいい加減やめてくれ。

0549デフォルトの名無しさんNGNG
>>548
>>539に言えよ。
0550デフォルトの名無しさんNGNG
manko
0551名案!NGNG
KillEx()
0552マリーNGNG
シグナル受信専用スレッドを用意して、そこから終了イベントをうければいいじゃない
0553デフォルトの名無しさんNGNG
age
0554デフォルトの名無しさんNGNG
>>552
そんな窓みたいな手法はいや。
でも、WaitForMultipleObjectsみたいなのがときどき欲しくなるなあ。
0555デフォルトの名無しさんNGNG
え、シグナル受けるスレッド1個だけに限定するのは普通でしょ?
0556デフォルトの名無しさんNGNG
>>555
0557デフォルトの名無しさんNGNG
>>555
禿しく同意。
ttp://docs.hp.com/ja/B2355-60104-05/sigwait.2.html
> マルチスレッドプロセスでのシグナル処理法として推奨する方法は、すべての
> スレッドで重要なシグナルをブロックさせ、1つのスレッドをsigwait関数呼び
> 出し専用にして、シグナルを待たせることです。
0558デフォルトの名無しさんNGNG
>>557
ん?今からwebサイトでっち上げて好き勝手な論理を正当化しても良いんだが。
0559デフォルトの名無しさんNGNG
Bシェルのコーディング規約が乗っているHPなんか、ないでしょうか?
0560デフォルトの名無しさんNGNG
スタイルを統一しないと破綻するような巨大なスクリプトなんて書くなよ
スクリプトのコーディングなんてテキトーでいいんだよ
0561559NGNG
>>560
そうですよね、普通規約なんか設けませんよね。
ありがとうございます。
バッチの質問スレで聞いて、それでも同じような回答ならあきらめます。
0562デフォルトの名無しさんNGNG
MSにはBATファイルのコーディング規約がある
0563デフォルトの名無しさんNGNG
AT&TのUSGには規約あったんじゃないかな?
奴等大量のscriptを書いてたからな。
0564デフォルトの名無しさんNGNG
linuxのってないの?

そこからbashismを除けばいい感じでは?
0565デフォルトの名無しさんNGNG
linuxのってないの?

そこからbashismを除けばいい感じでは?
0566デフォルトの名無しさんNGNG
なんで二回書くの?

なんで二回書くの?
0567デフォルトの名無しさんNGNG
>>558
一個人の戯言よりはHPの中の人の言ってることのほうが
いかにも信用できそうだろ
0568デフォルトの名無しさんNGNG
age
0569デフォルトの名無しさんNGNG
/usr/bin/htpasswd / test
上記のコマンドを実行したときに、自動的に決まっているパスワード(test123等)も入力されるスクリプトって作れますか?
0570デフォルトの名無しさんNGNG
スレ違わなくない?
0571デフォルトの名無しさんNGNG
板違い
0572デフォルトの名無しさんNGNG
なんだってー!?
0573デフォルトの名無しさんNGNG
>>569
passwd << EOF
omaemona
omaemona
EOF

で何とかならないっすか?もっと高度なことをしたかったらexpectだっけ?
0574デフォルトの名無しさんNGNG
禿しくガイシュツな質問だと思いますけど、
unix環境で最も簡単にグラフィックを表示するにはどうすればよろしいのでしょうか?
グラフィック領域の任意の場所に(小さな)bmp画像などを表示する方法が分かりません。
よろしくお願いします。
0575デフォルトの名無しさんNGNG
グラフィック領域って何?
独立したプログラムでいいの?
それともプログラムの一部にするの? それはどんなプログラム?
0576デフォルトの名無しさんNGNG
>>575
ウィンドウの中に適当に設定したグラフィック領域です。
プログラムの一部として使いたいのです。
ゲームプログラムで、特定のキャラクターを表示させたりしたいのですが、
グラフィック部分が禿しく難しくて挫折しています。
アルゴリズム部分はどうにでもなるのですが、表示だけが出来ません。
出来れば表示よりもアルゴリズム本体に手間をかけたいので、
最も簡単にグラフィックを表示する方法が知りたいのです。
よろしくお願いしますm(_ _)m
0577デフォルトの名無しさんNGNG
>>576
最も簡単ではないかもしれないけど、そこそこ簡単で、たぶん >>574 の使ってる
プラットフォームにも存在して、かつ知っておいて将来役に立つかもしれないものとして
OpenGL を勧める。

「最も」簡単なものは世界中の全てのライブラリを知っている誰かが教えてくれるだろう。
0578デフォルトの名無しさんNGNG
もうちょっと開発環境詳しく書いたら。
LinuxでGNOMEでC++でゲーム作りたいとか。

ポータブルにハイパフォーマンスに描きたいならOpenGLじゃないの。
0579デフォルトの名無しさんNGNG
一応Javaという選択肢もあるが。
bmpはいまいち簡単じゃないけど。
0580デフォルトの名無しさんNGNG
>>577
OpenGLなら使えますが、bmpなどを表示するのが激しく難しそうです。
Window全体ではなくて、任意の場所となると。

>>578
まさにその環境です!C++ではなくてCですけど。

>>579
Javaでぐぐってみても、今ひとつ簡単な方法がなかったみたいです。
Javaでもいいのですが、欲を言うとCで作ったプログラムと
協力するプログラムにしたいです。
0581デフォルトの名無しさんNGNG
>>580
gnome 使ってるっていうことなら、gtk+ の drawable あたりのサンプル
プログラムでものぞいてみたらどうよ?
0582デフォルトの名無しさんNGNG
>>580
xbubbleとかのsourceでも参考にしたら?
↑結構綺麗なコード。

bmpうんぬんはimlib使えば? libgdk-imlibとかさ。
0583デフォルトの名無しさんNGNG
SDL つかって SDL_LoadBMP(), SDL_BlitSurface(), SDL_UpdateRect()
0584デフォルトの名無しさんNGNG
わしもゲームならSDLがいいと思う。
bmp以外も使うならSDL_imageを使えばいいし。
0585580NGNG
>>581
そうしてみます。
・・・やっぱり、グラフィックを使おうとすると、ある程度手間はかかるんですね・・・。

>>582
xbubbleが入っていたら使ってみます(自分でインストールする権限がないので)。

>>583
SDLは入ってなかったみたいです・・・。

>>584
SDLって(ぐぐったら)結構便利そうでした。
でも使えない○| ̄|_
0586デフォルトの名無しさんNGNG
「権限が無い」って、 root の権限が無いんじゃなくて、
「勝手に他所のソフトをコンパイルしちゃいけません」ってこと?

SDL なら ./configure --prefix=$HOME/local とかすれば
自分の権限で入れられるはずだけど。
0587デフォルトの名無しさんNGNG
>>586
makeとかinstallを使う権限がないのでは。
0588デフォルトの名無しさんNGNG
>>586
>「権限が無い」って、 root の権限が無いんじゃなくて、
>「勝手に他所のソフトをコンパイルしちゃいけません」ってこと?
ルートの権限です。

>SDL なら ./configure --prefix=$HOME/local とかすれば
>自分の権限で入れられるはずだけど。
展開したときのサイズは大きくないですか?
100メガもあったら少しきついてす(一人に割り当てられているハードディスク容量はそんなに大きくないので)。
0589デフォルトの名無しさんNGNG
SDLだけならライブラリとヘッダで1Mbyteない。

ただ下請ライブラリがあれこれ必要。
gnome環境らしいからライブラリほとんどはあると思うけど、
ヘッダは微妙。
0590デフォルトの名無しさんNGNG
ソースは展開すると 10Mbyte 程。
0591デフォルトの名無しさんNGNG
考えてみると、ホームディレクトリにインストールすると、

#include <〜.h>

と書いたときにインクルードされないような気が・・・
そこは、

#include "/usr/・・・/〜.h"

とか書き直すしかないんでしょうか?
0592デフォルトの名無しさんNGNG
>>591
gccなら-Iオプションでも使えばいい。
0593デフォルトの名無しさんNGNG
-Lも忘れるな。
0594デフォルトの名無しさんNGNG
ふつうはインストール時に入る sdl-config を使う。

CFLAGS = -Wall -g -O2 `$HOME/local/bin/sdl-config --cflags`
LDLIBS = `$HOME/local/bin/sdl-config --libs`
0595デフォルトの名無しさんNGNG
ふつうはLIBS
0596デフォルトの名無しさんNGNG
共用計算機つかってる学生さんだろうか
0597デフォルトの名無しさんNGNG
今どうやってウィンドウを出してるか(Xlib叩いてるのかGTKかQtかtkか)や
パフォーマンスどのくらい必要かとかにもよるんじゃなかろうか。

Kylixとかなら一行もコード書かなくてもbmpぐらい表示できそうだとか。
0598デフォルトの名無しさんNGNG
0599デフォルトの名無しさんNGNG
ようは、bmpデコードライブラリなんだよ。
これさえあれば、あとは何でもいけるだろ。
0600デフォルトの名無しさんNGNG
bmpもろくに表示できないUNIX
0601デフォルトの名無しさんNGNG
>>600
そんなのあるのか?
0602デフォルトの名無しさんNGNG
Xか入ってなくて/dev/fb*もないとか
0603デフォルトの名無しさんNGNG
>>599
>ようは、bmpデコードライブラリなんだよ。

鼻くそほじりながら書けよ。
デコードもへったくれもそのままビットマップが詰まってる。
0604デフォルトの名無しさんNGNG
RLE圧縮されてるとか。
あんまし見た事無いけど。
0605デフォルトの名無しさんNGNG
昔ランレングス圧縮されてる一色(赤)のBMPを添付された記憶が
展開したら500Mになりやがった
0606デフォルトの名無しさんNGNG
コンソールモードでbmpって表示できるの?
0607デフォルトの名無しさんNGNG
>>606
fb使えばできるんじゃ無いかい?
0608デフォルトの名無しさんNGNG
>>606
SVGAlib
http://www.svgalib.org/
0609デフォルトの名無しさんNGNG
そういえばKNOPPIXの起動中にペンギンが表示されるが、あれがそうか?
0610デフォルトの名無しさんNGNG
>>609
ハァ?幻覚でも見てんじゃねぇの?
0611デフォルトの名無しさんNGNG
それとは違う気がする
0612デフォルトの名無しさんNGNG
>>609
あれはfb。

/usr/src/linux-*/drivers/video/logo/Kconfig
config LOGO
bool "Bootup logo"
depends on FB || SGI_NEWPORT_CONSOLE

0613デフォルトの名無しさんNGNG
C++ で、指定された unix コマンドが実行できるか(存在するか)を調べたいです。
which target_cmd
のステータスを取ろうかなと思うのですが、
popen("which target_cmd > /dev/null 2>&1", "w");
だと、which 自体は当然正常に実行できるのでうまくいきません。
どうすればよいのやら?

それとも他によい方法があるでしょうか?
0614デフォルトの名無しさんNGNG
>>613
なんで popen() を使うの?
0615 ◆Z0vd5w812U NGNG
>>613
環境変数PATHを分解してUNIXコマンドをstrcatしてfstat。
0616デフォルトの名無しさんNGNG
>>613
access()ではだめなのか?
0617デフォルトの名無しさんNGNG
accessだけをしらべるとディレクトリもX_OKにならないか?

流れ的にはこんな感じになるのかな?
getenv("PATH")
strtok(path, ":")
opendir
readdirで片っ端から調べる。
探しているなまえがあればstat
S_ISREGで調べて、access又はstatのパーミッションを調べる。
whichと同じにしたいなら見つかれば戻る。
見つからなければstrtok(NULL, ":")で最初から…。
0618デフォルトの名無しさんNGNG
>>613
一つだけきいていい?
なんで第二引数を"w"にしてるの?"r"じゃなくて。
0619 ◆Z0vd5w812U NGNG
>>617
opendirしなくても、ディレクトリパスに目的のコマンドをstrcatして
fstatかaccessでファイルの存在や実行可能状態を調べればよいよ。
0620デフォルトの名無しさんNGNG
>>613
system("which target_cmd > /dev/null 2>&1") で戻り値見ればいいと思うが...。
0621デフォルトの名無しさんNGNG
>>620
それだと存在するかどうかはわかるけど、実行できるかどうかはわからない。
0622デフォルトの名無しさんNGNG
じゃあ"bash -c 'type target_cmd'"で。
0623デフォルトの名無しさんNGNG
PATHのサーチも期待してるんでしょ
0624デフォルトの名無しさんNGNG
>>621
はぁ ?
which は、実効属性ぐらいは当然見てるんだが。

まさか、ファイルの中身まで見ろとか言ってるんじゃないよな。
0625デフォルトの名無しさんNGNG
s/実効/実行/
0626デフォルトの名無しさんNGNG
>>624
0627デフォルトの名無しさんNGNG
>>624
/home/toru # touch /sbin/ahoka.txt
/home/toru # chmod 666 /sbin/ahoka.txt
/home/toru # which ahoka.txt
/sbin/ahoka.txt
/home/toru #
0628つまり実装によるNGNG
$ sudo mkdir /usr/local/bin/ahodaro.d
$ which ahodaro.d
$ echo $?
1
$ sudo touch /usr/local/bin/ahodaro.txt
$ which ahodaro.txt
$ echo $?
1
$ which test
/usr/bin/test
$ echo $?
0
$ sudo rm -rf /usr/local/bin/ahodaro.*
0629デフォルトの名無しさんNGNG
age
0630デフォルトの名無しさんNGNG
age
0631デフォルトの名無しさんNGNG
悩んでるんで教えて下さい。
ファイルをopenしてfstat()で検査してエラーだった場合、
そのファイルディスクリプターをcloseすべきでしょうか?
0632デフォルトの名無しさんNGNG
すべき
0633デフォルトの名無しさんNGNG
やっぱりそうですよね。すっきりしました。
0634デフォルトの名無しさんNGNG
ずいぶん簡単に納得するんですね
0635デフォルトの名無しさんNGNG
普通だろ。自分の予想と逆のことを言われた場合はともかく。
0636デフォルトの名無しさんNGNG
もしopenされてなかったらcloseしたらおかしくなっちゃうかもよ
0637デフォルトの名無しさんNGNG
openがくれたfdは信用するなってこと?それは困るなあ
0638デフォルトの名無しさんNGNG
>fstat()で検査してエラーだった場合

例えばどんな?
0639デフォルトの名無しさんNGNG
closeにfstatの値によっては呼ばなくていい
なんて書いてないんだからcloseしろ
0640デフォルトの名無しさんNGNG
もうめんどうくさいから exit でいいよ。
0641デフォルトの名無しさんNGNG
ファイルディスクリプタとファイルポインタの違いってナニ?
なんで二つあるの?
0642デフォルトの名無しさんNGNG
UNIXのシステムコールで使うのがファイルディスクリプタ.
ファイルポインタはCの入出力ライブラリ.
0643デフォルトの名無しさんNGNG
ファイルディスクリプタに対応したFILE構造体を作成できるのに、
なんでディスクリプタなんていうものがあるの?
0644デフォルトの名無しさんNGNG
>>643
残念。そうとは限らない。
0645デフォルトの名無しさんNGNG
shell をつくりたいのですが何から勉強したらいいですか?
0646デフォルトの名無しさんNGNG
>>644
fdに対応したFILEを作成する関数ってナニ?どんな場合に失敗するの?
0647デフォルトの名無しさんNGNG
>>645
既存のshellのソースを読むとか.
0648デフォルトの名無しさんNGNG
>>645
fork(2), execve(2)
wait3(2), exit(3)

を使って引数を実行するプログラムを。
$ ./a.out ls -l
で、ls -lを実行するプログラム。

open(2), close(2)
を使ってredirectを実現。

pipe(2), dup2(2)
を使ってpipeを実現。

0649デフォルトの名無しさんNGNG
>>646
fdopen(3)
逆に FILE * -> file descripor なら fileno(3)

詳細はman参照。
0650デフォルトの名無しさんNGNG
>>648
リダイレクトとな?
0651デフォルトの名無しさんNGNG
おすすめはfopen->filenoの順
0652デフォルトの名無しさんNGNG
リダイレクトをやるならdup(2)も勉強しておきたいところだ。
0653デフォルトの名無しさんNGNG
>>651
filenoした後って、始末どうすんの?
fclose呼ぶの?
0654デフォルトの名無しさんNGNG
普通はそうだろ。
0655デフォルトの名無しさんNGNG
>>653
もちろん。
0656デフォルトの名無しさんNGNG
UNIXプログラミング始める前に、スティーブンス丸暗記が基本ですか?
0657デフォルトの名無しさんNGNG
暗記より、説明読みながらサンプルプログラムを走らせたり改造したりするのが基本かと。
あのヘッダを自分の環境に合わせて直すだけでも貴重な経験になるはず。
0658デフォルトの名無しさんNGNG
close(1)として標準出力を一旦閉じた後、再び開き直すにはどうしたら
いいですか?
苦し紛れにstdout = fopen(ttyname(1), "w");
とかしてみたんですけど、printf()系は復活しましたがcoutは閉じたまま
でした。
0659デフォルトの名無しさんNGNG
C言語で, プラグインのようなものをつくりたいのですが可能なんでしょうか?
0660デフォルトの名無しさんNGNG
もちろんだ
0661デフォルトの名無しさんNGNG
どうやればいいんでしょ;;
0662デフォルトの名無しさんNGNG
>>661
どうって、決まりに沿って書くだけだが。
0663659NGNG
>>662
その決まりがわからないのですが,
その決まりはどこを見たらわかるのか教えていただけませぬか?
0664デフォルトの名無しさんNGNG
>>658
dup2
0665デフォルトの名無しさんNGNG
>>663
プラグインを作りたいソフトの資料はないの?
0666659NGNG
>>663
すんません. 言葉の使い方間違ってたようで.
プラグインの呼び出し側をつくりたいのです.
0667デフォルトの名無しさんNGNG
>>オーメン
もう少しやりたい事をはっきりと書いて欲しいものだが
ttp://www.linux.or.jp/JM/html/LDP_man-pages/man3/dlopen.3.html
のような事?
0668デフォルトの名無しさんNGNG
>>666
APIの設計
0669デフォルトの名無しさんNGNG
>> 664
こんな感じですか?↓
string tty = ttyname(1);
fclose(stdout);
dup2(1, open(tty.c_str(), O_WRONLY));

駄目でした...
0670659NGNG
>>667
すんません...

ソフトをリコンパイルすることなく,
入力ファイルに書いてある関数を呼び出したい.
その時, そのソフトで定義していない関数も呼び出せるようにしたい.

... で伝わりますでしょうか.
0671デフォルトの名無しさんNGNG
>>669
クローズ前にdup2
0672デフォルトの名無しさんNGNG
>>670
>>667のリンク先を見ていないでしょ?
0673デフォルトの名無しさんNGNG
>>670
お前は細胞分裂からやりなおせ
0674デフォルトの名無しさんNGNG
他のプログラムのサブルーチンを実行したいって言ってるのか?
0675デフォルトの名無しさんNGNG
プラグイン作りたい奴はCOMの勉強をするとよいよ
0676659NGNG
>>672
みました.

>>673
どうやったらできますか?

>>674
はい.

いくつかキーワードでてきたので自分で調べなおしてみます.
ありがとうございました.
0677デフォルトの名無しさんNGNG
>>676
二度とくるなよ(^-^)/~
0678デフォルトの名無しさんNGNG
プラグインなんて言うからこんな事になるんだ
0679デフォルトの名無しさんNGNG
>>658
stdoutやcoutとして使っているものを、close(1)しちゃいかん!
0680428ツ?ツ?NGNG
>> 671
下のようにしてみました。
int fd = dup(1);
cout << "show (before close)" << endl;
close(1);

cout << "not shown" << endl;

dup2(fd, 1);

cout << "show (cout)" << endl;
printf("show (printf)\n");

結果は
show (before close)
show (printf)

coutが復活してない模様です...
0681デフォルトの名無しさんNGNG
>>680
> coutが復活してない模様です...

それは、きっと、

> cout << "not shown" << endl;

のせいだよ。コメントアウトしろ。

しかし、動いても実装依存で、close(1)しちゃいかん!
0682679NGNG
ageちゃった…

それからclose(1)する前にflushくらいしろよ。

しかし、close(1)しちゃいかん!
0683デフォルトの名無しさんNGNG
何故closeしたがってるんだろうな
0684デフォルトの名無しさんNGNG
どうせまた開くのにな
0685デフォルトの名無しさんNGNG
すみません。
cursesを使ったプログラムをX Window上のktermとかで動かしたいのですが、
端末の行カラム(ウィンドウサイズ)が動的にされたタイミングを捕まえることは
できるでしょうか? それに合わせて表示を変更できたらなぁ、と思ってます。
その方法を教えてくださいませ。お願いします。
0686デフォルトの名無しさんNGNG
SIGWINCH
0687デフォルトの名無しさんNGNG
>>685
なるほど、そういうシグナルが来るわけですな。
ためしてみます。サンキュー
0688687NGNG
>>685でなく>>686でした
0689デフォルトの名無しさんNGNG
>> 683
やりたいのはpipe(2)+fork(2)を使って
親の出力 → パイプ → 子の入力
と繋ぎ、しかる後に子が先に死ぬんで
親の出力 → 画面
と戻したいのです

dup2(パイプの片方, 1);
とやる過程で中でclose(1)されてるので、それを復活させたいと
いうのが発端です。
0690679NGNG
親の使うファイルハンドルが標準出力である必然性は何なんでしょう?
0691デフォルトの名無しさんNGNG
>> 690
親が叩くとあるライブラリが、デバッグログ相当のものを標準出力
に吐いています。そのライブラリは非公開です
0692デフォルトの名無しさんNGNG
子が死なずに stdout に吐き出すようにすればいいのでは。
0693デフォルトの名無しさんNGNG
>> 692
1.子は標準入力の捕捉と共有メモリへの書き出しのみを担当させたい
2.子はライブラリの使用箇所が終わり次第消したい
3.親のみが知りえる情報とログを加工してmainの最後に出力したい

という理由で子が吐くというのはやりたくないです
0694デフォルトの名無しさんNGNG
やれ

P.S.
実装依存のコードでも良ければ、環境を書け。
0695693NGNG
Vine Linux 2.6 & g++2.95.3もしくは
Cygwin 1.5.9 & g++ 3.3.1
です
0696デフォルトの名無しさんNGNG
>>689
dup しとけばいいじゃん。
0697デフォルトの名無しさんNGNG
cout を使わなければいいじゃん。
0698693NGNG
>> 681
あ、ほんとだ!!
でもなぜ?
0699679NGNG
closeされてんのにI/Oしたら、
cout.fail() => trueになるに決ってんでしょ。
cout.clear()してみなよ。

つーか実装依存のコード書くのはまだ早いかも…
もっとiostream勉強しる
0700693NGNG
>> 699
仰せの通りfail()がtrue返し、clear()したら表示されるようになりました
failなんてフラグを持ってる事すら知りませんでした
勉強になりました
0701デフォルトの名無しさんNGNG
X-WindowでMDI形式のアプリって組めますか?
0702デフォルトの名無しさんNGNG
できます.
0703デフォルトの名無しさんNGNG
>>702
じゃあなんでGIMPはMDIじゃないの?
0704デフォルトの名無しさんNGNG
賢いwindow managerがあれば、MDIは欠点の方が大きい。
0705デフォルトの名無しさんNGNG
舞黒ソフトですらSDIを推奨してるのにな
0706デフォルトの名無しさんNGNG
えっ 真っ黒ソフトってSDIを推奨してんの?
知らなかった。どうでもいいけど。
0707デフォルトの名無しさんNGNG
>>703
MDIだと使いにくいからでしょ。
0708デフォルトの名無しさんNGNG
>>707
そうか?
0709デフォルトの名無しさんNGNG
Windowsでは、CreateFileMapping,MapViewOfFileと
二つの関数をつかってマップするところが、
UNIXではmmap関数一回で済んでしまいます。
これはどうしてなんでしょうか?
0710デフォルトの名無しさんNGNG
>>709
くだらん事言うな
0711デフォルトの名無しさんNGNG
モスバーガーへ行って、ビックマックセットが
無いじゃないかと叫んでる893だな
0712デフォルトの名無しさんNGNG
0713デフォルトの名無しさんNGNG
複数のプロセスで同一のファイルに対するマップを作るとき、
ProcessA : CreateFileMapping("hoge") → MapViewOfFile
ProcessB : OpenFileMapping("hoge") → MapViewOfFile
とすることで(msyncを呼ばなくても)、内容が同期される。
つまり、共有メモリのように振舞う。
というか、win32では共有メモリはこの方法を使う。

いわゆるmmapだけでこれを実現することはできない。
・・・と思う(違ったら指摘してくだせえ)

同期が不要であれば、プロセスごとにCreateFileMappingを行えばよい。
これはmmapと同等となる。
0714デフォルトの名無しさんNGNG
open
0715デフォルトの名無しさんNGNG
>>713
> いわゆるmmapだけでこれを実現することはできない。
> ・・・と思う(違ったら指摘してくだせえ)

見事に間違ってる。MAP_SHAREDつけるだけでいい。

> 複数のプロセスで同一のファイルに対するマップを作るとき、
> ProcessA : CreateFileMapping("hoge") → MapViewOfFile
> ProcessB : OpenFileMapping("hoge") → MapViewOfFile

プロセスによって手順が違うのかいな。めんどくさ。
0716デフォルトの名無しさんNGNG
マップという概念について勉強する気になった。おまえらありがとう。
0717デフォルトの名無しさんNGNG
>>715
> 見事に間違ってる。MAP_SHAREDつけるだけでいい。

ダウト!
2つのプロセスで試してみ。mmapだけじゃできんから。
0718デフォルトの名無しさんNGNG
msync
0719デフォルトの名無しさんNGNG
つーか、意外にmmapの挙動は知られてないんだな。

> とすることで(msyncを呼ばなくても)、内容が同期される。

へえー
0720デフォルトの名無しさんNGNG
そもそも Create/OpenFileMappng + MapViewOfFile の挙動を知らないから、
mmap だけで同じことができるかどうかわからんな。
0721デフォルトの名無しさんNGNG
知らないなら黙っていればいいのにねぇ
0722デフォルトの名無しさんNGNG
>>721
お前藻な。
0723デフォルトの名無しさんNGNG
>>717
試してみたら、ちゃんとmmapだけで同期したんですけど。
OSの実装を考えたら同一メモリページを複数のプロセスにマップするだけなんだから、
同期しない理由がないと思うけど。
0724デフォルトの名無しさんNGNG
MAP_SHAREDはmappingの共有で、
msync(2)はflushだから、MAP_PRIVATEの時しか意味ないだろ。
0725デフォルトの名無しさんNGNG
The Design and Implementation of the 4.4BSD Operating System p.141

マルチプロセッサ環境なら CPU のキャッシュの関係で msync が必要になるかもね、ということ。
0726デフォルトの名無しさんNGNG
うちのマニュアルにはファイルが更新されるのはmsyncを呼んだときだと書いてあるが、
その領域自体は複数のプロセスで共有すると書いてあるな。
0727デフォルトの名無しさんNGNG
ファイルをマップしたとき、
メモリにマップされてる領域自体は共有されてるから、
プロセスが別だろうとなんだろうとその場で変更が見える。
でもそれは元ファイルには書き出されてないかもしれないから、
元ファイルの内容を更新するにはmsyncが必要。
みたいな。
0728デフォルトの名無しさんNGNG
>>726
> うちのマニュアルには

釣りでないなら、uname -aくらい書けよ。

0729デフォルトの名無しさんNGNG
>>727
> ファイルをマップしたとき、
> メモリにマップされてる領域自体は共有されてるから、

mmapのman pageをそのように記述しているOSがあるなら教えてほしい。
0730デフォルトの名無しさんNGNG
>>728
Linux localhost 2.4.27 #2 Sun Aug 8 23:07:42 JST 2004 i686 unknown

MAP_SHARED このマッピングを、このオブジェクトをマップし た
他 の全てのプロセスと共有する。この領域への保存
は、ファイルへの書き込みと等価である。 た だ し
ファ イルが実際に更新されるのは、 msync(2) また
は munmap(2) が呼ばれたときである。

あとこっちにもhttp://www.linux.or.jp/JM/html/LDP_man-pages/man2/mmap.2.html
0731デフォルトの名無しさんNGNG
誤訳っぽいな。
0732デフォルトの名無しさんNGNG
>>730
> MAP_SHARED このマッピングを、このオブジェクトをマップした
> 他の全てのプロセスと共有する。

mappingを共有するんだから、メモリ空間も共有だわな。

> この領域への保存
> は、ファイルへの書き込みと等価である。

単一仮想記憶だからmmap(2)すれば当たり前だわな。

> ただし
> ファイルが実際に更新されるのは、 msync(2) また
> は munmap(2) が呼ばれたときである。

これはプロセス間のメモリ共有とは何の関係もないわな。
diskにflushしようがしまいが、共有メモリは共有メモリだからね。
それを理解してない。
0733デフォルトの名無しさんNGNG
>>732
最初からそう言っているじゃない。
0734デフォルトの名無しさんNGNG
なにかオブジェクトをつくったとき、ハンドルの概念でそのオブジェクトをあらわすものを
取得するようにプログラム書いてる方います?
そうれってなんのメリットがあるんでしょうか?

typedef {
void *ptr
int attribute1;
int attribute2;
}HANDLE

HANDLE CreateObjFoo()
{
ObjFoo *foo_prt;
foo_ptr=(Obj_Foo *)malloc(sizeof(ObjFoo));

HANDLE hnd;
hnd.ptr=foo_ptr;
hnd.attribute1=attribute1;
hnd.attribute2=attribute2;

return hnd;
}
0735デフォルトの名無しさんNGNG
1)CPUCache
2)物理メモリ
3)DISK

msyncは1から2への更新のついでに、同期で2から3へも行うという理解でいいのかな
MAP_SHAREDしたときは、1から2への更新が重要というだけで

>>732
>単一仮想記憶だからmmap(2)すれば当たり前だわな。
単一仮想記憶ってなんでしょうか?
0736デフォルトの名無しさんNGNG
>>734
具体的なコードを出してくれないと。そんなあやふやなのではねー。

適当な事をいうと、そういう類のことしてるのは
リファレンスカウントなりGCなりのメモリ管理が絡んでいる場合が多いと思う。
あと複数の種類のオブジェクトを同じHANDLEで扱いたい場合。

0737デフォルトの名無しさんNGNG
>>735
> 1)CPUCache
> 2)物理メモリ
> 3)DISK
>
> msyncは1から2への更新のついでに、同期で2から3へも行うという理解でいいのかな
> MAP_SHAREDしたときは、1から2への更新が重要というだけで

少なくともSMPやccNUMAじゃ1と2の間の一貫性もアーキテクチャで保証されるん
だけどね。そうじゃないNUMAでOSの側でも手を打たないUNIXってどれですかね。
第一それが問題になるなら話はmmapに限らないし。

2から3もOSがいきなり落ちたりしない限り、ユーザから見れば即時にディスク
に書き込まれるのと変わらない。
書き出しはOSがページングと同じ枠組みで自動的にやってくれる。
>>730のマニュアルの訳者はそれを理解してないね。原文はもっとましな書き方
がしてある。
0738デフォルトの名無しさんNGNG
>第一それが問題になるなら話はmmapに限らないし。

よく考えてみればそうですね。
異なるCPUで動いてるスレッドのデータ領域の話だってそうか。

全然関係ない話になるけど、
>SMPやccNUMAじゃ1と2の間の一貫性もアーキテクチャで保証される
保証されてないアーキテクチャってあるんでしょうか。ソフト側で
Cacheのフラッシュを実行しないといけないようなCPU。
0739デフォルトの名無しさんNGNG
>>725のような書き込みを見て、OS側でCPUCache->メモリ間の転送を
制御しなくてはならないようなアーキテクチャがあるのかと思ったまでです。

むかしなんかで読んだMachのメモリマネージャの記事で、個々のCPUごとに、
専用のメモリとアドレス空間を持っているハードに対応するような話を読みました。
現在のNUMAのように単一のアドレス空間の共有を前提とするのが当たり前の
時代からみると、かなりキモイ設計のようにも見えますが。CPU間の
データ転送には特別な命令を用いる感じなんでしょうか。よく分りませんが。

VMにその頃の名残があって、>>725の記述がそれを繁栄したものだというのなら理解できます。
0740デフォルトの名無しさんNGNG
>CPU間のデータ転送には特別な命令を用いる感じなんでしょうか。
CPUが別のCPUに割り込めるものもあるらしい。
あるいは、問題が起こりうるデータには
初めからキャッシュを使わないという解決法もある。

UNIXカーネル内部解析という本がくわしい。
http://www.amazon.co.jp/exec/obidos/ASIN/4890529306
カーネルの解説本と見せかけて、一冊まるごとキャッシュに関する解説をしている。
0741デフォルトの名無しさんNGNG
>>723
コード晒してみ。
0742デフォルトの名無しさんNGNG
>>740
その本、なんだか良さそうな感じですね。
今度注文してみます。
0743デフォルトの名無しさんNGNG
>>741
むしろ同期しない方のコードを晒してもらいたい。
0744デフォルトの名無しさんNGNG
>>734
それUNIX固有の話じゃないんじゃないの?

FILEに付いて考えてみれ
0745デフォルトの名無しさんNGNG
このプログラムのどこが間違っているんでしょうか。Bus Errorが発生します。

#include<sys/types.h>
#include<stdio.h>
#include<sys/mman.h>
#include<unistd.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<wait.h>

int main()
{
int fd, pid;
void * p_map;
fd = open("/tmp/mmap.txt",O_RDWR|O_CREAT|O_SYNC);
pid = fork();
if(pid==0){ /*child*/
p_map = mmap(NULL,4,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0);
printf("child p_map == %d\n",(int)p_map);
//memcpy(p_map,"aaaa",4);
*(int *)p_map=4;
}
else if (pid>0){ /*parent*/
p_map = mmap(NULL,4,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0);
printf("parent p_map == %d\n",(int)p_map);
wait(NULL);
printf("mmap %d\n",*(int *)p_map);
}
close(fd);
}
0746デフォルトの名無しさんNGNG
どこで発生したか、backtraceくらい出せよな。
どうせこういうことだろうという見当はつくが。

0747デフォルトの名無しさんNGNG
mmap が失敗しても処理を続けようとしているところ。
0748デフォルトの名無しさんNGNG
fork後の実行順序を決めてかかってるところもね。
0749デフォルトの名無しさんNGNG
そりはwaitしてんだから問題なかんべ。
むしろ終了直前にわざわざcloseしていることのほうが。
0750デフォルトの名無しさんNGNG
/tmp/mmap.txtが空だから。
0751デフォルトの名無しさんNGNG
>>749
親プロセスの最初のprintfが子プロセスでの書き込みより先に実行されることを
仮定しちゃってると思うんだが、どうよ。
0752デフォルトの名無しさんNGNG
少し書き換えました。>>750さんのいう通り空のファイルでは駄目なようです。
mmapではファイルサイズ分しか読み書きできないようです。それとも何か
勘違いしてるのかもしれませんが。あと/tmp/mmap.txtのアクセスモード指定が抜けてました。

#include<sys/types.h>
#include<stdio.h>
#include<sys/mman.h>
#include<unistd.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<wait.h>
int main()
{
int fd, pid;
void * p_map;
fd = open("/tmp/mmap.txt",O_RDWR|O_CREAT|O_SYNC, S_IRWXU);
write(fd,"aaaaaa",6);
//lseek(fd,6,SEEK_SET);
pid = fork();
if(pid==0){ /*child*/
p_map = mmap(NULL,4,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0);
printf("child p_map == 0x%X\n",(int)p_map);
*(int *)p_map=4;
}
else if (pid>0){ /*parent*/
p_map = mmap(NULL,4,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0);
printf("parent p_map == 0x%X\n",(int)p_map);
wait(NULL);
printf("mmap %X\n",*(int *)p_map);
}
close(fd);
}
0753デフォルトの名無しさんNGNG
ところでこのプログラムでmmapを使ったプロセス姦通心ができているのかどうか。
判別できないとするなら、何が間違っているのでしょうか。
childプロセスが終了した時点で当然、mmap領域のダーティーなページの内容は
当然ディスクに書き戻されているはずですが、そのことがparentプロセスが
そのページを参照することとはなんの関係もないですよね?
0754デフォルトの名無しさんNGNG
当然?
File systemに反映させたかったらmsync(2)使え。
それからmmap(2)のonline documentをちゃんと読め。
0755デフォルトの名無しさんNGNG
>write(fd,"aaaaaa",6);
ここは
write(fd,"aaaaaa",1); /*OK*/
write(fd,"aaaaaa",0); /*Bus Error*/

となりました。mmapというよりはファイル操作に関する基本的な
事柄のようです。O_CREATを指定して開いただけでは、ディスクリプタ
だけが作成されて、VFS(?)に対する繁栄はされないということでしょうか。
また、実際に書き換えるmmap領域よりファイルサイズが小さいと、ファイルには
繁栄されませんでした。OSはLinux-2.6.8.1 glibc-2.3.3です。

>>754
ひとまずmsyncの話は保留にして、mmapでプロセス間通信ができないという
人がいたので、素人なりにそれができると示すためのコードを書いてみただけです。
コードが間違っていて、いるのかどうかを聞いています。
上のボログラムはmsyncは呼んでませんが、ファイルには繁栄されます。

嫁というのは分ってますので、みんなが納得できるコードを示してください。
0756デフォルトの名無しさんNGNG
>>754
お前こそちゃんと前のレスを読め。msyncなぞ使わんでも反映されるわ。
0757754NGNG
同期的に強制するにはmsync(2)が必要ですよ。
Linux-2.6.8.1でi386なら、MAP_AUTOGROWは実装されてないでしょ。

> 上のボログラムはmsyncは呼んでませんが、ファイルには繁栄されます。

参照しているprocessがなくなったら必ず反映されるわな。VMの仕事だもんな。
0758デフォルトの名無しさんNGNG
>>755
> mmapでプロセス間通信ができないという人がいたので、

馬鹿は無視しる
0759デフォルトの名無しさんNGNG
>また、実際に書き換えるmmap領域よりファイルサイズが小さいと、ファイルには
>繁栄されませんでした。
これは嘘でした。勘違いもいいところ。もう少し調べてから出なおしてきます。

>>757
それは逆に言えば
・ページのリファレンスカウントがゼロなったとき
・msyncが呼び出されたとき
以外はファイルシステムには繁栄されないということでしょいうか?
まあこれこそ嫁ってやつか。
0760デフォルトの名無しさんNGNG
>>755
> mmapでプロセス間通信ができないという人がいたので、

誰のこと?
0761デフォルトの名無しさんNGNG
>>760
>>717とか>>741
0762デフォルトの名無しさんNGNG
>>757
だからmsyncなぞ普通はいりませんってば。mmapしてるプロセスの実行中に
別のプロセスがそのファイルをopen/readで読んでも、ちゃんとmmapページに書
かれた内容が読まれます。あんた試してものを言いなよ。

でもってファイルサイズを越えた領域に書かれたものがファイルに反映されない
のはmmapの仕様です。msyncがどうのこうのという話ではありません。
0763デフォルトの名無しさんNGNG
>>761
納得
0764デフォルトの名無しさんNGNG
>>759
>>757はたぶん>>717や>>741と同類(もしくは同一)なので、
相手するだけ無駄です。デンパは放置すれ。
0765753NGNG
>>762
754=757さんは、ディスクに書き出されるタイミングを指摘しただけなので、
言ってることはあってると思います。私はmmapにつかっていたページの
参照カウントの増減があるたびにファイルに繁栄しているものだと思ってましたが、
実際はそうではなく、ページの参照カウントがゼロ、またはmsyncが呼び出されたとき、
または、何らかのバッファフラッシュ操作によるものというのが754氏の主張。
これは多分正しいでしょう。
0766デフォルトの名無しさんNGNG
正しくない。munmapしてもすぐに書き出されると限ったわけじゃない。
だって別にプロセスに結びつけられて管理されている資源じゃなくて、
OSがキャッシュと仮想記憶の一貫としてやってるわけだから。
ま、Linuxに限れば正しいのかも知れないが。

あなた、適当にそれっぽいことを鵜飲みにしないで、ちゃんと物事を
調べる癖つけた方がいいよ。
0767デフォルトの名無しさんNGNG
s/一貫/一環/
失礼。
0768デフォルトの名無しさんNGNG
一応テストコードはこんなんで試しましたが、parentのsleep(30)の間に、
あんまり意味はなさそうですが、一応別プロセスということでシェルから
catでファイルを見ましたが、何度やっても/tmp/mmap.txtに繁栄されていました。
よく考えてみるとこれが実際にディスクに書き出された結果なのか、
それともpage cacheをただ読んでるだけなのかは判別できないですね。下のFigure2を見ても分るように。
http://www.usenix.org/publications/library/proceedings/usenix2000/freenix/full_papers/silvers/silvers_html/
どうやって確かめるんだろ。
0769デフォルトの名無しさんNGNG
int main()
{
int fd, pid;
void * p_map;
fd = open("/tmp/mmap.txt",O_RDWR|O_CREAT|O_ASYNC, S_IRWXU);
write(fd,"aaaaa",6);
pid = fork();
if(pid==0){ /*child*/
p_map = mmap(NULL,4,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0);
close(fd);
printf("child p_map == 0x%X\n",(int)p_map);
memcpy(p_map,"bbb",3);
munmap(p_map,4);
}
else if (pid>0){ /*parent*/
p_map = mmap(NULL,4,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0);
close(fd);
printf("parent p_map == 0x%X\n",(int)p_map);
wait(NULL);
printf("mmap %s\n",p_map);
sleep(30); /* ここでmmap.txtの内容を確認 */
munmap(p_map,4);
unlink("/tmp/mmap.txt");
}
}
0770デフォルトの名無しさんNGNG
>>768
sleepするところですばやく電源抜くとか

0771デフォルトの名無しさんNGNG
>>770
暇なんて試してみました。linux-2.4.28-pre3,glibc-2.3.3のマシンです。
ファイルはbbbaaという内容に更新されていました。このあたりはOSごとの
実装の違いが大きい話の気がしますので他の環境では当てになりません。

mmapのような複雑な機能を提供する関数の詳細まで調べるのはくどいんで
この話題終わりにします。みなさんどうも。
0772デフォルトの名無しさんNGNG
うはあ、生半可な知識の人が多いね。
0773デフォルトの名無しさんNGNG
>>772
お前を筆頭にな。
0774デフォルトの名無しさんNGNG
mmapの挙動って正しく(?)はどうなの?
>>773みたいなバカはほっといて真面目に議論したいところ
0775デフォルトの名無しさんNGNG
ええとじゃあ便乗して
同一ファイルを、別々にopenしてmmapした場合の挙動ってどうなんでしょ

というか、fork()だと同一fdだから同期されて当然?
0776デフォルトの名無しさんNGNG
>>774-775
黙れカス
0777デフォルトの名無しさんNGNG
たぶん同じファイルのメモリ上のキャッシュは1つしかなくて、
mmapされるのはその同じメモリだろうから自動的に同期されて
見えそうな気がする。
0778デフォルトの名無しさんNGNG
>>777
想像で語るな
0779デフォルトの名無しさんNGNG
>>775 どうもなりませんでした。
[プロセステーブル項目]->[ファイルテーブル]->[vノードテーブル]のうち
fork直後に頭二つの項目を共有しているかどうかはmmapには何の関係もないようです。

int main()
{
int fd, pid;
void * p_map;
fd = open("/tmp/mmap.txt",O_RDWR|O_CREAT|O_ASYNC, S_IRWXU);
write(fd,"aaaaa",6);close(fd);
pid = fork();
if(pid==0){ /*child*/
fd = open("/tmp/mmap.txt",O_RDWR|O_CREAT|O_ASYNC, S_IRWXU);
p_map = mmap(NULL,4,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0);
close(fd);
printf("child p_map == 0x%X\n",(int)p_map);
memcpy(p_map,"bbb",3);
munmap(p_map,4);

}
else if (pid>0){ /*parent*/
fd = open("/tmp/mmap.txt",O_RDWR|O_CREAT|O_ASYNC, S_IRWXU);
p_map = mmap(NULL,4,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0);
close(fd);
printf("parent p_map == 0x%X\n",(int)p_map);
wait(NULL);
printf("mmap %s\n",p_map);
sleep(30); /* ここでファイル内容を確認 */
munmap(p_map,4);
unlink("/tmp/mmap.txt");
}
}
0780デフォルトの名無しさんNGNG
>>709の話だけど、結局mmapのためにファイルのサイズを調整しなくては
ならないなら、WindowsのようにCreateFileMappingのような関数が
あったほうがスマートな感じがしませんか?
論理的なファイル(FS)、マッピング対象オブジェクト、実際のビュー
と三つの観点で綺麗に分けることができる。
0781デフォルトの名無しさんNGNG
逆にWindowsもCreateFileMappingの関数を通常のファイルの読み書きに対しても
適応すべきだったかと。その方が分りやすい。
論理的なファイルに対するハンドルで、いきなり読み書きするのは変。
0782デフォルトの名無しさんNGNG
>>780
スマートだと思うよ。

a)デバイスをシステムのメモリ空間に割り付ける
b)システムのメモリ空間をプロセスのメモリ空間からみえるようにする

a)とb)が明確に分かれていれば、
a)の結果の共有→b)した複数プロセスからの見え方の同期
が素直に理解できるし、>>775のような悩みを持たずにすむ。

abを一緒くたにしちゃってるのは変。
0783デフォルトの名無しさんNGNG
「システムのメモリ空間」って何なんだよ?
0784デフォルトの名無しさんNGNG
キチガイはスルーの方向で
0785デフォルトの名無しさんNGNG
>>781はよく考えてみれば、ReadFile/WriteFileなんかの関数は
UNIXの影響下にあるOSとの互換性を意識して作られたものなのかなって
気がしてきました。
ディスクキャッシュも最終的にはpage cacheとして一元管理されているのなら
Mapして操作することとなんら違いはないはず。

ところでUNIXにおいてmmapでファイルの読み書きするのと、read/writeとでは
パフォーマンスに違いはあるんでしょうか?どこかによいベンチの結果とか
ありますか?
0786デフォルトの名無しさんNGNG
当然mmapの方が早い。
なぜならread/writeではカーネル空間→ユーザ空間、またはその逆の
メモリコピーが発生するから、ずっとコストが高い。

0787デフォルトの名無しさんNGNG
出始めたばかりのSVR4のcat(1)は、
# Sunが作ってUI軍団に配布した奴ね。
mmap(2)で実装されていた。遅かった。

まあ、VMの実装によっても違うと思うが、
mmap(2)ではmemoryをたくさん食ってしまうから遅い、
buffering I/Oでは、processのmemory消費量が少なく、
disk I/Oがうまくinterleaveされるって事だったと思う。

今時の単一仮想記憶だと>>786なのかなあ。
Linuxはそうなんじゃないかと思うが、
FreeBSDなんかはdisk I/Oを特別に扱ってないですか?


0788デフォルトの名無しさんNGNG
memoryやinterleave、それにprocessはカタカナで書けよ。
0789デフォルトの名無しさんNGNG
>>788
YOUはSHOCK世代だから。
0790デフォルトの名無しさんNGNG
昭和のカタカナ世代は横文字が苦手です

変数名や関数名にローマ字多用するのが特徴です
0791デフォルトの名無しさんNGNG
Sun、「Solaris 10」をオープンソースに――年内にプロジェクト発足へ
http://www.itmedia.co.jp/enterprise/articles/0409/14/news030.html
0792デフォルトの名無しさんNGNG
そしてJavaをオプソに。その後には何も残らなかった・・・
0793デフォルトの名無しさんNGNG
NFSなファイルのmmapってどうなんすか?
0794デフォルトの名無しさんNGNG
どうってなにが?
0795デフォルトの名無しさんNGNG
アフォはスルーの方向で。
0796デフォルトの名無しさんNGNG
>>786
> 当然mmapの方が早い。
> なぜならread/writeではカーネル空間→ユーザ空間、またはその逆の
> メモリコピーが発生するから、ずっとコストが高い。

いや、必ずしもそうとは限らない。

mmapではメモリコピーの代わりにページフォールトが発生することになるが
こいつのコストが(特に最近のプロセッサでは)馬鹿にならない。
一方、メモリコピーの場合、コピー元データがL1キャッシュに載っていたりすると
コストが圧倒的に小さくなるから、メモリコピーの回数とパフォーマンスは
必ずしも反比例するわけではない。

てことで、以下のメールのように、条件によってはmmapよりread/writeの方が
速くなることもある。
ttp://lists.freebsd.org/mailman/htdig/freebsd-current/2004-June/029521.html
0797デフォルトの名無しさんNGNG
ページフォルトもsyscallと同じくらいのコストで効いてくるだろうとは
思っていたけど、うーん。
IO-boundとCPU-boundで変わってくるのか。
キャッシュが効いてくるという話なら、バッファの大きさでも変わりそう。

MADV_SEQUENTIALはmanを読むと先行するページを早くページアウトするようにす
るという後ろ向きの最適化だけど、ページフォルトを減らすべく一度に複数ペー
ジをまとめてページインするようにはできないものだろうか。今の話を素直に解
釈すると、これで何か不都合がなければそれなりに効果がありそうに思うのだが。

0798デフォルトの名無しさんNGNG
ページというのは、ファイルのサイズを頭から4kなり8kなりの
CPUのページ単位で区切って、論理的にメモリに割り当てるんでしょうか?
もしそうなら、mmapするときはページ境界を意識して使う必要がありますよね。
というか、page cache一元管理を前提と考えるなら、ファイル構造やユーザー
データなどありとあらゆるデータが、ページ境界を意識すべきということなのかな?

mmap,read/writeの話は結局どういった使い方をするのかっていうのにかかってる
ような。mmapを使うなら、極力フォルトの発生しないようにするのは、ユーザー側で
意識することだろうし。read/writeに関してはカーネルがページフォルトを
抑えるよう、特別にバッファリングしてくれるのかもしれないけど。

ちなみに関係ないですが、インテルのCPUには4MB単位、つまりページディレクトリだけの
ページング方式があったように思いますが、あれじゃWindowsやUNIXといったOSは
(プロセス間通信をmmapで一元管理するのはMach由来なんでしたっけ)
まともに動きそうにないですね。どうなんでしょう。
0799デフォルトの名無しさんNGNG
まあ憶測だけで、間違った考えを持ちつづけてるのもよくないから
ここいらでそろそろ真面目にソースを読んでおくべきということか。
0800デフォルトの名無しさんNGNG
>>798
> もしそうなら、mmapするときはページ境界を意識して使う必要がありますよね。

$ man mmap
0801デフォルトの名無しさんNGNG
>>800
>ファイルはページサイズの整数倍の領域にマップされる。
>サイズがページサイズの整数倍でないファイルの場合、
>マップ時に残りの領域は 0 で埋められ、.......

1) マップの単位はページ境界に整列
2) ファイルも0byte目からページ単位に区切って、それぞれページ境界にぴったりとそろえる。
という二つの意味にとっていいんでしょうか。1は当たり前のことですが。
straceによりlibc(i386)がマップされる様子を見てみると

open("/lib/libc.so.6", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\200^\1"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=1243888, ...}) = 0
old_mmap(NULL, 1254052, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x4001d000
old_mmap(0x40145000, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x127000) = 0x40145000

一つ目のmmapでlibcのファイル全体を、0x4001d000から1254052
(0x1322a4≒0x133000=307ページ)バイト分マップ
二つ目のmmapでおそらく.data領域となるであろう部分をPROT_WRITE,MAP_PRIVATEを指定して、
0x40145000(一つ目のマップ領域中の296ページ目、ファイル中の0x127000=295ページ目。
一つずれているのはなぜだろう?)から32768(0x8000=8ページ)バイト分マップ
という理解であってますか?これなどを見るとファイルの先頭は一応、
ページ境界に一致させてるように見えます。しかし、、リンカはあんまりページ境界を
意識してELFファイルを構成してるようには見えないですね。ヘッダのような実行時に
不要なデータは、ページ境界を意識するならどこか一つにまとめておくべきでしょうね。

ところで、二つ目のmmapは一つ目のものを上書きしてるように見えます。
ページ境界にはもちろん整列してますけど。こういうのもありなんですかね。
0802デフォルトの名無しさんNGNG
ELFの規格にヘッダの場所が定義されているので、
リンカの問題というよりは規格自体の話ですね。訂正。
0803デフォルトの名無しさんNGNG
0804デフォルトの名無しさんNGNG
みんな賢いなあ
何言ってっか全然分かんないや
0805デフォルトの名無しさんNGNG
趣味でプログラムを書いている者ですが、X lib の質問があります。ここで
お尋ねしても宜しいでしょうか? UTF-8 locale 関係です。お願いします。
0806デフォルトの名無しさんNGNG
>>805
ごちゃごちゃ言ってないでさっさと質問しろ
0807デフォルトの名無しさんNGNG
UNIX系スレはこういう突っ込んだ話されないからもっとやって欲しい
つーかmanが貧弱すぎ
MSDNみたいなのが欲しい
もちろんサンプル付きで
0808デフォルトの名無しさんNGNG
Xlib のスレッドあったべ。
0809デフォルトの名無しさんNGNG
805 です。お言葉に甘えて。
(前置き)
Fedora Core 向けに、自作ソフトを UTF-8 対応しました。ところが、
動作が eucJP locale に比べて激しく遅いのです。で、何に時間を
食っているのか調べたら、XCreateFontSetでした。0.02 sec くらい
だったのが、3 sec くらいかかっています。
(で、質問です)
font load を早くするにはどうしたら良いのでしょうか?
見た感じでは、大量のfontをloadしているのではないかと思います。
できれば、iso10646-1 の font 一個のみで済ますようにしたいの
ですが…。
宜しくお願いします。
0810デフォルトの名無しさんNGNG
fontconfig叩いたら?
何せ,古いインターフェースだもんでな。
0811デフォルトの名無しさんNGNG
>>809
$ cat ~/.xserverrc
-deferglyphs all
0812809NGNG
ありがとうございます。
>> 810 さん。ちょっと覗いてみましたが、すぐには理解できなかったので、
勉強してから試してみます。
>> 811 さん。試してみました。効きました。時間は半分になりました。
今のところ、
・Font 指定の曖昧性を減らした。(3sec -> 1sec)
・server option に -deferglyphs を設定した。(1sec -> 0.5sec)
さらに、ですが、xterm は iso10646-1 のフォントのみで表示できている
ので、これも参考にしてみたいと思っています。
0813デフォルトの名無しさんNGNG
>>810
保守もされてないし
これでプログラミングしようとする奴の気が知れないよね
0814デフォルトの名無しさんNGNG
>>813
script kiddyのくせに何を言う。
0815デフォルトの名無しさんNGNG
>>814
quiche eaterのくせに何を言う。
0816デフォルトの名無しさんNGNG
>>813
大丈夫か?
0817デフォルトの名無しさんNGNG
>>816
なにが?
0818デフォルトの名無しさんNGNG
おつむ
0819デフォルトの名無しさんNGNG
てーんてん
0820デフォルトの名無しさんNGNG
>>813
もはや図星を点かれて何も言い返せないな・・・。
全くその通りですが何か?

個人的にUNIXは人を不幸にするOSだと思う。
さっさと死滅してくれると業界も少し平和になるんだが。
0821デフォルトの名無しさんNGNG
Plan9にそろそろ移行する?
0822デフォルトの名無しさんNGNG
MINIXでいいじゃんかよ
0823デフォルトの名無しさんNGNG
そこで GNU Hurd ですよ.
0824デフォルトの名無しさんNGNG
>>820
WinSockの理不尽なバグや意図角プロセスのリソースリークがシステム全体のダメージになったりするのはプログラマを幸せにしますか?
0825デフォルトの名無しさんNGNG
てゆーか普通に考えたら、
定期的に再インストールしないとパフォーマンスが落ちたり
不安定になったりするようなOSは、ものすごい欠陥品だよねぇ。
みんなよく使ってるよなあ。

なんてことをうぃんどーずから書き込んでみる。
0826デフォルトの名無しさんNGNG
まだwin9x使ってるの?
0827デフォルトの名無しさんNGNG
おれときどきfreebsd再インストールしてるよ
やっぱおかしくなるし
0828デフォルトの名無しさんNGNG
>>827 はときどき rm -rf * ~ とかやっているおっちょこちょいさん
0829デフォルトの名無しさんNGNG
普通はおかしくなった時点で、その原因を調べると思うんだが…
0830デフォルトの名無しさんNGNG
>>829
コストの差だね。
原因調べるよりも、まず再起動した方が安い場合も多いよ。
0831デフォルトの名無しさんNGNG
再インストールの話題だと思ってたのはオレだけですか?
0832デフォルトの名無しさんNGNG
再インストールも楽になってるし、原因を調べるなんて
>>830のいうようにコストの面からしてアホらしくなってるしな
0833デフォルトの名無しさんNGNG
原因を調べなくてはいつまでたっても、同じようなことを繰り返すわけだが。
0834デフォルトの名無しさんNGNG
繰り返すようになってから対策を練ればいい。
0835デフォルトの名無しさんNGNG
ってことで >>827 は対策を検討すること。
0836デフォルトの名無しさんNGNG
頭の悪い人:
・使い方がアホだからこそおかしくなる。これが根本原因
・お仕着せのままで満足してしまうので再インストールがコストが低いと思ってる
・アホだから原因を調べられないのにコスト比較のふりをして現実から逃避
→そんなあなたにピッタリなのは……おせっかい設定てんこもりのVine Linux
お仕着せをありがたがって使いましょう、好みと違っても文句禁止、質問は犬板で。
まちがってもLinux板から出てきちゃだめ

頭のいい人:
・理解して使ってればそもそも変な使い方しないからそうそうおかしくならない
・インストール後様々なカスタマイズやコンピュータにさせる仕事の設定を行う
ので再インストールのコストは低くない
・おかしくならないから長いこと使う、自然カスタマイズも進む
→そんなあなたは*BSDでもSolarisでもお好みでどうぞ、どれでも大丈夫
0837デフォルトの名無しさんNGNG
そもそもUNIXで再インストールが必要になる状況ってどんなの?
Windowsだって、システモの情報がある程度まで公開されていれば
再インストールなんて必要ない。ただWindowsは複雑だから面倒くさそう。


プログラミングに関係ない話題はよそでお願いします
0838デフォルトの名無しさんNGNG
アフォはスルーの方向で。

まあ再インストールでいいんでねえの?
バックアップもM$のクソOSに比べれば簡単なんだし。
なんでこんなに拒絶反応があるのか理解に苦しむ。
0839デフォルトの名無しさんNGNG
つか、再現不能で上がってきた不具合を何日も調査して結局ハード
のせいだったとわかった時には。。。 _| ̄|○
0840デフォルトの名無しさんNGNG
バックアップのリストアは普通は再インストールとは言わないよ。
問題が内在していないのはいつの分までかを簡単に調べられたら
バックアップのリストアでもいいけど、普通はわざわざそんなこと
せずに動いてるシステムで原因を修正しておしまい。

0841デフォルトの名無しさんNGNG
>>838は自分をスルーしろと言う珍しい香具師だな。

0842デフォルトの名無しさんNGNG
OSから再インストールってのは少ないが、アプリケーションの再インストール
はたまにあるな。なにしろ動いてるものなんで、ゆっくり原因解析してる暇は無い。
0843デフォルトの名無しさんNGNG
侵入の形跡が発見されたらOSの再インストールが必要だと思います。
0844820NGNG
なんか大漁ですが
釣りのつもりはありませんでした
ごめんなさい
やっぱUNIXは不幸なOSなのか
みんな苦労してそうだな〜
0845デフォルトの名無しさんNGNG
UNIXerたるもの、システムのすべてを把握しているものだ。
ファイルの一つ一つのpermissionもチェックし、
書き換わらないようなファイルの置き場と、
よく書き換わるファイルの置き場を区別するものだ。


・・・とか言い出しそうでキモい
0846デフォルトの名無しさんNGNG
そのうち犬糞にシェア食われて死滅するでしょ。
ほっとけよ。
0847デフォルトの名無しさんNGNG
ここは UNIX"プログラミング"質問すれ ですよ。

おまえらまとめてよそでやれ。
0848デフォルトの名無しさんNGNG
>>845
え? まともな管理者ならファイルのパーミッションはチェックしていて当然だろ。
*BSDだとかいくつかのLinuxのdistributionだとsetuidされたファイルの
変更をcronでチェックするようになってるし、マルチユーザ環境なら
だれでも書けるファイルやディレクトリはじめパーミッションの確認は必須だろ。
Windowsと違ってデフォルトが安全サイドだから要注意対象はたかが知れてる。

後半に至っては/varの存在意義を否定してるな。

>>844
言葉が抜けてる。
UNIXは「バカにとっては」不幸なOSかも知れない
「おバカの仲間は」みんな苦労してそうだな〜
0849デフォルトの名無しさんNGNG
UNIXに慣れることができなかった奴は、UNIXが分らなかったんじゃなくて、
OSそのものが分らなかったんだよ。それをUNIXが古臭いということに摩り替えて
ごまかす。多分そういう奴はWindowsのことも大して分ってない気がするけどね。
0850デフォルトの名無しさんNGNG
>>845
ファイル一つ一つについてサイズパーミッションと変更時刻を読み上げて
資料と照らし合わせるってのは実際にやるよ。
0851デフォルトの名無しさんNGNG
UNIXは馬鹿にとって幸福なOSだと思っていたが違うのか
0852 ◆FIcNi4f8js NGNG
UNIXは馬鹿には使えないOSです
0853デフォルトの名無しさんNGNG
(・∀・) うわーい、ひゃっほー!
0854デフォルトの名無しさんNGNG
ドライバの一つも書けない奴がUNIXを使えるとは言いません。
0855デフォルトの名無しさんNGNG
うわー
マジキモ
0856デフォルトの名無しさんNGNG
ドライバ書けるけどUNIXあまりよくしらナイヨ
0857デフォルトの名無しさんNGNG
>>856
わしも。
仕事が組み込み系だし。
割とありがちでないの?
0858デフォルトの名無しさんNGNG
組み込みエンジニアはこの先引く手あまただろうな。うらやましい。
おれも勉強するぞ!
0859デフォルトの名無しさんNGNG
そうやって俺をイラつかせて、何をしたいんだ。
俺に恨みでもあるのか。それとも人をからかうのが好きなのか。
どちらにしても、お前は悪意をもって人を傷つけようとした。
こういう事はこれで最後にしろ。
0860デフォルトの名無しさんNGNG
>>859
流行っちゃうよそんなにあちこち貼ったら。
書いたひとはどっちかっていうと被害者なのに。
0861デフォルトの名無しさんNGNG
<事業者><送信者>
東京都新宿区西新宿2-3-15大山ビル2F
55ソフトシステムズ
配信停止の場合の返信先 [email protected]
配信停止は24時間後に反映されます。
当配信は送信に関する特定商表示義務規定に則り送信しています。
------------------------------------------------------------
以下のビジネスソフトを激安販売します
・Windows 系 Os Office 等  全て 6割〜8割 引
・Adobe 系 Os Photoshop 等 全て 8割〜9割 引 
・CADソフト 及び ビジネスソフト  全て 6割〜9割 引
その他 合計280種類のビジネスソフトがあります。
サポート付きですので納得安心価格です。
郵便代引きで 即日急送します
くわしくは
http://www.55soft.net/
をご覧ください
 == 55Soft.net は、ビジネスソフトの安売り王です ==
0862デフォルトの名無しさんNGNG
メガネをかけたやつは覗きマニアばっかりだな
0863デフォルトの名無しさんNGNG
>>850
UNIXの頭のいいやつなら
サイズパーミッションと変更時刻も変更せずに、プログラムを
書き換えることもできるだろ
0864句読点書けないバカをサマージャンボする俺 ◆9NQzQ21lx. NGNG
>>863
0865デフォルトの名無しさんNGNG
>>864
いつまで夏のつもりだ池沼
0866デフォルトの名無しさんNGNG
季節もわからない人に言われても、ねぇ。
0867デフォルトの名無しさんNGNG
>>863
通常不可能。
root権限を奪えば可能性はありますが、それでも
例えばFreeBSDではその可能性のある操作を禁止できます。
0868デフォルトの名無しさんNGNG
今年は一年夏でしたとか。
0869デフォルトの名無しさんNGNG
0870デフォルトの名無しさんNGNG
CPUの判別方法を教えてください
0871デフォルトの名無しさんNGNG
popen("uname -m", "r");
0872デフォルトの名無しさんNGNG
unameはunix標準ではありませんが?バカ?
0873デフォルトの名無しさんNGNG
使えない環境に当たったこと無いな。
0874デフォルトの名無しさんNGNG
#include <sys/utsname.h>
int uname(struct utsname *name);
0875デフォルトの名無しさんNGNG
CPUの判別方法なのに。
ヴァカ?
0876デフォルトの名無しさんNGNG
OSを特定せずにCPUの判別方法なんて尋ねる方がバカ。
unameをPOSIXが定めていることを知らないで暴れてる>>872もバカ。
0877デフォルトの名無しさんNGNG
>>870
config.guessとか。中を覗くといろいろやってるね。
0878デフォルトの名無しさんNGNG
machdep.c あたりにある identifycpu() みたいな話を言ってるんじゃないの?
0879デフォルトの名無しさんNGNG
職場に「昔の Unix はプログラム終了前に必ず free しないと malloc などで獲
得したメモリは開放されない」と言っている先輩がいます。これは本当ですか?
0880デフォルトの名無しさんNGNG
昔のUnixは知りませんが本当です
0881デフォルトの名無しさんNGNG
>>879
free on exit fj でぐぐればたぶん出てくるよ。
0882デフォルトの名無しさんNGNG
その話題はタブーです。
0883デフォルトの名無しさんNGNG
>>879
資源管理がいい加減なOSならリークするでしょう。

どちらにせよ、

「プロセス中で確保したもんは必ず手動で閉じなされ。」

と言うのは肝に銘じてた方がいいっす。
0884デフォルトの名無しさんNGNG
>>879
どちらにせよ、

「mallocしてfreeしないと云々。」

というのを耳にしたら一目散に逃げるべしと言うのは肝に銘じてた方がいいっす。
0885デフォルトの名無しさんNGNG
取りあえず閉じる癖付けとかないと、単発確保のメモリはともかくデーモンのループで確保して解放しないとか言う
悲しいバグを組み込む率が上がりそうだ。
0886デフォルトの名無しさんNGNG
最近のGCのある言語なら勝手に解放してくれるし
プロセスも終了時にリソースの解放をしてくれる。
ただし自分で明示的に解放を指示になければならない
ケースも存在しないわけではないので
大切なのは盲目的教条主義に陥らずに
その都度最適な方法を判断することだ。
0887デフォルトの名無しさんNGNG
おお、今度はmalloc & freeネタか?
香ばしいねえ

とはいえ、unixerたるもの、OSから借りた資源はしっかり返すものだな。
これをわかってないド素人がunixerを気取ってるのは、正直イタい。
0888デフォルトの名無しさんNGNG
さっそくsageも知らないヴァカが湧いてきました
0889デフォルトの名無しさんNGNG
>>886
いや、ファイルとかセマフォとか。<資源
GCのある言語はデストラクタの実行タイミングが曖昧なのでスマートポインタのような使い方はお勧めしない。
0890デフォルトの名無しさんNGNG
Javaでファイルが開けなくなるアレですね
0891デフォルトの名無しさんNGNG
>>886
>その都度最適な方法を判断することだ。

解放しないのが適切な場合ってどんなの?
移植性は下がるしヒューマンエラーの温床となるし、良い所ってぱっと思いつかないんだけど。
0892デフォルトの名無しさんNGNG
sage荒らしを発見しますた
0893デフォルトの名無しさんNGNG
そのプログラムのライフサイクルによっては
イチイチfreeしてまわるよりはexitしてもらったほうが
ソフトウェア製造コストとしては安いかもね

それを最適と呼ぶかどうかは状況によるなあ
0894デフォルトの名無しさんNGNG
>>891
OSが適切に処理してくれるのに、わざわざ自分で処理を書いたほうが
ヒューマンエラーの元になることがわからないのか。
0895デフォルトの名無しさんNGNG
全部879の自作自演かな
0896デフォルトの名無しさんNGNG
この宗教戦争ネタでfj.lang.cで盛り上がってたのって大昔だろ
いやすでにfj.comp.lang.cになってたか

今更食いついてる香具師って何者?
この話題に関わっても無知蒙昧をさらすだけよ、いろんな意味で。
すでに1000000辺ぐらい繰り返された論争の、低レベル縮小ミニマム再生産版
見せられて喜ぶ奴なんていやしないんだから。
0897デフォルトの名無しさんNGNG
>>896
輪廻転生
0898デフォルトの名無しさんNGNG
古典芸能ですよ。
0899デフォルトの名無しさんNGNG
20レス稼いだ
0900879NGNG
なんか大漁ですが
釣りのつもりはありませんでした
ごめんなさい
やっぱUNIXは不幸なOSなのか
みんな苦労してそうだな〜
0901デフォルトの名無しさんNGNG
不幸なのはユーザーだけだから
0902デフォルトの名無しさんNGNG
>>900
リソースリークが即死を意味するようなWindowsよりかは幸せです。
0903デフォルトの名無しさんNGNG
>>902
はぁ?
0904デフォルトの名無しさんNGNG
>>903
犬糞や海栗糞が窓叩く場合Win98以前をターゲットにするのがマナーなんだよ。
0905デフォルトの名無しさんNGNG
関係ないはなししは他所でおねがいします。
0906デフォルトの名無しさんNGNG
>>904
それがWin2kだったりするから質が悪いんだと。
まぁ、俺のプログラムの質が悪かったと言えばそれまでだが。

某プラントシステムがぐらぐらになったよ。
0907デフォルトの名無しさんNGNG
Windowsの場合、メモリはリークしてるように見えてるだけ
0908デフォルトの名無しさんNGNG
だからさC#やJavaが台頭してきた時代に
前世紀の遺物であるfj.comp.lang.cを楯に思考停止に陥るのは
いかがなものかと言ってるわけさ。
0909デフォルトの名無しさんNGNG
>>907
そう言われても俺の糞プログラムにはmallocはあってもfreeはない。
0910デフォルトの名無しさんNGNG
いみふめー
0911デフォルトの名無しさんNGNG
>>908
ネイティブな言語が減ってきて暮らしにくい世の中になったなと。
豊富な資源がアル前提でRADするには最高の環境なんだけどね。
0912デフォルトの名無しさんNGNG
>>908
盾にって言われても、fjでの議論の結論知らないんだけど
どっちが勝ったんだっけ?
0913デフォルトの名無しさんNGNG
>>912
そんなことはどうでもいいんだよ。
いったんリセットして僕たちは0から話し合うべきなんだ。
0914デフォルトの名無しさんNGNG
結論なんてでるわけないじゃん。
自分でOS作って俺環境こそが唯一正しいと
主張するならある程度の妥当性はあるだろうけど。
0915デフォルトの名無しさんNGNG
>>913
正解。
昔と今では状況も違えば常識も違う。

ムーアの法則が未だに有効であることからも状況が少なからず変わっていることがおわかり頂けるだろう。
0916デフォルトの名無しさんNGNG
>>905が無視されているようなので一応言っておこう。

はなししってなんですか。
0917デフォルトの名無しさんNGNG
>>914
linuzの性格がもう少し悪ければ・・・と言う話ですね?
0918デフォルトの名無しさんNGNG
>>889
> GCのある言語はデストラクタの実行タイミングが曖昧なので

みんなJava風なわけではない。


0919デフォルトの名無しさんNGNG
>>912
fjや2chの議論に結論はない。まとめがある場合はある。
free on exitはまとめがあったはず。
0920デフォルトの名無しさんNGNG
ちゃんと解放しろっての
リソース=メモリってわけじゃないし

0921デフォルトの名無しさんNGNG
直後に exit することがわかってんなら必要ねえっての
明示的に開放しないと問題のあるリソースならともかく
0922デフォルトの名無しさんNGNG
1000までに決着つけようぜ
0923デフォルトの名無しさんNGNG
その前にgotoの是非について決着をつけろ
0924デフォルトの名無しさんNGNG
goto使うやつは馬鹿
0925デフォルトの名無しさんNGNG
goto使わないやつはマヌケ
0926デフォルトの名無しさんNGNG
goto使えないやつは馬鹿
0927デフォルトの名無しさんNGNG
うひょーーーーーさっそく知将が発生したっっっ
0928デフォルトの名無しさんNGNG
goto >>927;
0929デフォルトの名無しさんNGNG
SIGPLANではインデントの話は禁止です。
0930デフォルトの名無しさんNGNG
goto HEAVEN;
0931デフォルトの名無しさんNGNG
>>912
俺はホントに最初の頃の議論しか見てないが、印象としては

UNIX系のマトモなHosted Environmentを主に使ってる人→
そんなのカーネルにまかせろや。free()しないと回収できないような
システムなら、killもできないってこったぜ
仮想メモリ管理をちゃんとやってるOSでfree on exitなんざアホの極み

主に組み込み系エンジニア、またはWin16あたりのクソOSユーザだった人→
回収しろったらしろ。

な感じと記憶しているが、確実にいえるのは「必要な場合ならやれ」。それだけなら
当たり前で、そこに移植性やらコーディングスタイルやら思想やらの問題を
持ち出す香具師がいるから宗教戦争になる。
ただ、業務系では意外に頭固い人多いんだよね。free on exitをしないのは
だらしが無いとか何とか。「それが適切か」ではなく、「そもそもそういう
スタイルが許せない」人が多い。
0932デフォルトの名無しさんNGNG
gogo HEAVEN;
0933デフォルトの名無しさんNGNG
気になる人は
atexitに登録した関数内で開放するということでFA?
0934デフォルトの名無しさんNGNG
Ruby!
0935デフォルトの名無しさんNGNG
Rubyはリークしまくるから業務には使えないと思う。
いつ安定するんだか。
0936デフォルトの名無しさんNGNG
Ruby.>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>UNIX
0937デフォルトの名無しさんNGNG
↑なんか最近怖くなってきたw
0938デフォルトの名無しさんNGNG
elisp>>>>>>>>>>>>>>>>> Ruby
0939デフォルトの名無しさんNGNG
Python >>>>>>> |越えられない壁| >>>>>>>>>>>> Ruby
0940 ◆FIcNi4f8js NGNG
Cはリークしまくるから業務には使えないと思う。
いつ安定するんだか。
0941 ◆FIcNi4f8js NGNG
Pythonはリークしまくるから業務には使えないと思う。
いつ安定するんだか。
0942デフォルトの名無しさんNGNG
CPUはジャンプしまくるから業務には使えないと思う。
いつ安定するんだか。
0943デフォルトの名無しさんNGNG
電子は振動しまくるから業務には使えないと思う。
いつ安定するんだか。
0944デフォルトの名無しさんNGNG
お前ら2chやりすぎるから業務には使えないと思う。
いつ仕事するんだか。
0945デフォルトの名無しさんNGNG
宇宙は膨張しまくるから業務には使えないと思う。
いつ安定するんだか。
0946デフォルトの名無しさんNGNG
アソコが膨張しまくるから女にはぶち込めないと思う。
いつ発射するんだか。
0947デフォルトの名無しさんNGNG
せめてageろ。
0948デフォルトの名無しさんNGNG
>>946
俺と(ry
0949デフォルトの名無しさんNGNG
>>912
2000年頃のやつなら
http://groups.google.co.jp/groups?hl=ja&lr=&ie=UTF-8&inlang=ja&c2coff=1&selm=95cjf3%24il3%241%40news.tut.ac.jp
これが結論でいいと思う
0950デフォルトの名無しさんNGNG
結論はないという結論
0951デフォルトの名無しさんNGNG
メジャーなオプソプロジェクトでfreeしていないものを教えてください。
またfree不要論者は最大何人月、何行くらいのプロジェクトでfreeを省きましたか?
0952デフォルトの名無しさんNGNG
Ruby>>>>>>>>>>>>>>>>>>>>>>>>>>> free
0953デフォルトの名無しさんNGNG
>>951
全く意味不明なのだが。
0954デフォルトの名無しさんNGNG
ニゲタ━━━━(゚∀゚)━━━━ッ!!
0955デフォルトの名無しさんNGNG
オープンソースプログラムで、必要なfreeを行っていないプログラムを知りたいんでしょ。
0956デフォルトの名無しさんNGNG
>>955
何か意味あるの?
0957デフォルトの名無しさんNGNG
FreeBSDの/usr/bin配下調べればありそうだけど面倒だからやらないw
0958デフォルトの名無しさんNGNG
いまちらと見たが、freebsdのcatはmalloc()を一回しててfree()してない。
プロセスの実行中に何度も実行され、ワーキングセットを着実に増加させて
いくような性質ではないmalloc()なら、わざわざfree()してないプログラムは
多いだろう。
典型的なのが、初期化処理内でのmalloc()ね。
0959デフォルトの名無しさんNGNG
必要なfreeはやるべき。それは誰も否定してない。
必要じゃないfreeをやらなくていいって話
0960デフォルトの名無しさんNGNG
そしてすべての free が必要だと主張する人がいて以下 loop.
0961デフォルトの名無しさんNGNG
そんなヤツはアホなので即刻 exit
0962デフォルトの名無しさんNGNG
賢い人はこういうドキュンな話題には触れないよな
0963デフォルトの名無しさんNGNG
賢い人はちゃんと全部freeするからな
0964デフォルトの名無しさんNGNG
>>963
禿同。
みんな引きオタの実績0の脳内理論に釣られすぎだよ。
0965デフォルトの名無しさんNGNG
習慣的にワンセットでfreeまで書いてしまうよな
0966デフォルトの名無しさんNGNG
いらなくなったらfreeするけど、いらなくなる時点=プログラム終了時
ならexitするだけで済ましちゃうな。楽だし(笑)
0967デフォルトの名無しさんNGNG
age
0968デフォルトの名無しさんNGNG
(笑)
0969デフォルトの名無しさんNGNG
>>966
あーあ。non portableなプログラムを書いてしまったね。
0970デフォルトの名無しさんNGNG
今時ポータブルなプログラムって(笑)
0971デフォルトの名無しさんNGNG
既にそう書かれてしまった過去の遺物、小規模使い捨て、個人用途の
そもそもスタイルを云々することの必要性が皆無なプログラムの場合
好きにしろと言うことだよ。
0972デフォルトの名無しさんNGNG
(笑)
0973デフォルトの名無しさんNGNG
(藁)
0974デフォルトの名無しさんNGNG
(w)
0975デフォルトの名無しさんNGNG
ところで、freeせずにexitするとmallocした領域が戻らない
実装のUNIXにはどういうものがあるか教えてください。
0976デフォルトの名無しさんNGNG
バグ持ちUNIX
0977デフォルトの名無しさんNGNG
そういうのって途中で強制終了したら解放されないんだろうか
0978デフォルトの名無しさんNGNG
リブートしてもリークしたメモリが物理的に焼きついちゃうこともあるらしい
0979デフォルトの名無しさんNGNG
ふーん
0980デフォルトの名無しさんNGNG
今までに書いた最もうんこなコード。
今もどこかで動き続けているに違いない。

void *foo()
{
 static void *buf;
 if(!buf) buf = malloc(...);
 ...
 return buf;
}
0981デフォルトの名無しさんNGNG
なんでstatic
0982デフォルトの名無しさんNGNG
NULLとfreeはセットで
0983デフォルトの名無しさんNGNG
>>985
次スレ乙
0984デフォルトの名無しさんNGNG
【旧態依然】malloc&free総合スレ【温故知新】
0985デフォルトの名無しさんNGNG
次スレ

http://pc5.2ch.net/test/read.cgi/tech/1065535118/
0986デフォルトの名無しさんNGNG
>>965
書くだけか(藁
0987デフォルトの名無しさんNGNG
次は open と close について議論します
0988デフォルトの名無しさんNGNG
>>931
>主に組み込み系エンジニア、またはWin16あたりのクソOSユーザだった人→

Win16でもfreeいらないでしょ。
0989デフォルトの名無しさんNGNG
わざわざfreeしない理由がわからん
OSに頼るのはセーフティネットとして でいいじゃん
0990デフォルトの名無しさんNGNG
やることがないと詰まらない事を考えるようになるんだよ。
0991デフォルトの名無しさんNGNG
>>990
ボケた老人みたいですね
0992デフォルトの名無しさんNGNG
わざわざfreeする理由がわからん
0993デフォルトの名無しさんNGNG
>>991
実際頭の回らなくなってきたロートルがごねてるだけだしな。
0994デフォルトの名無しさんNGNG
>>989
OS に頼らないでプログラムを組むのは(特に Unix の場合)難しいと思うけど。
0995デフォルトの名無しさんNGNG
#define malloc(s) free(malloc(s))
0996デフォルトの名無しさんNGNG
要するにfreeのステータスはチェックしろってこと
0997デフォルトの名無しさんNGNG
unameもそうだけど、
UNIXって意味不明な名前のコマンドだらけで嫌気が差した
いいからメニューから全機能選べるようにしろよ
イミフメコマンド文化なんか続けてるから一向に普及しないんだよ
0998デフォルトの名無しさんNGNG
ほうほうなるほど
0999デフォルトの名無しさんNGNG
誰か本当の次スレ立ててよ・・・

以下テンプレ
-------------------------------------------------------------------
UNIXプログラミング質問すれ Part4
-------------------------------------------------------------------
UNIXおよびUNIX clone環境一般のプログラミングに関する質問スレッド

前スレ
Part3 http://pc5.2ch.net/test/read.cgi/tech/1085930894/
Part2 http://pc5.2ch.net/test/read.cgi/tech/1055110889/
Part1 http://pc2.2ch.net/tech/kako/992/992057422.html

>>2-20 関連スレ
-------------------------------------------------------------------
1000デフォルトの名無しさんNGNG
まずは自分の脳味噌をどうにかしろよ馬鹿が
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。