[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 05/09 09:49 / Filesize : 207 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん mailto:sage [2005/05/24(火) 13:14:50 ]
UNIXおよびUNIX clone環境一般のプログラミングに関する質問スレッド

前スレ
Part5 pc8.2ch.net/test/read.cgi/tech/1105723117/
Part4 pc5.2ch.net/test/read.cgi/tech/1095843584/
Part3 pc5.2ch.net/test/read.cgi/tech/1085930894/
Part2 pc5.2ch.net/test/read.cgi/tech/1055110889/
Part1 pc2.2ch.net/tech/kako/992/992057422.html

Part3のミラー
makimo.to/2ch/pc5_tech/1085/1085930894.html
Part2のミラー
makimo.to/2ch/pc5_tech/1055/1055110889.html

関連スレ
Cygwin使っている人いますか? その14 (UNIX板)
pc8.2ch.net/test/read.cgi/unix/1107587275/
Cygwin使っている人いますか? 3 (Windows板)
pc8.2ch.net/test/read.cgi/win/1090131123/


関連板
pc8.2ch.net/unix/
pc8.2ch.net/linux/

618 名前:デフォルトの名無しさん mailto:sage [2005/08/07(日) 17:05:00 ]
ファイルからの入力を監視しつつ標準入力を受け付けるような応用はselect()で事が足りるね。

619 名前:デフォルトの名無しさん mailto:sage [2005/08/07(日) 18:12:18 ]
ファイルからの入力はselectしなくてもいつでも読み出し可能だろ

620 名前:デフォルトの名無しさん mailto:sage [2005/08/07(日) 18:32:31 ]
nfsやgmailfsでも?

621 名前:デフォルトの名無しさん mailto:sage [2005/08/07(日) 19:12:58 ]
>>620
理論上は

622 名前:デフォルトの名無しさん mailto:sage [2005/08/07(日) 19:35:42 ]
readがブロックすることと、readに時間がかかるのは別。

623 名前:618 mailto:sage [2005/08/07(日) 20:18:08 ]
>>619
tail -f相当しながら標準入力をファイルに書き出すプロセスを実際に作った経験で書いたんだけど。

624 名前:デフォルトの名無しさん mailto:sage [2005/08/07(日) 20:54:12 ]
tail -f相当って普通に考えて現在のファイル末尾まで
読んだらEOF返るだろ
select()しても無駄なんじゃないの
そのへぼプログラムはポータブルに動くのか?

625 名前:デフォルトの名無しさん mailto:sage [2005/08/07(日) 21:09:09 ]
そうなんだ
ファイルがまだcloseしてないときでも
EOFが帰るのか
ちょっと試してみるか

626 名前:618 mailto:sage [2005/08/07(日) 21:14:50 ]
>>624
いや、標準入力はEOFにならないんだけど。



627 名前:デフォルトの名無しさん mailto:sage [2005/08/07(日) 21:35:00 ]
なんか618がかわいそうになってきた。

628 名前:デフォルトの名無しさん mailto:sage [2005/08/07(日) 21:41:54 ]
>>627
いや、>>619>>618が戦ってるだけだろ
>>618が標準入力とファイルを読む という話をしているのに対して
>>619がファイルは云々と標準入力のことを棚上げして
以降話がかみ合わないままなんだよ

629 名前:デフォルトの名無しさん mailto:sage [2005/08/07(日) 21:48:25 ]
>>626
標準入力はEOFにならないとしてもファイルはEOFになるんじゃないの?
一度EOFまで達したファイルディスクリプタって
その後書き込みがあったときに読み込み可能になるの?
標準入力はselectで待てるけど、ファイルは最後まで読み切ったら
selectのタイムアウト後に自分でseekしてみるしかないんじゃなくて?
それは別々な処理だし、selectで待つとは言い切れないんじゃない?

630 名前:デフォルトの名無しさん mailto:sage [2005/08/07(日) 21:52:40 ]
>>624
一旦EOFを返しても、そのファイルが拡大されれば、
その後のread(2)でデータが読める。select(2)もOK。
この仕様は4BSDが始めた。(たしかtail -fのために)

その頃のSystem Vは駄目だったけど、今これがダメなUNIXはないと思う。
www.opengroup.orgあたりはどういう風に言及しているのかな。

631 名前:デフォルトの名無しさん mailto:sage [2005/08/07(日) 22:00:00 ]
拡大されるまでは無限ループし続けるのか
そりゃずいぶんな実装だなw

632 名前:630 mailto:sage [2005/08/07(日) 22:08:03 ]
GNUのtailなんかは再チェックのsleep時間を指定可能。

最近のUNIXはfile notificationがあるので、
(fcntl(2)のF_NOTIFY&DN_MODIFY)
こっちを使えば、いい場合もあるけど。(tail -fではみたことないけどね)

633 名前:デフォルトの名無しさん mailto:sage [2005/08/07(日) 22:09:28 ]
結局select()でtail -fを実装できないのは同じだな
どんなプログラムだったんだろう・・・見てみたい

634 名前:デフォルトの名無しさん mailto:sage [2005/08/07(日) 22:18:15 ]
>>632
EOFに達してもselect抜けるよね
EOFに達したあと、再度selectにつっこんだら
拡大されるまではブロックされるの?

635 名前:デフォルトの名無しさん mailto:sage [2005/08/07(日) 23:16:39 ]
まぁ最近じゃ tail -f は sleep なんかせずに kqueue を使って
スマートに実装されてる訳だが。

636 名前:デフォルトの名無しさん mailto:sage [2005/08/07(日) 23:42:36 ]
tail.c
www.freebsd.org/cgi/cvsweb.cgi/src/usr.bin/tail/tail.c?rev=1.21&content-type=text/x-cvsweb-markup



637 名前:デフォルトの名無しさん mailto:sage [2005/08/07(日) 23:57:54 ]
該当部分はこっちだろ。
tail/forward.c
www.freebsd.org/cgi/cvsweb.cgi/src/usr.bin/tail/forward.c?rev=HEAD&content-type=text/x-cvsweb-markup

638 名前:デフォルトの名無しさん [2005/08/08(月) 00:57:00 ]
makefileの書き方で質問です。
makefileのあるディレクトリの下に、
Aというサブディレクトリと、Bというサブディレクトリがあり、
ここのサブディレクトリにもそれぞれmakefileがあります。
このとき、親ディレクトリからAとBの両方を一度にメイクするには
どのように書けば良いのでしょうか。

よく他人の作ったプログラムやLinuxのカーネルをメイクすると、
入ります ディレクトリ xxx
出ます ディレクトリ xxx
というような表示が出るのですが、その方法を教えてほしいです。

639 名前:デフォルトの名無しさん mailto:sage [2005/08/08(月) 00:57:55 ]
echoコマンドつかってるんじゃね?

640 名前:デフォルトの名無しさん mailto:sage [2005/08/08(月) 01:02:24 ]
>>638 make -C
pc8.2ch.net/test/read.cgi/tech/1029599472/

641 名前:618 mailto:sage [2005/08/08(月) 02:45:52 ]
最早恥晒しにしかならないみたいだけれど、一応概略のみ。
--
FILE * fp = fopen(file, "r");
fseek(fp, 0, SEEK_END);
for (;;) {
if (fgets(fp)) {
/* tail -f相当 */
}
FD_SET(0);
select();
if (rtn > 0) {
if (FD_ISSET(0)) {
if (!fgets(stdin)) {
break;
}
/* ファイルに書き出す */
}
--
実際にはこれにmsgが絡んでもう少し複雑。

642 名前:デフォルトの名無しさん mailto:sage [2005/08/08(月) 10:08:29 ]
stdioとselectは混ぜるな危険。
バッファには先読みされてるがselectでは空という場合もあるぞ。

643 名前:デフォルトの名無しさん mailto:sage [2005/08/08(月) 10:10:12 ]
正直、>>618には失望した

644 名前:デフォルトの名無しさん mailto:sage [2005/08/08(月) 13:22:16 ]
setvbuf(f, _IONBF)やfflush()と併用すれば安全に使える状況も多い。
fscanf()あたりと使うのは絶望的。

645 名前:618 mailto:sage [2005/08/08(月) 18:52:10 ]
失望されちった。

流石に標準入力は実際にはfgets()してません。
バッファリングしない一行入力関数を作ってそれを呼んでます。
#だから概略なんだってば。

646 名前:デフォルトの名無しさん mailto:sage [2005/08/08(月) 20:04:39 ]
FreeBSDまたはLinuxでpthreadを使用してメインスレッドとサブスレッド内で
sleep(3)を使おうと思ってるのですが、sleep(3)はスレッドセーフですか?
man(FreeBSDとLinuxの両方)を見たけどその記述が見つかりませんでした。



647 名前:デフォルトの名無しさん mailto:sage [2005/08/08(月) 20:07:56 ]
駄目だよ。SIGALRM使っているから。select(2)使いな。

648 名前:デフォルトの名無しさん mailto:sage [2005/08/09(火) 01:20:09 ]
>>647
SIGALRMでsleep(3)実装ってどんな化石OSの話でつか。

649 名前:デフォルトの名無しさん mailto:sage [2005/08/09(火) 01:41:57 ]
>>648
( ゚д゚) ポカーン


(´-`).。oO(わからないなら黙ってればいいのに…)

650 名前:デフォルトの名無しさん mailto:sage [2005/08/09(火) 02:55:14 ]
GUIプログラミングを学びたいのですが、どこから始めればいいでしょうか。
レベルはK&Rを読了です。


651 名前:デフォルトの名無しさん mailto:sage [2005/08/09(火) 03:07:35 ]
>>649
( ゚д゚) ポカーン
thread safeにするため最近のOSじゃalarmは軒並みnanosleepで実装されてるよ。

(´-`).。oO(じじいはひっこんでりゃいいのに…)

652 名前:デフォルトの名無しさん [2005/08/09(火) 03:08:54 ]
alarmじゃねえ、sleepだ。
大事なところで噛んだ。ちきしょう。

653 名前:デフォルトの名無しさん mailto:sage [2005/08/09(火) 08:08:50 ]
>>650
Xorg のソースあたりから

654 名前:デフォルトの名無しさん mailto:sage [2005/08/09(火) 08:20:58 ]
Cしか知らんのならXtかGTKのチュートリアルくらいしかGUIへのとっかかりは
ないんじゃないか?


655 名前:デフォルトの名無しさん mailto:sage [2005/08/09(火) 08:46:06 ]
Open Groupはsleep(3)のSIGALRMによる実装を許容。
www.opengroup.org/onlinepubs/009695399/functions/sleep.html
ポータブルにしたいなら、sleep(3)は使わない方がいいね。

656 名前:デフォルトの名無しさん [2005/08/09(火) 13:11:11 ]
UNIXドメインソケットをつくってbindしたときにできる
ソケットファイルのパーミッションは 何で指定するの?
あとから 777 に変えたいときはどうしたらいいの?
system("chmod a+rw hoge");はかっこわるくてもうヤ



657 名前:デフォルトの名無しさん mailto:sage [2005/08/09(火) 13:20:24 ]
後からかえたいなら、fchmod(fd, 0777)。
出来ると同時に指定したいときは、umask(0)。
パーミッションを落すわけじゃないから、後でいいだろうね。


658 名前:デフォルトの名無しさん mailto:sage [2005/08/09(火) 13:49:28 ]
>>656
かっこ悪いというより、頭悪いな。

659 名前:デフォルトの名無しさん mailto:sage [2005/08/09(火) 16:43:40 ]
>>651
ようするに最近のOSはsleep(3)がスレッドセーフで実装されてるってことか?

660 名前:デフォルトの名無しさん mailto:sage [2005/08/09(火) 21:39:20 ]
>>659
つまりnanosleepで実装されてれば○。alarmで実装されてたら×。
移植性高めたいならselect使えということ。

661 名前:デフォルトの名無しさん mailto:sage [2005/08/09(火) 22:09:01 ]
nanosleep呼ぶ手も有ると思うが。

662 名前:デフォルトの名無しさん mailto:sage [2005/08/09(火) 22:13:29 ]
それでわざわざこんなこと書いてるのか
www.kt.rim.or.jp/~ksk/wskfaq-ja/articles/lame-list.html

663 名前:デフォルトの名無しさん mailto:sage [2005/08/09(火) 23:16:37 ]
Winsockの流儀と移植性は別問題

664 名前:デフォルトの名無しさん mailto:sage [2005/08/10(水) 00:23:08 ]
>>660
usleep()で実装されていても駄目(な可能性がある)。

nanosleep()は、signal non-intrusiveであることが保証されている。
www.opengroup.org/onlinepubs/009695399/functions/nanosleep.html
nanosleep()はPOSIXリアルタイム拡張。

665 名前:デフォルトの名無しさん mailto:sage [2005/08/10(水) 01:07:24 ]
FreeBSDやLinux等が今現在、どういう風に実装していようが、
やっぱ、Pthreadを使用してsleepしたいならselectかpollを使用するのが無難だな。
sleep(3)は、過去(pthreadが無い時代)の物との互換性維持の為にあるようなもんだろ。

666 名前:デフォルトの名無しさん mailto:sage [2005/08/10(水) 02:11:22 ]
POSIXのリアルタイム拡張か、出来ればアドバンスドリアルタイム拡張がないと、
pthread的には現代的なAPI設計とは言いがたいからね。



667 名前:デフォルトの名無しさん mailto:sage [2005/08/10(水) 06:46:30 ]
>>663
そもそもここUNIXスレだしな
WinsockならSleepが確実にあるはずだからそれ使えというのも分かるけど

668 名前:デフォルトの名無しさん [2005/08/10(水) 09:11:37 ]
>>662
それのさ、BSDソケット版というかUNIX版?みたいな感じのやつはある?

669 名前:デフォルトの名無しさん mailto:sage [2005/08/10(水) 09:38:00 ]
>>668
ネットワークプログラミングスレのテンプレへGO!

670 名前:デフォルトの名無しさん mailto:sage [2005/08/10(水) 09:47:13 ]
ptyの使い方を解説したページってある?

671 名前:デフォルトの名無しさん mailto:sage [2005/08/10(水) 10:19:55 ]
>>670
ttp://www.sony.co.jp/Products/Computer/NEWSWAVE/DevelopersInf/Porting/pty.html
あとはStevens本とか。


672 名前:デフォルトの名無しさん mailto:sage [2005/08/10(水) 11:07:46 ]
>>670
script(1)のソース。
svn.clkao.org/svnweb/freebsd/checkout/cvs/branches/RELENG_5/usr.bin/script/script.c?rev=122468

673 名前:デフォルトの名無しさん mailto:sage [2005/08/10(水) 11:08:50 ]
それからopenpty(3)を使うこt。

674 名前:デフォルトの名無しさん mailto:sage [2005/08/10(水) 22:38:25 ]
errnoに自分で使う値を加えたいんですが、システムのerrnoと
値が衝突しないような方法はないでしょうか

675 名前:デフォルトの名無しさん mailto:sage [2005/08/10(水) 22:41:11 ]
ありません

676 名前:デフォルトの名無しさん mailto:sage [2005/08/10(水) 23:06:02 ]
大体、errnoに代入できるとは限らない。
関数呼び出しの可能性がある。with pthreadの場合。

www.opengroup.org/onlinepubs/009695399/functions/xsh_chap02_03.html#tag_02_03



677 名前:デフォルトの名無しさん mailto:sage [2005/08/11(木) 00:42:57 ]
左辺値に展開される関数だからどっちにしても代入できるだろ

678 名前:デフォルトの名無しさん mailto:sage [2005/08/11(木) 01:29:24 ]
>>676
そんなこといったら読み出しだって保証されませんよ?

679 名前:デフォルトの名無しさん mailto:sage [2005/08/11(木) 11:16:56 ]
誰も何も保障してくれないのか

680 名前:デフォルトの名無しさん mailto:sage [2005/08/11(木) 12:16:26 ]
誰も何も保障してくれない事は保障します

681 名前:デフォルトの名無しさん mailto:sage [2005/08/11(木) 12:49:48 ]
linas.org/linux/persistance.html
このページの要約お願いします

682 名前:デフォルトの名無しさん mailto:sage [2005/08/11(木) 13:37:17 ]
嫌です

683 名前:デフォルトの名無しさん [2005/08/11(木) 18:06:23 ]
Cursesとかで現在カーソルのある座標を取得する関数とかありませんか?調べていますがなかなか見つからない

684 名前:デフォルトの名無しさん [2005/08/11(木) 18:07:24 ]
>>683
環境はLinux、GCCです

685 名前:デフォルトの名無しさん mailto:sage [2005/08/11(木) 18:10:28 ]
>>683
マルチは氏ね

686 名前:デフォルトの名無しさん mailto:sage [2005/08/11(木) 18:18:04 ]
>>684=683
向こうに挨拶くらいしてから移動しろ。
cursesには現在座標を取得する関数は確かないから、
自前でどこにあるかを追跡し続ける必要があったと思う。
つーか、目的が判らんからそれ以上はなんとも言えん。



687 名前:デフォルトの名無しさん mailto:sage [2005/08/11(木) 18:46:22 ]
Linuxならncurses
getyxだろ?

688 名前:デフォルトの名無しさん mailto:sage [2005/08/11(木) 18:54:31 ]
cursesってまだ存在してるの?
正気?

689 名前:デフォルトの名無しさん mailto:sage [2005/08/11(木) 19:13:10 ]
>>688
aho

690 名前:デフォルトの名無しさん [2005/08/11(木) 20:54:35 ]
>>686
>>687
ありがとうございます。勉強になりました。
ファイラーを作ろうとしているのですがカーソルを押したときに座標を読み取ってどのファイルが選択されているかをチェックしようとしていました。試してみます。



691 名前:デフォルトの名無しさん mailto:sage [2005/08/11(木) 21:34:45 ]
>>688
え? Solaris ではデフォルトだけど。

692 名前:デフォルトの名無しさん mailto:sage [2005/08/12(金) 00:42:13 ]
実はマウスポインタの座標が欲しいんだったりしてw

693 名前:デフォルトの名無しさん mailto:sage [2005/08/12(金) 02:20:28 ]
ncursesならマウスも扱えるぜー!!!

694 名前:デフォルトの名無しさん mailto:sage [2005/08/13(土) 15:56:40 ]
メールの送信日時の欄にJSTなどのタイムゾーンが付加されますが
このタイムゾーンの文字列の取得方法を教えてください。



695 名前:デフォルトの名無しさん mailto:sage [2005/08/13(土) 16:18:36 ]
>>694
正規表現で抜けばいいんでないの?

696 名前:デフォルトの名無しさん mailto:sage [2005/08/13(土) 17:39:22 ]
>>694
time_t t = 1116908090;
printf("%s\n",localtime(&t)->tm_zone);



697 名前:デフォルトの名無しさん [2005/08/14(日) 00:32:09 ]
リモートコンピュータのCPU使用率の取得方法を教えてください。

698 名前:デフォルトの名無しさん mailto:sage [2005/08/14(日) 01:28:55 ]
>>697
リモート側でrstatd動かすとかsnmp使うとか


699 名前:デフォルトの名無しさん [2005/08/14(日) 12:12:00 ]
Cのプログラムで、
UNIX上で、とあるコマンドをどのユーザーが発行しても同一ユーザーが
発行しているようにさせたいのですが、どのようにすればいいのでしょうか?

自分で思いつくところだと、コマンドを発行させたいユーザが起動するデーモン
プログラムに、その他ユーザーが発行要求を投げて。デーモンはそれをSystem関数やら
何やらで発行して結果を返す。という感じで考えているのですが、
他に妙案ってありますでしょうか。

文章力無くてすみません


700 名前:デフォルトの名無しさん mailto:sage [2005/08/14(日) 12:25:41 ]
man chmod

701 名前:699 mailto:sage [2005/08/14(日) 12:44:24 ]
>>700

返信ありがとうございます。
実行権を与える、というわけではなくてA、Xとユーザーが存在するならば、

Aがxxxを実行 →psで見るとxxxをAが実行していることになっている。
これを、
Xはxxx_daemonを起動しておく
Aがxxx_daemonを実行 → xxx_daemonからxxxをコール →psで見るとxxxをXが実行していることになっている。

という事がしたいのです。


702 名前:デフォルトの名無しさん mailto:sage [2005/08/14(日) 13:44:30 ]
man setuid

703 名前:699 mailto:sage [2005/08/14(日) 14:23:17 ]
>>702
ありがとうございます。setuid使えばなんとかなりそうです。
お騒がせしましてすみませんでした。



704 名前:デフォルトの名無しさん mailto:sage [2005/08/15(月) 09:42:45 ]
プログラム上からディレクトリを作成する方法を教えてください


705 名前:デフォルトの名無しさん mailto:sage [2005/08/15(月) 09:53:02 ]
mkdir(2)

706 名前:669 [2005/08/15(月) 23:38:03 ]
度々すみません。
早速レス頂いたとおりchmod ug+sでモジュールに権限つけたら上手くいったのですが、
該当モジュールがシェルで、中でコマンド発行している場合はユーザが元のユーザで実行
している扱いになってしまいます。(man chmodでもそう書かれていたのですが)。
これを回避する方法ってありますでしょうか?





707 名前:デフォルトの名無しさん mailto:sage [2005/08/16(火) 00:02:38 ]
なんで派生して自分で考えようとは思わないの?
ってかなんでそっちなんだ?

708 名前:デフォルトの名無しさん mailto:sage [2005/08/16(火) 01:21:32 ]
man setuid

709 名前:デフォルトの名無しさん [2005/08/16(火) 10:12:28 ]
C言語で現在の時間を変更する関数を教えてください

710 名前:デフォルトの名無しさん mailto:sage [2005/08/16(火) 10:17:02 ]
settimeofday


711 名前:デフォルトの名無しさん mailto:sage [2005/08/16(火) 10:18:30 ]
man man

712 名前:デフォルトの名無しさん mailto:sage [2005/08/16(火) 10:21:46 ]
>>709
限りなく光速に近い速度で移動する

713 名前:デフォルトの名無しさん mailto:sage [2005/08/16(火) 10:40:23 ]
co というコマンドの使い方を教えてください

714 名前:デフォルトの名無しさん mailto:sage [2005/08/16(火) 10:50:35 ]
まずci

715 名前:デフォルトの名無しさん mailto:sage [2005/08/16(火) 12:34:42 ]
>>713
man co だろ。はいはいワロスエロス

716 名前:デフォルトの名無しさん mailto:sage [2005/08/16(火) 14:47:45 ]
>>713
限りなくco速に近い速度で移動する



717 名前:デフォルトの名無しさん mailto:sage [2005/08/16(火) 15:56:27 ]
そんなco息な答えを

718 名前:デフォルトの名無しさん mailto:sage [2005/08/16(火) 22:16:53 ]
coこはくだ質なインターネッツですね

719 名前:669 [2005/08/17(水) 00:10:13 ]
>>707
>>708

結局所有者rootのCモジュールにug+s、で、その中でsetuidしてsystem関数をコールさせることで
落ち着きました・・・まだ実機で確認取れてないんですが(汗

アドバイスありがとうございました(感謝


720 名前:デフォルトの名無しさん mailto:sage [2005/08/17(水) 01:45:51 ]
>>719
まぁそういう場合はsudo使うと楽なのだが。

721 名前:デフォルトの名無しさん [2005/08/17(水) 10:22:21 ]
make clean:
に、rm *.oと書いているんですが、
*.oがひとつもない時はエラーになってしまいます。
エラーを出さないようにするにはどうしたらいいんですか?


722 名前:デフォルトの名無しさん mailto:sage [2005/08/17(水) 10:26:16 ]
-rm
rm -f

723 名前:デフォルトの名無しさん mailto:sage [2005/08/17(水) 12:17:02 ]
山ほどあるほかのソフトでどうやってるかというのを見る気はないのか


724 名前:デフォルトの名無しさん mailto:sage [2005/08/17(水) 21:04:09 ]
山ほどゴミコマンド作って悲しくないのか

725 名前:デフォルトの名無しさん mailto:sage [2005/08/17(水) 21:37:44 ]
/usr/local以下にある限り問題ない

726 名前:デフォルトの名無しさん mailto:sage [2005/08/18(木) 08:25:38 ]
>>721
たぶんあなたのしたいのはこういうこと。

エラーになっても、makeが無視して続行するようにする。
www.gnu.org/software/make/manual/html_chapter/make_5.html#SEC56



727 名前:デフォルトの名無しさん mailto:sage [2005/08/18(木) 08:27:22 ]
あと、cleanターゲットの時は、.PHONYも参照のこと。

728 名前:デフォルトの名無しさん mailto:sage [2005/08/19(金) 23:44:09 ]
UNIXプログラミングされておられる方って、Xは使わずコンソール画面でソース書いておられるのでしょうか?
もしくは、cygwinなんかを使ったり。。
貴方の最適環境を教えてちょ


729 名前:デフォルトの名無しさん mailto:sage [2005/08/19(金) 23:52:02 ]
Xは使う。但し、端末エミュレータを動かすのが主目的。
X端末でなければ当然telnet端末だったりするわけだから、
通常GUIの開発でもない限り端末エミュレータ上でmuleを動かしている。

730 名前: ◆i6G.jsz.NY mailto:sage [2005/08/20(土) 00:34:08 ]
うちも基本的にX使ってる
理由は、自由に日本語を表示/入力したいのと、いっぱい行を表示させたいの
ちょっと、コード書いたり使うくらいならコンソールでもやるけどね

>もしくは、cygwinなんかを使ったり。。
これだと、Windowsプログラミングにならないかね?

自分は、
kterm 6.2.0 custom
kinput2 version 3.0 (1999/05/26)
Canna Server (Ver. 3.6)
gcc 3.3.3 custom
VIM - Vi IMproved 6.3 custom
XFree86
ってかんじかな。
細かいのはおいとくけど

731 名前:デフォルトの名無しさん mailto:sage [2005/08/20(土) 01:25:55 ]
>>728
X は使うけど、起動してるのは全画面表示の mlterm と Emacs。
Emacs だけ端末エミュレータで起動してるのは、elscreen と screen で
キーバインドがゴッチャになって混乱するから。

やってる作業自体に本質的に必要ってわけではない。たまに Flash 見たり
するのに Firefox 起動するとか、そんなもんじゃねーかな。


732 名前:デフォルトの名無しさん mailto:sage [2005/08/20(土) 02:02:28 ]
ちょwwwっおまwwww
Cannaとかまだあったんか

733 名前:デフォルトの名無しさん mailto:sage [2005/08/20(土) 04:12:24 ]
一応ね
使っている人がいるから保守が続いているけど
新規にインストールする人は年々減ってる

734 名前:デフォルトの名無しさん mailto:sage [2005/08/20(土) 08:34:57 ]
XEmacs, gnuserv
gnome-terminal, screen, gnuclient, ssh

eclipse (with/without emacs plugin)

Xcode (Mac OS X)

不思議なもんで、screenがあっても、
gnome-terminalのtabは使うし、virtual desktopも使う。

735 名前:デフォルトの名無しさん mailto:sage [2005/08/20(土) 14:54:51 ]
ふつーSKK

736 名前:デフォルトの名無しさん mailto:sage [2005/08/20(土) 18:16:01 ]
ふつーATOK




737 名前:デフォルトの名無しさん mailto:sage [2005/08/22(月) 00:18:35 ]
俺は SJ3 使ってますがなにか?

738 名前:デフォルトの名無しさん mailto:sage [2005/08/22(月) 00:20:17 ]
べつに。

739 名前:デフォルトの名無しさん mailto:sage [2005/08/22(月) 19:01:11 ]
Winから見ると古代遺跡が稼動してる幹事

740 名前:デフォルトの名無しさん mailto:sage [2005/08/22(月) 19:03:25 ]
Winの様に進化ではなく、停滞してる証

741 名前:デフォルトの名無しさん mailto:sage [2005/08/22(月) 20:04:27 ]
進化・・・ってどこ?

742 名前:デフォルトの名無しさん mailto:sage [2005/08/23(火) 12:14:30 ]
テンポラリディレクトリの取得方法を教えてください

743 名前:デフォルトの名無しさん mailto:sage [2005/08/23(火) 12:18:51 ]
mktemp

744 名前:デフォルトの名無しさん mailto:sage [2005/08/23(火) 13:41:57 ]
mktemp(3) なんて使っているやつはばかです。

745 名前:ばか mailto:sage [2005/08/23(火) 14:33:32 ]
すみません

746 名前:デフォルトの名無しさん mailto:sage [2005/08/23(火) 20:23:01 ]
tmpnam()



747 名前:デフォルトの名無しさん mailto:sage [2005/08/25(木) 07:07:18 ]
CPUに関する情報はどのように取得したらよいのでしょうか?
特にクロック数を取得したいのですが。
環境はOpteron、Fedora Core4、gcc4.0.0です。
マシンはいくつかあって、CPUのクロックが違います。

748 名前:デフォルトの名無しさん mailto:sage [2005/08/25(木) 07:50:27 ]
どっかで見たことあるな・・・
メモリ情報とかいっぱいあるフォルダに入ってた悪寒
ごめんドコかはわからんorz

749 名前:デフォルトの名無しさん mailto:sage [2005/08/25(木) 08:04:03 ]
>>747
cat /proc/cpuinfo
fopen("/proc/cpuinfo", "r")

750 名前:デフォルトの名無しさん mailto:sage [2005/08/25(木) 13:26:00 ]
フォルダねえ。

751 名前:デフォルトの名無しさん mailto:sage [2005/08/25(木) 15:34:16 ]
なんだよ

752 名前:デフォルトの名無しさん mailto:sage [2005/08/25(木) 15:36:59 ]
er には伸ばし棒(ー)をつけて下さい。
pc8.2ch.net/test/read.cgi/tech/1014691583/


753 名前:デフォルトの名無しさん mailto:sage [2005/08/25(木) 19:01:05 ]
UNIXならディレクトリでしょ。

754 名前:デフォルトの名無しさん mailto:sage [2005/08/25(木) 20:07:21 ]
ディレクトリ → おたく
フォルダー  → 一般人

755 名前:デフォルトの名無しさん mailto:sage [2005/08/25(木) 20:10:14 ]
さすがにそれでは釣れないぞ

756 名前:デフォルトの名無しさん mailto:sage [2005/08/25(木) 20:56:33 ]
みなさんがUNIXでC++を書くとき、
標準ライブラリのリファレンスは何を参照していますか?
manのようにUNIX環境でさくっと参照できる資料はないもんでしょうか。




757 名前:デフォルトの名無しさん mailto:sage [2005/08/25(木) 21:04:01 ]
JISX3014

758 名前:デフォルトの名無しさん mailto:sage [2005/08/25(木) 21:08:39 ]
C++なんて書きません。

759 名前:デフォルトの名無しさん mailto:sage [2005/08/25(木) 21:23:20 ]
>>756
無い
あきらめろ

760 名前:デフォルトの名無しさん mailto:sage [2005/08/25(木) 22:07:01 ]
>>756
X3J16-96がhtmlになっているのをnamazuで検索。
ぐぐれば転がっている。

1997 C++ Public Review Document

もっと新しいのでhtmlになっているのある?

761 名前:デフォルトの名無しさん mailto:sage [2005/08/25(木) 22:07:52 ]
>>760
> X3J16-96が

これはよぶん。省略してちょ

762 名前:デフォルトの名無しさん mailto:sage [2005/08/25(木) 22:10:31 ]
おれここよく見てるw
ちょろっと思い出すにはお手軽。
ttp://www005.upp.so-net.ne.jp/episteme/html/stlprog/

763 名前:デフォルトの名無しさん [2005/08/26(金) 10:23:48 ]
自分自身の実行パスの取得方法を教えてください

764 名前:デフォルトの名無しさん mailto:sage [2005/08/26(金) 10:34:40 ]
>>763
argv[0] …か?

765 名前:デフォルトの名無しさん mailto:sage [2005/08/26(金) 10:38:05 ]
>>763
その話題は荒れるからよせw

766 名前:デフォルトの名無しさん mailto:sage [2005/08/26(金) 16:51:12 ]
>>764
>>3の1.14



767 名前:デフォルトの名無しさん mailto:sage [2005/08/27(土) 22:30:46 ]
C++相談室 part43から誘導です。

Fedora Core 2でUSB<->Serial変換を使って制御をやっています。
C++で自前のclassですが、基本はCのread()とwrite()を使ってのやり取りです。
Win 2kのハイパーターミナルで通信するのに比べると、
FC2でreadする動作速度が遅いようです。

何かreadを高速化させる方法と言うのがあるんでしょうか?
タイミングの問題でしょうか。

使用している装置は内部にFTDIのUSBのチップが載っています。

768 名前:デフォルトの名無しさん mailto:sage [2005/08/28(日) 00:23:03 ]
>>767
stty

769 名前:デフォルトの名無しさん mailto:sage [2005/08/28(日) 01:37:24 ]
>>768
えーと、sttyでbaud rateを変更せよ、という事でしょうか。
出来ればもう少し詳しくお願いします。

自分の書き方が悪かったのですが、
読む量は非常に少なく、read()1回あたりに数characterです。
read()を実行してから、読み始めるまでが遅い印象です。
ちゃんと計測していませんが、read()1回にコンマ数秒かかっています。

770 名前:デフォルトの名無しさん mailto:sage [2005/08/28(日) 02:15:49 ]
openからreadまでのソースをさらした方が早いと思う。

tcgetattr、tcsetattr、cfsetispeed、cfsetospeedあたりを駆使してください。
ただ、ハードウェアやドライバの問題の可能性もあります。

771 名前:767 mailto:sage [2005/08/28(日) 02:43:53 ]
ちょい長いですが、かいつまんで晒します。
Class名は晒すとまずいので、myClassにします。

int main(){
myClass mon("/dev/usb/ttyUSB0");
mon.Open();

(略)機器特有の設定のみ。この時点でread()を使っても遅いので、
ここでの設定は細かく晒しません。

cout << mon.ReadVoltage() << "¥t" << mon.ReadCurrent() << endl;

return 0;
}

mainを短くするとこんな感じ。
ちなみに、FTDIのチップというのは、Linux 2.4.20以降に標準でデバドラが入ってます。

772 名前:767 mailto:sage [2005/08/28(日) 02:53:55 ]
続き

myClass::myClass(string deviceName)
: RS232C(deviceName)
{
SetIOSpeed(B115200);
SetDelimiter(MAC);
}

RS232C::RS232C(string deviceName)
: fDeviceName(deviceName)
{
fFileDescriptor = -1;
SetDefault();
}

myClassはRS232Cというclassを継承してます。


773 名前:767 mailto:sage [2005/08/28(日) 02:55:59 ]
先のSetDefault()の内部は、
void RS232C::SetDefault()
{
SetDelimiter(WIN);
fInputSpeed = B9600;
fOutputSpeed = B9600;
fSleep = 0;
struct termios tmp;
fOptions = tmp;
UnsetIflag(INPCK | ISTRIP);
UnsetIflag(IXON | IXOFF | IXANY);
UnsetOflag(OPOST);
SetCflag(CLOCAL | CREAD);
UnsetCflag(PARENB);
UnsetCflag(CSIZE);
SetCflag(CS8);
UnsetCflag(CSTOPB);
UnsetCflag(CRTSCTS);
UnsetLflag(ICANON | ECHO | ECHOE | ISIG);
SetCc(VMIN, 0);
SetCc(VTIME, 10);
SetInputSpeed(fInputSpeed);
SetOutputSpeed(fOutputSpeed);
SetTermios(fOptions);
}
です。
delimiterとbaud rateは後で変更しています。

774 名前:767 mailto:sage [2005/08/28(日) 02:58:38 ]
続き

string RS232C::Read() const
{
string line = "";
char buf[100];
while(1){
int size = read(fFileDescriptor, &buf, 100);
if(0<size && size <=100){
line += buf;
} else {
break;
} // if
} // while

return line;
}

Read()はこんなです。
自分の通常使用では100文字を超えるようなread()の結果はないので、
100で一旦区切ってます。

775 名前:767 mailto:sage [2005/08/28(日) 03:05:22 ]
以上ですが、
問題があるとすればread()の使い方か、
もしくは>>773の設定内容でしょうか。

SetCflag(CLOCAL | CREAD);
などは、
void SetCflag (int flag){ fOptions.c_cflag |= flag;}
などという関数を呼んでいます。

ちなみにcode内でfで始まっている変数はmember変数です。

長いですが、よろしくお願いします。
職業柄、宇宙の神秘の解明に繋げます。

776 名前:デフォルトの名無しさん mailto:sage [2005/08/28(日) 03:25:55 ]
動作中に stty -a -F /dev/usb/ttyUSB0 した結果見して。



777 名前:767 mailto:sage [2005/08/28(日) 03:42:01 ]
>>776
speed 115200 baud; rows 0; columns 0; line = 244;
intr = t; quit = M-r; erase = M-~; kill = M-^¥; eof = R; eol = I; eol2 = ^M;
start = s; stop = M-r; susp = M-~; rprnt = L; werase = ^C; lnext = M-<;
flush = M-^]; min = 0; time = 10;
-parenb -parodd cs8 hupcl -cstopb cread clocal -crtscts
ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl -ixon -ixoff
-iuclc -ixany -imaxbel
-opost -olcuc ocrnl onlcr -onocr -onlret ofill -ofdel nl0 cr1 tab0 bs1 vt0 ff1
-isig -icanon iexten -echo -echoe echok echonl -noflsh -xcase tostop -echoprt
-echoctl -echoke

です。

778 名前:767 mailto:sage [2005/08/28(日) 03:45:58 ]
あ、以下の内容を書き忘れていました。

void RS232C::Open()
{
fFileDescriptor = open(fDeviceName.c_str(), O_RDWR | O_NOCTTY | O_NDELAY);
fcntl(fFileDescriptor, F_SETFL, 0);
SetTermios(fOptions);
}

779 名前:デフォルトの名無しさん mailto:sage [2005/08/28(日) 05:14:30 ]
>>777
特殊文字の設定がでたらめだな。

780 名前:デフォルトの名無しさん mailto:sage [2005/08/28(日) 06:40:16 ]
本題と関係ないだろうけど
if(0<size && size <=100){でいいの?

781 名前:780 mailto:sage [2005/08/28(日) 06:40:50 ]
あ、いいんだゴメン

782 名前:デフォルトの名無しさん mailto:sage [2005/08/28(日) 10:22:27 ]
>>777
なんかぐちゃぐちゃだな。cfmakeraw で raw モードにしてみれ。

783 名前:767 mailto:sage [2005/08/28(日) 12:17:58 ]
>>782

>>773
fOptions = tmp;
の後ろに
cfmakeraw(&fOptions);
を追加しました。その状態で、
>>776を打つと、
speed 115200 baud; rows 0; columns 0; line = 180;
intr = M; quit = M-q; erase = M-~; kill = M-^¥; eof = r; eol = I; eol2 = ^M;
start = L; stop = M-q; susp = M-~; rprnt = L; werase = ^C; lnext = M-<;
flush = M-^]; min = 0; time = 10;
-parenb -parodd cs8 hupcl -cstopb cread clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl -ixon
-ixoff -iuclc -ixany -imaxbel
-opost -olcuc ocrnl onlcr -onocr -onlret ofill -ofdel nl0 cr1 tab0 bs1 vt0 ff1
-isig -icanon -iexten -echo -echoe echok -echonl -noflsh -xcase tostop -echoprt
-echoctl -echoke
となります。まだ実行速度は変わりません。

784 名前:デフォルトの名無しさん mailto:sage [2005/08/28(日) 15:20:55 ]
>>783
だめか。
というかどうやって計測してる?単にreadがブロックしてるだけじゃないよな。

それでも遅いなら、linuxのデバドラあたりの問題な気がする。つづきは犬板かなぁ。

785 名前:デフォルトの名無しさん mailto:sage [2005/08/28(日) 18:00:16 ]
>>784
>単にreadがブロックしてるだけじゃないよな。
open()でO_NDELAYしてるみたいだけど..

786 名前:デフォルトの名無しさん mailto:sage [2005/08/28(日) 18:44:12 ]
linux-2.4のFTDIなシリアルドライバはクソなので、
そういうものだと思ってあきらめた方がいいかもしれない。

遅いだけならともかく、負荷をかけるとデータ取りこぼして使いものにならん。




787 名前:デフォルトの名無しさん mailto:sage [2005/08/28(日) 19:20:59 ]
2.6系の最新の物にすべし。
メジャーなカーネルハカーは、もはや2.4系など弄って無い

788 名前:デフォルトの名無しさん mailto:sage [2005/08/29(月) 01:48:24 ]
2.6からディバイスドライバがコンパイラだけで生成できなくなってめんどくさい


789 名前:デフォルトの名無しさん mailto:sage [2005/08/29(月) 02:22:06 ]
USBでない普通のシリアルで試してみると
問題が切り分けられたりするんではないだろうか。


790 名前:デフォルトの名無しさん mailto:sage [2005/08/29(月) 13:46:47 ]
>>788
めんどくさいなら最初からやるな

791 名前:デフォルトの名無しさん mailto:sage [2005/08/29(月) 14:31:40 ]
はいはいウザスウザス

792 名前:767 mailto:sage [2005/08/29(月) 15:02:57 ]
ご回答ありがとうございます。

>>786-787
uname -rの結果は、
2.6.5-1.358smp
です。FC 2を使っています。

>>784
>readがブロックしてる
これはどういう意味でしょうか。

793 名前:デフォルトの名無しさん mailto:sage [2005/08/29(月) 19:42:42 ]
自分で調べるっという選択肢は無いのか?

794 名前:デフォルトの名無しさん mailto:sage [2005/08/30(火) 13:38:35 ]
一から十まで用意してもらうのが当たり前な世代なんじゃないの。


795 名前:デフォルトの名無しさん mailto:sage [2005/09/01(木) 12:52:13 ]
おい、実行ウファルのパスはどーやって調べるんだよ

796 名前:デフォルトの名無しさん mailto:sage [2005/09/01(木) 13:02:56 ]
うふぁる?



797 名前:デフォルトの名無しさん mailto:sage [2005/09/01(木) 13:51:32 ]
Linuxだったらreadlink("/proc/self/exe", buf, bufsize)


798 名前:デフォルトの名無しさん mailto:sage [2005/09/01(木) 21:11:53 ]
whereis ?

799 名前:デフォルトの名無しさん mailto:sage [2005/09/02(金) 02:14:04 ]
実行ウファルは既に消されてウファルシステムから見えなくなっている可能性もあるわけだが


800 名前:デフォルトの名無しさん mailto:sage [2005/09/02(金) 08:04:20 ]
そこまで責任もてん

801 名前:デフォルトの名無しさん mailto:sage [2005/09/02(金) 16:30:20 ]
ps で出ている実行ウファルの場所を調べる方法ある?
httpd とかさぁ。

802 名前:デフォルトの名無しさん mailto:sage [2005/09/02(金) 16:33:09 ]
>>801
プロセスって実行ファイルに結びついてるもんなの?

803 名前:デフォルトの名無しさん mailto:sage [2005/09/02(金) 16:53:34 ]
>>802
forkしたプロセスを実行ファイルと結びついてると解釈できるかどうかによるな

804 名前:デフォルトの名無しさん mailto:sage [2005/09/02(金) 16:55:54 ]
料理とレシピ

805 名前:デフォルトの名無しさん mailto:sage [2005/09/02(金) 17:02:44 ]
クラスとインスタンスとか

806 名前:デフォルトの名無しさん mailto:sage [2005/09/02(金) 20:43:59 ]
pid 1の実行ウファルって何?



807 名前:デフォルトの名無しさん mailto:sage [2005/09/02(金) 20:48:40 ]
うちのに限って言えば /sbin/init

808 名前:デフォルトの名無しさん mailto:sage [2005/09/02(金) 23:44:58 ]
実行した後すぐ削除って出来る?
なんか怒られるときがあるけど

58.156.48.133/data/katsuaki/futarietti28/078.jpg

809 名前:デフォルトの名無しさん mailto:sage [2005/09/03(土) 00:53:10 ]
↑ エロ注意

810 名前:デフォルトの名無しさん mailto:sage [2005/09/03(土) 01:54:07 ]
>>808
Cygwinでなければunlinkによる削除はできる
上書きはEBUSYエラーでできない

811 名前:デフォルトの名無しさん mailto:sage [2005/09/03(土) 01:57:59 ]
>>810は嘘

812 名前:デフォルトの名無しさん mailto:sage [2005/09/03(土) 03:36:31 ]
>>808
削除(unlink)はできる。unlinkしてもディレクトリからウファル実体への
参照が消えるだけで、実行中プロセスがウファルを参照しているので、
ウファル実体はまだウファルシステムからは消えない。
実行プロセスが終了して他にそのウファルを参照しているプロセスも
なくなったら、ウファル実体は参照数ゼロになるので消滅する。

cp等による上書き(単にオープンして書き込む)はウファル実体を
変更することになるので、エラーになる。
(OSによってはエラーにならないが実行中のプロセスに致命的な結果を生じる)

ウファルをインストールするときにcpでなくinstallコマンドを使うのは
一つにはこのためで、まずunlinkしてからウファルを作成するようになっている。



813 名前:デフォルトの名無しさん mailto:sage [2005/09/03(土) 08:51:21 ]
ウファルてなに?


814 名前:デフォルトの名無しさん mailto:sage [2005/09/03(土) 09:15:56 ]
ウファル の検索結果 約 458 件中 1 - 10 件目 (0.39 秒)

白髪染めクリームらしい

815 名前:デフォルトの名無しさん [2005/09/03(土) 09:39:09 ]
あるテキストファイルを複数のプログラムから同時にアクセスする可能性があるのですが、ファイルロックの方法を教えてくだされ。
また、書き込みブロックされた際に、ロックが解放されるまで待つようにするにはどのようにするのがよいでしょうか?

816 名前:デフォルトの名無しさん mailto:sage [2005/09/03(土) 09:40:29 ]
flock



817 名前:デフォルトの名無しさん mailto:sage [2005/09/03(土) 09:50:47 ]
>>816
よりによってflockかよ…

lockf(3)かfctrl(2)を。
fctrlはF_GETLK, F_SETLK, F_SETLKW

818 名前:デフォルトの名無しさん mailto:sage [2005/09/03(土) 09:54:06 ]
いっそファイル名を変えてしまえ。

819 名前:デフォルトの名無しさん mailto:sage [2005/09/03(土) 10:22:14 ]
fctrl(笑)

820 名前:デフォルトの名無しさん mailto:sage [2005/09/03(土) 10:31:28 ]
man 笑 fctrl

821 名前:デフォルトの名無しさん mailto:sage [2005/09/03(土) 12:00:02 ]
fcuk

822 名前:デフォルトの名無しさん mailto:sage [2005/09/03(土) 13:49:04 ]
>>812
サンクスコ

実行中でのウファルの振る舞いが完全理解できたよ

823 名前:デフォルトの名無しさん mailto:sage [2005/09/03(土) 14:18:22 ]
完全に理解(笑)

824 名前:デフォルトの名無しさん mailto:sage [2005/09/03(土) 14:24:28 ]
もはや(w)はなんとも思わなくなったけど、
逆に(笑)がけっこうムカツクことに気づいた。
時代は変わったということだな。

825 名前:デフォルトの名無しさん mailto:sage [2005/09/03(土) 14:36:50 ]
そういえばpsで見える実行ウファルのパスはどうやって調べてるんだ?
argv[0]なの?

826 名前:デフォルトの名無しさん [2005/09/03(土) 14:38:43 ]
>>817
そうは言うが、ではしつこく残ってるflockの存在意義って何よ?



827 名前:デフォルトの名無しさん mailto:sage [2005/09/03(土) 14:41:58 ]
>>826
backward compatiblityってやつじゃないの。

828 名前:デフォルトの名無しさん mailto:sage [2005/09/03(土) 18:54:51 ]
>>826
flock(2)は*BSDで独自の発展をとげているし、(4.2BSDの頃から仕様が変わっている)
POSIX等で標準化されてないから、OSを超えたポータビリティはないと思ってくれ。
ロックしたファイルをclose(2)したり、dup(2)したり、
プロセスが終了したり、fork(2)したり、execve(2)したりした時の振る舞い。

FreeBSDのマニュアルは、POSIX fcntl(2)のロックの意味を、
stupidと言っているが、標準であることの意味は大きい。
問題とされているところを、回避するような実装を行えばいいだけだから。
www.freebsd.org/cgi/man.cgi?query=fcntl&apropos=0&sektion=0&manpath=FreeBSD+4.5-RELEASE&format=html

FreeBSDはflock(2)がefficientであると言っているから、
#ifdef FreeBSD
#error "....."
#endif
なソースでflock(2)するのは、いい場合もあるんじゃないかと思うが。

829 名前:デフォルトの名無しさん mailto:sage [2005/09/04(日) 00:11:21 ]
fcntlの振る舞いは本当にstupidだと思う

830 名前:デフォルトの名無しさん mailto:sage [2005/09/04(日) 01:18:15 ]
なにそのunix会話

831 名前:デフォルトの名無しさん mailto:sage [2005/09/04(日) 08:41:32 ]
flock()はBSD系で、lockf()/fcntl()はSysV系
両方使える人は好きなほう使えばいいじゃん。ってことっしょ

832 名前:デフォルトの名無しさん mailto:sage [2005/09/04(日) 11:20:29 ]
BSDって、もしかしてUNIXの足引っ張ってる?

833 名前:デフォルトの名無しさん mailto:sage [2005/09/04(日) 12:20:24 ]
はい

834 名前:デフォルトの名無しさん mailto:sage [2005/09/04(日) 19:57:15 ]
はいじゃないが

835 名前:デフォルトの名無しさん mailto:sage [2005/09/05(月) 10:53:20 ]
>>832
唯我独尊&孤立無援状態

836 名前:デフォルトの名無しさん [2005/09/05(月) 15:07:32 ]
自分自身のnice値の取得方法を教えてください



837 名前:デフォルトの名無しさん mailto:sage [2005/09/05(月) 15:56:29 ]
getrusage(RUSAGE_SELF, &ru)

838 名前:デフォルトの名無しさん mailto:sage [2005/09/06(火) 07:00:57 ]
www.linux.or.jp/JM/html/LDP_man-pages/man2/getrusage.2.html
これを見てみたのですが、どれがnice値に相当するのでしょうか?よろしくお願いします。

839 名前:デフォルトの名無しさん mailto:sage [2005/09/06(火) 07:30:26 ]
人に教えれるほど知識無いけど
ググったらgetpriorityが見つかったけど違う?

840 名前:デフォルトの名無しさん mailto:sage [2005/09/06(火) 08:35:10 ]
>>837は間違い。
>>839は正しい。

841 名前:デフォルトの名無しさん mailto:sage [2005/09/06(火) 18:36:04 ]
調べしないででスミマセンが、ワードがまったく検討がつかないのでお願いします。。

普通Windowsアプリケーションは、
Win32APIやDirectXのAPI郡などのMSが提供している関数を用いて作ってるのですが。
主にFedoraCoreやVineではこれらと同じような、もしくは頑張れば表現可能なAPI郡は存在するのでしょうか?



842 名前:デフォルトの名無しさん mailto:sage [2005/09/06(火) 18:39:24 ]
てかすぐ出てきちゃいましたΛllΛ

Gtk+なるSDKがあるのですね、、
ちと勉強してきます

843 名前:デフォルトの名無しさん mailto:sage [2005/09/06(火) 20:23:35 ]
>>842

WindowsっていうOSは、ウィンドウシステムも含んでリリースされています。
でも、一般的にUNIX系のOSは、ウィンドウシステムは含まれていません。

使いたい人が使いたいウィンドウシステムを使えばいいという考え方です。
(とは言え、X以外のウィンドウシステムってあんまり聞きませんが。)

ゆえに、ウィンドウシステムに対するAPIも1つではなく、さまざまな種類が
存在しています。(XというウィンドウシステムのAPI:ツールキットも様々な
種類があります。)
Gtk+もその一つにすぎません。

と言うことを念頭においておかないと、せっかく覚えたのに、数年後には
だれもつかっていない過去の遺物となってしまうかも知れません。


844 名前:デフォルトの名無しさん mailto:sage [2005/09/06(火) 20:37:07 ]
GTK+はダメだよ
Xtを使うのが普通

845 名前:デフォルトの名無しさん mailto:sage [2005/09/06(火) 21:03:19 ]
gtk+で問題なし。ただ

> Win32APIやDirectXのAPI群

に相当するものではないけど。

846 名前:デフォルトの名無しさん mailto:sage [2005/09/06(火) 21:21:33 ]
>>821
X自体がセキュリティもアクセラレータもなんもない地雷環境なので、
世にある窓マネージャは例外なくスナップショットの画像で誤魔化してます。
Gtk+もその1つで、実際の動作を見るとその醜さに驚かされるでしょう。

>>844
UNIXでGUIなんてダメだよ
Windowsを使うのが普通



847 名前:デフォルトの名無しさん mailto:sage [2005/09/06(火) 21:27:53 ]
さくら、それを言っちゃあお仕舞いよ。

848 名前:デフォルトの名無しさん mailto:sage [2005/09/06(火) 21:44:10 ]
GNUStep最強

849 名前:デフォルトの名無しさん mailto:sage [2005/09/06(火) 21:57:05 ]
>>846
DRI じゃダメなのか?

850 名前:デフォルトの名無しさん mailto:sage [2005/09/06(火) 21:58:29 ]
>>846
> X自体がセキュリティもアクセラレータもなんもない地雷環境なので、

無知蒙昧だな。


851 名前:デフォルトの名無しさん mailto:sage [2005/09/06(火) 22:25:24 ]
そこでlg3dの出番ですよ。

852 名前:デフォルトの名無しさん mailto:sage [2005/09/06(火) 22:39:55 ]
Xのセキュリティはxhost, xauthがあるし、
アクセラレーションなら MIT SHM拡張があるし

853 名前:デフォルトの名無しさん mailto:sage [2005/09/06(火) 22:46:51 ]
xhostwwwwwwww


854 名前:デフォルトの名無しさん mailto:sage [2005/09/06(火) 22:53:13 ]
>>852
acceleration つったら普通は h/w acceleration じゃない?
↓ここが参考になるかも。

Xの描画が一番速いグラフィックカードってどれ?
pc8.2ch.net/test/read.cgi/linux/1005144431/

855 名前:デフォルトの名無しさん [2005/09/07(水) 01:54:38 ]
詳解UNIXプログラミングって本買ったんですけど、
C言語で組むのとどう違うのか、本質が理解できません。
目の覚めるようなご教授をお願いします。

なるほどー、というようなやつで。

856 名前:デフォルトの名無しさん mailto:sage [2005/09/07(水) 02:00:03 ]
Cしたい



857 名前:デフォルトの名無しさん mailto:sage [2005/09/07(水) 02:09:51 ]
>>855
おまえには無理

858 名前:デフォルトの名無しさん [2005/09/07(水) 02:12:34 ]
そういう受け答えは飽きたので、レスするのは本当の答えを知っている人だけで結構ですから。

859 名前:デフォルトの名無しさん mailto:sage [2005/09/07(水) 02:15:09 ]
質問の意味が理解できないからそんな人はいないかと(笑)

860 名前:デフォルトの名無しさん mailto:sage [2005/09/07(水) 02:41:17 ]
C言語云々は ANSI C のみでという事か?
自分の居場所を説明出来ないヤツに道案内するのはしんどいからパスだな。

861 名前:マイク ◆yrBrqfF1Ew mailto:sage [2005/09/07(水) 02:41:37 ]
ハードウェアは変更しづらいから
遅いけど変更しやすいソフトウェアがあるはずだが
そのソフトウェアに合わせてハードを選ぶのは本末転倒だよな?

862 名前:デフォルトの名無しさん mailto:sage [2005/09/07(水) 03:38:01 ]
>>855
違わないと何か困るの?

>>861
日本語不自由なんだね。ちゃんと勉強しないと高校行けないよ。

863 名前:デフォルトの名無しさん [2005/09/07(水) 03:46:25 ]
ファイルがすでに存在するかどうかを確認するにはどのようにしたらよいのでしょうか?

864 名前:デフォルトの名無しさん mailto:sage [2005/09/07(水) 03:50:35 ]
目視で確認すればいいだけじゃん

865 名前:デフォルトの名無しさん mailto:sage [2005/09/07(水) 03:54:31 ]
ワロタ

866 名前:デフォルトの名無しさん mailto:sage [2005/09/07(水) 04:06:25 ]
目視は疲れるからなあ。俺なら人に訊くね。



867 名前:デフォルトの名無しさん mailto:sage [2005/09/07(水) 04:16:29 ]
プログラムからコマンド例えばlsを発行してその結果をプログラムに取り込む方法を教えてくだすれ

868 名前:マイク ◆yrBrqfF1Ew mailto:sage [2005/09/07(水) 04:26:50 ]
よく知らんがパイプとか標準出力等をdupったりすんじゃないのか。

869 名前:デフォルトの名無しさん mailto:sage [2005/09/07(水) 04:27:55 ]
よくしらないのにレスするな

870 名前:デフォルトの名無しさん mailto:sage [2005/09/07(水) 04:28:26 ]
system とか popen とか

871 名前:デフォルトの名無しさん mailto:sage [2005/09/07(水) 04:51:03 ]
APUEをちゃんと嫁

872 名前:デフォルトの名無しさん mailto:sage [2005/09/07(水) 04:58:20 ]
open(2)してみれば分かる。
なければ、エラーか、新規作成かは第二引数で選ぶことができる。


873 名前:デフォルトの名無しさん mailto:sage [2005/09/07(水) 11:46:11 ]
>>867
よくしらんが、GUIならコピー&ペーストという手がある。

874 名前:デフォルトの名無しさん mailto:sage [2005/09/07(水) 12:07:11 ]
>>873
どんなプログラム書けばいいんですか?

875 名前:デフォルトの名無しさん mailto:sage [2005/09/07(水) 12:11:53 ]
teratermでログインすりゃログ取れるでしょ
それと同じようにすればいい

876 名前:デフォルトの名無しさん mailto:sage [2005/09/07(水) 12:17:53 ]
>>875
詳しく



877 名前:デフォルトの名無しさん mailto:sage [2005/09/07(水) 12:38:00 ]
結論:>>863 に見合った方法など ない

878 名前:デフォルトの名無しさん mailto:sage [2005/09/07(水) 13:12:09 ]
>>877
いや、>>872だから。

>>867は、>>870のpopen(3)。


879 名前:デフォルトの名無しさん mailto:sage [2005/09/07(水) 13:44:51 ]
UNIXはまともなファイラーがない時点でクライアントとして終わってる
emacs使ってるキモイ奴は困らないだろうけど
fdcloneの入ってない環境はクソ

880 名前:デフォルトの名無しさん [2005/09/07(水) 13:45:57 ]
>>879
ワラタ

881 名前:デフォルトの名無しさん mailto:sage [2005/09/07(水) 13:47:03 ]
emacs持ち出すまでもなく、お好きなシェルでええやん(笑)

882 名前:デフォルトの名無しさん mailto:sage [2005/09/07(水) 13:52:20 ]
>>881
おまえ、タイプ量考えろよ
おれはファイル選択はカーソルキー以外使いたくないの

883 名前:デフォルトの名無しさん mailto:sage [2005/09/07(水) 13:57:23 ]
UNIXは唯一telnetとかでリモート操作できるのは評価してやるが
GUIはクソ
コピペもまともにできないXサーバーなんて入れるかっつーの
おれはteratermで十分
けどCUIのファイラーがfdcloneしかないのはマジでクソ

884 名前:デフォルトの名無しさん mailto:sage [2005/09/07(水) 13:58:47 ]
>>883
ファイラって便利?

885 名前:デフォルトの名無しさん mailto:sage [2005/09/07(水) 13:59:03 ]
シェルはDOSよりずっとまともなワイルドカード使えるし
正規表現つかえるツールもいっぱいあるやん。
肌に合わないなら無理してUnix使うなよ(笑)

886 名前:デフォルトの名無しさん mailto:sage [2005/09/07(水) 14:02:00 ]
PIP.COMがないと話にならん。
今でも8インチ片単に入れて持ち歩いている。



887 名前:デフォルトの名無しさん mailto:sage [2005/09/07(水) 14:03:39 ]
海胆糞板逝け

888 名前:デフォルトの名無しさん mailto:sage [2005/09/07(水) 14:06:09 ]
うむ、PIPはけっこう良かった。

889 名前:デフォルトの名無しさん mailto:sage [2005/09/07(水) 18:42:10 ]
>>882
指の本数足りない人は大変だね

890 名前:デフォルトの名無しさん mailto:sage [2005/09/07(水) 21:23:50 ]
じゃぁ俺、秀吉。

891 名前:デフォルトの名無しさん mailto:sage [2005/09/07(水) 21:35:07 ]
>>890
大杉。

892 名前:デフォルトの名無しさん mailto:sage [2005/09/08(木) 11:18:54 ]
vimのようにスクリーン全体を書き変えるようなプログラムの画面出力を得るにはどうしたらよいのでしょうか?

893 名前:デフォルトの名無しさん mailto:sage [2005/09/08(木) 11:52:01 ]
vram上のデータをファイルに書きだせばいい。

894 名前:デフォルトの名無しさん mailto:sage [2005/09/08(木) 11:55:49 ]
>>892
・画面のイメージが欲しい。
・画面全体を文字列として取得したい。
・vimの出力するコントロールシーケンスを取得した。
どれ?

895 名前:デフォルトの名無しさん mailto:sage [2005/09/08(木) 12:17:45 ]
>>894
二番目か三番目です。そのへんも良くわからないもので…

896 名前:デフォルトの名無しさん mailto:sage [2005/09/08(木) 12:20:00 ]
>>894
> ・画面全体を文字列として取得したい。

端末エミュレータでcut&paste

> ・vimの出力するコントロールシーケンスを取得した。

script(1)




897 名前:デフォルトの名無しさん mailto:sage [2005/09/08(木) 12:21:02 ]
あれ? 自分の書いたプログラムで、
自分の書いた画面を知りたいと言うこと?
curses(3)を使って画面を書けばあ?

898 名前:デフォルトの名無しさん mailto:sage [2005/09/08(木) 12:24:47 ]
>>896
おお、ありがとうございます!scriptを使ってみます。

899 名前:892=895=898 mailto:sage [2005/09/08(木) 12:27:09 ]
>>893
vramって何か分かりません…
>>897
自分の書いたプログラムから他のプログラムを呼びだして、その画面出力が得られないかと思ったのですが…。

900 名前:デフォルトの名無しさん mailto:sage [2005/09/08(木) 12:30:59 ]
>>899
scriptはそういう使い方じゃないなあ。
cursesの方が良さそう。>>687>>683


901 名前:892 mailto:sage [2005/09/08(木) 12:40:48 ]
>>900
そうなんですか。。cursesで調べてみます。ありがとうございます!

902 名前:デフォルトの名無しさん mailto:sage [2005/09/08(木) 13:13:26 ]
>>901
騙されるなキミが調べるべきものは pty だ。

903 名前:デフォルトの名無しさん [2005/09/10(土) 12:28:45 ]
あるプロセスが動いているかどうかを調べるための関数を教えてください。

904 名前:デフォルトの名無しさん mailto:sage [2005/09/10(土) 12:31:03 ]
ps

905 名前:デフォルトの名無しさん mailto:sage [2005/09/10(土) 12:57:56 ]
>>903
ttp://www.adl.nii.ac.jp/~moro/unix-programmer/faq-j_2.html#SEC18

906 名前:デフォルトの名無しさん mailto:sage [2005/09/10(土) 14:35:12 ]
困りましたねぇ。



907 名前:デフォルトの名無しさん mailto:sage [2005/09/10(土) 14:42:55 ]
なんだこの直訳なページは!!

908 名前:デフォルトの名無しさん mailto:sage [2005/09/10(土) 14:51:26 ]
>>907
>>3

909 名前:名無しさん@そうだ選挙に行こう mailto:sage [2005/09/10(土) 21:54:37 ]
>>907
書籍じゃないんだから訳が気に入らないなら自分も訳せば?


910 名前:名無しさん@そうだ選挙に行こう mailto:sage [2005/09/10(土) 22:45:09 ]
メモリが'read'になることはできませんでした。

911 名前:名無しさん [2005/09/11(日) 08:40:39 ]
>>892
vim abc.txt |tee vim.log
でどう?

912 名前:911 [2005/09/11(日) 09:01:00 ]
あるいは、vim のコマンドを使って適当な行を切り出す。
vim -c ":1,25w! onepage.txt" orig.txt


913 名前:名無しさん@そうだ選挙に行こう mailto:sage [2005/09/11(日) 19:05:01 ]
オクトデュアル ってなんでしょうか

914 名前:名無しさん@そうだ選挙に行こう mailto:sage [2005/09/11(日) 19:10:03 ]
ググったらすごかった

915 名前:デフォルトの名無しさん mailto:sage [2005/09/12(月) 09:54:37 ]
Emacsやviより統合開発環境を使った方がわかり易くないでしょうか?



916 名前:デフォルトの名無しさん mailto:sage [2005/09/12(月) 09:58:27 ]
Σ(´д`) えっ このすれは大学生、院生、趣味人 しかいないって本当ですか?



917 名前:デフォルトの名無しさん mailto:sage [2005/09/12(月) 10:15:59 ]
本当です

918 名前:デフォルトの名無しさん mailto:sage [2005/09/12(月) 14:10:34 ]
趣味人ってのが範囲広すぎるな。。。
(一応)社会人の俺もあてはまってしまうではないか。

919 名前:デフォルトの名無しさん mailto:sage [2005/09/12(月) 14:18:35 ]
社会人に(一応)と付ける意味がわからん。
NEETってこと?

920 名前:デフォルトの名無しさん mailto:sage [2005/09/12(月) 15:04:12 ]
>>913-
スレ違い

921 名前:デフォルトの名無しさん mailto:sage [2005/09/12(月) 15:36:29 ]
>>1-
板違い

922 名前:名無しさん [2005/09/16(金) 19:59:21 ]
Advanced Programming in the Unix Environment
だけど、
amazon.com から直接買うのと
amazon.co.jp から買うのとどっちが安い?

923 名前:デフォルトの名無しさん mailto:sage [2005/09/16(金) 20:21:59 ]
しらべりゃば?

924 名前:名無しさん [2005/09/16(金) 20:52:18 ]
調べた。
amazon.com(古本) + 送料9.79ドル + 日本の消費税 = 7848円  (3週間以上かかる?)
amazon.co.jp(新本) + 送料無料  +  (税込み)    = 8734円  (数日)

925 名前:デフォルトの名無しさん mailto:sage [2005/09/17(土) 08:41:08 ]
ついでに買いたい洋書の1冊や2冊ないのか?


926 名前:名無しさん [2005/09/17(土) 13:26:08 ]
古本混ぜると1パックにまとまらんのよ



927 名前:デフォルトの名無しさん mailto:sage [2005/09/17(土) 13:46:49 ]
自分なら値段が少し高くついても、面倒くさくないほうを選ぶ。

928 名前:デフォルトの名無しさん [2005/09/17(土) 18:00:49 ]
おまいら、MINIXやったか?

929 名前:デフォルトの名無しさん [2005/09/17(土) 18:03:52 ]
けっ、

930 名前:名無しさん [2005/09/17(土) 20:19:39 ]
Advanced Programming in the Unix Environment
第1版   著者Stevens(1999年に死去)       邦訳 『詳解UNIXプログラミング』
第2版   Pagoによる改定版(2005年)        (いずれ第2版の邦訳も出るだろう)

Linuxについての記述を読んでみたいので買うか。


931 名前:デフォルトの名無しさん mailto:sage [2005/09/17(土) 23:59:20 ]
カーネルの勉強したいけど、どのへんがおすすめ?
www.amazon.co.jp/exec/obidos/ASIN/0132017997/
www.amazon.co.jp/exec/obidos/ASIN/0596005652/
www.amazon.co.jp/exec/obidos/ASIN/0130313580/
www.amazon.co.jp/exec/obidos/ASIN/0136386776/

932 名前:デフォルトの名無しさん mailto:sage [2005/09/18(日) 08:01:52 ]
FreeBSDじゃダメかね? OS問わないなら、一番読みやすいと思うが。
www.mckusick.com/FreeBSDbook.html
具体的なんじゃなくて、概論だったらこっちがお勧め。
www.amazon.com/exec/obidos/tg/detail/-/0201741962/

タンネンバウムはMINIX(とamoeba)で有名になったけれど、著作は激しくイマイチ。

933 名前:デフォルトの名無しさん mailto:sage [2005/09/18(日) 12:16:16 ]
今更FreeBSDのkernelなんか勉強して意味あるのか
LinuxかOpenSolarisだろ

934 名前:デフォルトの名無しさん mailto:sage [2005/09/18(日) 12:50:49 ]
Solarisだと、↓だな。

Solarisインターナル
www.amazon.co.jp/exec/obidos/ASIN/4894714582/

935 名前:デフォルトの名無しさん mailto:sage [2005/09/18(日) 12:52:00 ]
>>933
基本的な技法はそれほど変わらないよ。
>>931のような人なら。

Linuxはいい本あるかね?
構造がころころ変わるしなあ。

936 名前:デフォルトの名無しさん mailto:sage [2005/09/18(日) 15:34:39 ]
kernel 2.4以前と2.6以降の違いって言えるか?

おれは、無理。



937 名前:名無しさん [2005/09/18(日) 21:25:27 ]
つ www-6.ibm.com/jp/developerworks/linux/031121/j_l-inside.html

938 名前:デフォルトの名無しさん mailto:sage [2005/09/18(日) 21:28:20 ]
↑ブラクラ

939 名前:デフォルトの名無しさん mailto:sage [2005/09/18(日) 23:36:06 ]
さすがにdeveloperWorksをブラクラって言っても誰も引っかからないと思う

940 名前:デフォルトの名無しさん mailto:sage [2005/09/19(月) 11:43:21 ]
おれはURLだけ張って澄まし顔の奴が許せない

941 名前:デフォルトの名無しさん mailto:sage [2005/09/19(月) 13:04:58 ]
なぐっていいよ

942 名前:デフォルトの名無しさん mailto:sage [2005/09/19(月) 14:03:15 ]
仕事上Linuxカーネルの仕様変更は0.0.0.1単位で把握してるけど
こういうのって御当地カップラーメンのバージョンいくつ覚えてるか
とかいうのと大差無いどうでもいい知識なんだよな。面白いけど。

943 名前:デフォルトの名無しさん [2005/09/19(月) 15:19:54 ]
ログファイルの再オープン(?)について質問です。

openlog("test", LOG_NDELAY|LOG_PID, 0, LOG_LOCAL2);
のようにオープンして出力しているログファイルを、SIGHUP受信時に
再オープンしたいのですが、
signal(SIGHUP,sighup_handler);
...
void sighup_handler(int signal)
{
closelog();
openlog("test", LOG_NDELAY|LOG_PID, 0, LOG_LOCAL2);
}

では、処理以降にログが記録されなくなってしまいました。
GoogleやKodersなどで調べてみてもこれというものが見つからなかったのですが
正しい処理の書き方はどのようにすればいいのでしょうか?

944 名前:943 mailto:sage [2005/09/19(月) 15:26:41 ]
補足です。
最終的にログローテートを正常に行いたいわけですが、/etc/syslog.conf に
local2.*/var/log/test.log
とした上で、/etc/logrotate.d/syslog に
/var/log/test.log {
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
endscript
}

と書いたのですが、ローテート後のログファイルには何も出力されませんでした。
それでプログラム側でもSIGHUPで何かしないとだめなのかと思ったのですが。。。

945 名前:デフォルトの名無しさん mailto:sage [2005/09/19(月) 15:48:34 ]
>>943
やり方はだいたいOKだから
closelogとopenlogを疑うしかないな
openlog内のファイルの開き方が特に心配だ

946 名前:デフォルトの名無しさん mailto:sage [2005/09/19(月) 16:00:27 ]
経験的にはcloselog呼ばずにもう1回openlog()呼べば上手く行くことが多い



947 名前:943 mailto:sage [2005/09/19(月) 16:02:03 ]
ありがとうございます。
openlog()で開いてsyslog()で出力しているだけなので、openlog()の処理が
実際どのように行われているか分かりません…。渡している引数がおかしかったり
するのでしょうか?

それと環境を書いていませんでした。RedHat9(gcc3.2.2, glibc2.3.2)です。
単純なサーバプログラムの練習で書いています。

948 名前:943 mailto:sage [2005/09/19(月) 16:24:38 ]
>>946
ありがとうございます。
試してみましたが、ファイル名を変更しても以前のログファイルにそのまま
追記されてしまいました。

根本的な質問で恐縮ですが、syslogにログを出力する場合にログローテートに
必要なこととは何なのでしょうか?
・アプリケーション側でHUPシグナル受信時などにログファイルを再オープン
・syslogdを再起動
↑上記は二つとも必要でしょうか?

949 名前:943 mailto:sage [2005/09/19(月) 16:26:42 ]
すみません。>>943のopenlog()の部分ですが手写しだったので
間違っていました。訂正いたします。
誤: openlog("test", LOG_NDELAY|LOG_PID, 0, LOG_LOCAL2);
正: openlog("test", LOG_NDELAY|LOG_PID, LOG_LOCAL2);

950 名前:デフォルトの名無しさん mailto:sage [2005/09/19(月) 16:51:07 ]
書かれるログはsyslogが握ってるんだから出力するデーモン側では
何もする必要ないだろ。
syslogdが腐ってるんじゃないの?
それになんでわざわざkillのエラー出力を捨ててるのさ。



951 名前:943 mailto:sage [2005/09/19(月) 18:00:21 ]
ありがとうございます。
syslogに出力している場合、syslogdを再起動(またはHUP)するだけで
良いということですね。ローテート後にログが出力されなくなるのは別の
原因かもしれませんので、もう少し調べてみます。

killのエラー出力を捨てているのは、/etc/logrotate.d/syslog の他の
デフォルト記述がそうなっていたので流用していました。


952 名前:デフォルトの名無しさん mailto:sage [2005/09/19(月) 18:06:38 ]
別にsyslogdの動作が標準で決まっているわけじゃないので、
SIGHUP送ればどうとかそんなことは環境依存。少なくとも最近の
OSに同梱のsyslogdなら、ローテートするためのコマンドが一緒に
ついてくるか、ローテートする方法がマニュアルに書いてある
はずだが。
どっちも無いとしたらそのロクでもない環境を恨め。

953 名前:デフォルトの名無しさん mailto:sage [2005/09/19(月) 18:14:01 ]
syslog(3)はsyslogdにログを送る関数で、
ログローテイトはsyslogd側の仕事。

殆んどの場合、SIGHUPでsyslogdがログファイルをreopenする。
ただし、新しいファイルはtouch(1)などで作成してやる必要があることが多い。

>>945>>946は、かなり無知だから、知らないことは黙っているように。

954 名前:デフォルトの名無しさん mailto:sage [2005/09/19(月) 18:37:40 ]
SIGPIPEってシグナルハンドラで捉えることができないのでしょう
か?

下のプログラムを実行してもシグナルハンドラが呼ばれず、一瞬で
終了してしまいます。linuxとsolarisでテストしてみました。

#include <stdio.h>
#include <unistd.h>
#include <signal.h>

void f(int a)
{
  printf("sigpipe\n");
}

int main(int argc, char **argv)
{
  int fds[2];
  pipe(fds);
  close(fds[0]);
  write(fds[1], "hoge", 4);
  signal(SIGPIPE, f);
  sleep(100);
  return 0;
}

955 名前:デフォルトの名無しさん mailto:sage [2005/09/19(月) 18:44:24 ]
>>953
syslogがsyslogdにログを送る関数なんて決まってないんだが
LinuxとBSDしか触ってないとこういう人間になるんだろうか

956 名前:デフォルトの名無しさん mailto:sage [2005/09/19(月) 19:00:45 ]
>>953
ちょっと誤解を招きそうな書き方じゃないか?
syslogdはHUPを受けてクチをパクパクするだけで
ログローテート自体はnewsyslog(ないし類似品)の仕事。

どのみちsyslogを吐くプログラムの知ったことではないんだが。

>>954
KILLとSTOP以外は捕捉できる筈だが。他のttyでkillを使ってSIGPIPEを
送ってみたか?
言っておくが、writeより後に設定したシグナルハンドラが時空を遡って
機能するなんてことはないぞ普通。

>>955
質問からsyslogdが存在するシステムなのは明らかなんだから別に構わないだろ。
この質問でimplementation-defined logging facilityがsyslogd以外であることを
想定する奴はいないだろ。




957 名前:954 mailto:sage [2005/09/19(月) 19:47:06 ]
>>956
すいません。あほでした。writeを後にしたらシグナルハンドラが
呼ばれました。

958 名前:デフォルトの名無しさん mailto:sage [2005/09/19(月) 19:53:54 ]
>>954
$ cat tt.c
#include <stdio.h>
#include <unistd.h>
#include <signal.h>

void f(int a)
{
fprintf(stderr, "sigpipe\n");
fflush(stderr);
}

int main(int argc, char **argv)
{
signal(SIGPIPE, f);
for (;;) {
printf("This is a test\n");
fflush(stdout);
}
return 0;
}
$ ./a.out | echo
sigpipe
sigpipe
sigpipe

959 名前:デフォルトの名無しさん mailto:sage [2005/09/20(火) 17:39:45 ]
fork、ドキュメント呼んでも全然わかりません
小さいプログラムのソースと挙動から都合のいい解釈してます
でダメだししてほしいんですけども

intforked = -1;
int main() {
fork();
}

int fork() {
if (forked == -1)
forked = 0;
return (forked = main());
} else {
return (forked);
}
}

この自作forkはforkっぽいですか?全然話になりません?

960 名前:デフォルトの名無しさん mailto:sage [2005/09/20(火) 17:44:22 ]
>>959
なにがやりたいの?


961 名前:デフォルトの名無しさん mailto:sage [2005/09/20(火) 18:11:49 ]
>>959
pthreadあたりと混同してるね

962 名前:デフォルトの名無しさん mailto:sage [2005/09/20(火) 18:16:53 ]
自前で fork できたら大変w

963 名前:デフォルトの名無しさん mailto:sage [2005/09/20(火) 18:22:44 ]
>960
やりたい事はとりあえず理解したいです
あれであってます?forkがpidだけ違う複製(子)を生成します。て各所で書かれてますが
forkは己を呼ぶって事ですよね?どこを呼ぶんんでしょうか、もーまるごと疑問ですよ

根本が間違ってると思うんで質問しづらいんですけども
switch(fork()) {
case 0:
exec();
}
こんなコードとか見かけるんですけど
forkしてからexec()呼んだりするのは
何のメリットがあるんでしょうか

普通にexec()呼ぶコード見かけません


964 名前:デフォルトの名無しさん mailto:sage [2005/09/20(火) 18:51:25 ]
fork() は現在のプロセスと同じ内容の新しいプロセスを生成する。
exec() は現在のプロセスに別のプログラムをロードして実行する。

fork() してから exec() すれば、現在のプロセスはそのまま実行しつつ、
新しいプロセスで別のプログラムを実行することができる。

fork() しないで exec() すれば、現在のプログラムは別のプログラムに置き換わってしまう。


965 名前:デフォルトの名無しさん mailto:sage [2005/09/20(火) 18:51:52 ]
>>963
そのコードだと、fork()でプロセスがコピーされた後は
親プロセスも子プロセスもswitch()で真偽の評価を行う。
fork()の返り値は親と子で異なるから
そのswitchによって親と子の動作が分岐する。

「普通にexec()呼ぶ」と1つのプロセスが他のプログラムに化けるだけ。
それに対してfork()してexec()呼ぶとマルチプロセスになる。

966 名前:965 mailto:sage [2005/09/20(火) 18:57:13 ]
>>965
>親プロセスも子プロセスもswitch()で真偽の評価を行う。

ミスった。
「親プロセスも子プロセスもswitch()で値の評価を行う」が正しい。



967 名前:デフォルトの名無しさん mailto:sage [2005/09/20(火) 19:54:03 ]
fork()した瞬間を堺に、実行してるプロセスが二つに分裂する。
fork()した途端にパラレルワールドができると思え。

そのパラレルワールドは元の世界とまったく同じだが、
ひとつだけ、fork() の戻り値と、親の pid だけが違う。

968 名前:963 mailto:sage [2005/09/20(火) 20:21:53 ]
>965,967
すっごい、今その事を頭にいれて読み直しました。で

親はforkの戻り値がおおー、
子のプロセスが再度同じfork通って、おおーー
これ子もwait通っていいの?おおーすげーーーー

とか自己完結の連発です。上手く言えません
ぐっときましたありがとう。更に深めにのめり込んで見ます
これ2重人格だ

969 名前:デフォルトの名無しさん mailto:sage [2005/09/20(火) 20:27:51 ]
ちょっと微笑ましいね

970 名前:デフォルトの名無しさん mailto:sage [2005/09/20(火) 20:34:43 ]
>>968
> 子のプロセスが再度同じfork通って、おおーー

メモリの中身も全く同じ分身(子プロセス)が出来て、
そいつはfork()を返るところから始まるんですよ。

ただpidや帰り値が違うと。

971 名前:デフォルトの名無しさん mailto:sage [2005/09/21(水) 04:54:25 ]
でも実際、fork() のインターフェースは奇怪だよなぁ…。
なんかもっと上手い方法は無かったんかね。

972 名前:デフォルトの名無しさん mailto:sage [2005/09/21(水) 04:58:57 ]
いや、とてもよくできている。
*BSDのrfork()もpretty!

973 名前:デフォルトの名無しさん mailto:sage [2005/09/21(水) 12:16:54 ]
漏れもとても使い勝手が良いとおもう>>fork

Windows の CreateProcess みたいな一見すっきりしたAPIだと、
新プロセスに情報を渡すのが面倒。

974 名前:デフォルトの名無しさん mailto:sage [2005/09/21(水) 13:43:43 ]
>>973
すっきりしてるかなあ?
まあWin32のプロセスは親子の結び付きが弱いような気はしますな。


975 名前:デフォルトの名無しさん mailto:sage [2005/09/21(水) 14:08:17 ]
Win32は、
・コンセプト単純
・関数仕様複雑
・機能貧弱
POSIX fork()は、
・コンセプト抽象的
・関数仕様超単純
・(モデルが)高機能

fork()に戸惑う人は、抽象的なコンセプトにやられていると思われ
fork/joinモデルよりも、分身が出来るという概念に。

976 名前:デフォルトの名無しさん [2005/09/21(水) 17:12:14 ]
Linux環境で、getopt()を使ってるプログラムをgdbでデバッグ
してるんだけど、いくらgetopt()してもoptindをprintコマンド
で見るといつも1になってるんです。
コード中でprintf()してoptindを見ると、ちゃんと数字が上がる
んだけど。

で、optindのポインタを調べてみたら、gdbでprintしたやつと
コード中でprintf()したやつとは違った物になってた。

どうやったらgdbで正しいoptindを見ることが出来ますでしょうか。



977 名前:デフォルトの名無しさん mailto:sage [2005/09/21(水) 20:04:01 ]
試さずに適当に答えるが、最適化されちゃってんじゃないのかな。
最適化外してコンパイルしてみればあ。

978 名前:デフォルトの名無しさん mailto:sage [2005/09/21(水) 20:17:42 ]
libcコンパイルしなおせばいいんだと思うが、そもそも板違い。犬板逝け


979 名前:デフォルトの名無しさん mailto:sage [2005/09/21(水) 20:19:04 ]
(´・ω・`)

980 名前:デフォルトの名無しさん mailto:sage [2005/09/21(水) 21:13:30 ]
fork()の仕様が単純とか言ってる奴は池沼ですか

981 名前:デフォルトの名無しさん mailto:sage [2005/09/21(水) 21:20:42 ]
>>978
逆だろ? callerが、calleeによって変えられたメモリじゃなくて、
registerのみを見てるんだろ?

(gdb) printf *(&optind)
でどうかな?

982 名前:976 [2005/09/22(木) 10:15:47 ]
皆様ありがとうございます。
CPUに弱いのでcallerとかcalleeとか全くわからいのですが、
>>981さんの言う

(gdb) print *(&optind)

でも結局同じでした。
皆さんの環境ではどうなんでしょうか。ちゃんと正しい optind
が gdb の print で見れているのでしょうか。

あと、犬板に相応のスレが無いのでここに来た次第です。


983 名前:デフォルトの名無しさん mailto:sage [2005/09/22(木) 10:39:38 ]
試してみたけどこのぐらいの簡単なプログラムで確かにその現象がでるな。

#include <stdio.h>
#include <unistd.h>
extern int optind;

int main(int argc, char **argv)
{
int opt;

while ((opt = getopt(argc, argv, "abc")) >= 0) {
printf("opt=%c optind=%d &optind=%08x\n", opt, optind, (int)&optind);
}
}



984 名前:デフォルトの名無しさん mailto:sage [2005/09/22(木) 10:40:20 ]
↑をgdbにかけるとこんな感じ。

(gdb) break 9
Breakpoint 1 at 0x8048414: file optind.c, line 9.
(gdb) run -a -b
Starting program: /home/matsui/a.out -a -b

Breakpoint 1, main (argc=3, argv=0xbfdd1884) at optind.c:9
9 while ((opt = getopt(argc, argv, "abc")) >= 0) {
(gdb) s
10 printf("opt=%c optind=%d &optind=%08x\n", opt, optind, (int)&optind);
(gdb) s
opt=a optind=2 &optind=080496b8
9 while ((opt = getopt(argc, argv, "abc")) >= 0) {
(gdb) print optind
$1 = 1
(gdb) print &optind
$2 = (int *) 0xb7fb07d8

どうなってんのかね?


985 名前:>>981 mailto:sage [2005/09/22(木) 11:03:22 ]
(gdb) print *((int *) 0xb7fb07d8)

すると、正しい値だね。

986 名前:>>981 mailto:sage [2005/09/22(木) 11:07:49 ]
lists.gnu.org/archive/html/bug-gdb/2005-07/msg00002.html
にも報告されてる。

6.0, 6.3でも駄目。



987 名前:デフォルトの名無しさん [2005/09/22(木) 15:34:09 ]
pc8.2ch.net/test/read.cgi/tech/1114223450/

>GNUが低品質なのはconfigureと無関係ではないだろう。
>GNUが低品質なのはconfigureと無関係ではないだろう。
>GNUが低品質なのはconfigureと無関係ではないだろう。


988 名前:デフォルトの名無しさん mailto:sage [2005/09/22(木) 15:42:27 ]
GNUって究極の低賃金労働者の粗悪品だろ。

989 名前:デフォルトの名無しさん mailto:sage [2005/09/22(木) 15:47:22 ]
そもそもソース配布なんて馬鹿げた思想を排除すべき。


990 名前:デフォルトの名無しさん mailto:sage [2005/09/22(木) 15:48:14 ]
まさにこの業界にとっての諸悪の根源だね


991 名前:デフォルトの名無しさん mailto:sage [2005/09/22(木) 15:50:44 ]
GDBっつーかGNU謹製のクソさ加減がよくわかった

992 名前:デフォルトの名無しさん mailto:sage [2005/09/22(木) 15:52:09 ]
でも、糞UNIXがいまだに生き残ってるのはGNUのおかげなんだよな。

993 名前:デフォルトの名無しさん mailto:sage [2005/09/22(木) 15:53:36 ]
SourceForge死ね


994 名前:デフォルトの名無しさん mailto:sage [2005/09/22(木) 15:56:02 ]
価値のあるソフトを作ってください


995 名前:デフォルトの名無しさん mailto:sage [2005/09/22(木) 15:57:57 ]
>>98
同意!
RMSは反社会的な共産主義者!

996 名前:デフォルトの名無しさん mailto:sage [2005/09/22(木) 15:58:34 ]
国にはGPLコードの輸入の禁止措置をとってもらいたい。
このままでは国内産業が壊滅してしまう。



997 名前:デフォルトの名無しさん mailto:sage [2005/09/22(木) 16:00:13 ]
おれもそう思う。
こういうソース公開の押し付けは、いらないんじゃないかって。


998 名前:デフォルトの名無しさん mailto:sage [2005/09/22(木) 16:01:27 ]
UNIX向けの商用のソフトが存在しないのは
こいつのせい

999 名前:デフォルトの名無しさん mailto:sage [2005/09/22(木) 16:02:19 ]
存在しないオプションを渡した時のoptoptは正しく読めるな。

それから、gdbで、optind = 100としても、メモリ側は書き変わってないけれど、
(gdb) print optind
すると、100が出力される。

やはり>>981ということで、メモリをフェッチせずにレジスタを見ているようだ。


1000 名前:デフォルトの名無しさん mailto:sage [2005/09/22(木) 16:02:19 ]
次スレ
pc8.2ch.net/test/read.cgi/tech/1114223450/


1001 名前:1001 [Over 1000 Thread]
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<207KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef