[表示 : 全て 最新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/

2 名前:デフォルトの名無しさん mailto:sage [2005/05/24(火) 13:15:26 ]
【POSiX】
The Open Group Base Specifications Issue 6
IEEE Std 1003.1, 2004 Edition
www.opengroup.org/onlinepubs/009695399/toc.htm


【必読書】
Advanced Programming in the UNIX(R) Environment
www.amazon.com/exec/obidos/tg/detail/-/0201563177/

Unix Network Programming
Vol. 1: The Sockets Networking API, Third Edition
www.amazon.com/exec/obidos/tg/detail/-/0131411551/

UNIX Network Programming
Volume 2: Interprocess Communications (2nd Edition)
www.amazon.com/exec/obidos/tg/detail/-/0130810819/

3 名前:デフォルトの名無しさん mailto:sage [2005/05/24(火) 13:15:56 ]
 man on www
www.linux.or.jp/JM/#Search

GNU Make 日本語リファレンス
www.ecoop.net/coop/translated/GNUMake3.77/make_toc.jp.html

Unix Programming Frequently Asked Questions 日本語訳
www.adl.nii.ac.jp/~moro/unix-programmer/faq-j_toc.html

4 名前:デフォルトの名無しさん mailto:sage [2005/05/24(火) 13:16:39 ]
関連スレ追加

ネットワークプログラミング相談室 Port13
pc8.2ch.net/test/read.cgi/tech/1109793931/
マルチスレッドプログラミング相談室 その3
pc8.2ch.net/test/read.cgi/tech/1098268137/

5 名前:デフォルトの名無しさん [2005/05/24(火) 15:54:32 ]
system関数でrmを使う以外に、ファイルを削除する方法はありますか?

6 名前:デフォルトの名無しさん mailto:sage [2005/05/24(火) 15:56:07 ]
>>5
rmの何が不満だ?

7 名前:デフォルトの名無しさん [2005/05/24(火) 15:56:09 ]
>>5
いいえ

8 名前:デフォルトの名無しさん [2005/05/24(火) 16:15:27 ]
不満はないです。ただ、Windowsなどへの可搬性が低くなるものでつかいたくないのです

9 名前:デフォルトの名無しさん mailto:sage [2005/05/24(火) 16:30:28 ]
rm.bat
でも作っておけばいい

10 名前:デフォルトの名無しさん mailto:sage [2005/05/24(火) 17:38:11 ]
>>9
(・∀・)ソレダ!!



11 名前:デフォルトの名無しさん mailto:sage [2005/05/24(火) 18:20:09 ]
unlinkってWinでも使えたっけ

12 名前:デフォルトの名無しさん mailto:sage [2005/05/24(火) 18:48:21 ]
使えるよ。

13 名前:デフォルトの名無しさん [2005/05/24(火) 20:26:48 ]
>>5
remove() って無い?

14 名前:デフォルトの名無しさん [2005/05/24(火) 22:49:17 ]
C言語のスレッドから誘導されましたので
こちらで質問させてください。

iconv関数で、EUC→ISO-2022-JP
変換はできないのでしょうか?

openでは正常リターンするのですが、
iconv関数を発行するとエラーになります・・・


15 名前:デフォルトの名無しさん mailto:sage [2005/05/24(火) 22:55:38 ]
できるけど名称がいろいろなので、OSとか環境かいてくれ

16 名前:14 [2005/05/24(火) 23:06:54 ]
環境書くの忘れてました。

LINUX Redhat ES2.1です。
コンパイラはgccです。

今気付いたんですけど、
LINUXスレのスレ違いでしたかね?

17 名前:デフォルトの名無しさん mailto:sage [2005/05/24(火) 23:16:56 ]
Linux を UNIX と云うなら Windows だって UNIX だよね。


18 名前:デフォルトの名無しさん mailto:sage [2005/05/24(火) 23:19:20 ]
Linux: UNIX 好きが作った
Windows: UNIX 嫌いが作った

19 名前:デフォルトの名無しさん mailto:sage [2005/05/24(火) 23:19:56 ]
どう発行したらどういうエラーが出たのかね

20 名前:デフォルトの名無しさん mailto:sage [2005/05/24(火) 23:38:05 ]
劣化UNIXのDOSに劣化MacのGUIをくっつけたのがWin

と煽ってみるテスツw



21 名前:デフォルトの名無しさん mailto:sage [2005/05/25(水) 00:47:37 ]
>>20
煽るスレ間違ってる

22 名前:デフォルトの名無しさん mailto:sage [2005/05/25(水) 20:10:13 ]
今は正直MacよりWinの方が使いやすい

23 名前:14 [2005/05/25(水) 21:27:14 ]
iconv_open("ISO-2022-JP", "EUC-JP");

でオープンして、"あいうえお"を変換してみたところ、
errnoがEILSEQ(無効なマルチバイトあり)となってしまいました。

ためしに、
iconv_open("SHIFT_JIS", "EUC-JP");
に変えてみたところ、きちんと変換はされています。

出力バッファも十分に確保していますし、
何か思い当たることがありましたらお願いします。


24 名前:デフォルトの名無しさん mailto:sage [2005/05/25(水) 21:34:34 ]
ソースコード張れ、ソースコード。

25 名前:デフォルトの名無しさん mailto:sage [2005/05/25(水) 21:43:32 ]
ISO-2002-JPってことはシフトステートの問題じゃねえの?
"あいうえお"の前後にエスケープシークエンスがついてないと
だめだと思う。

26 名前:デフォルトの名無しさん [2005/05/26(木) 01:53:56 ]
iso2022文字列をリテラルでプログラム内に書こうという時点で敗北

27 名前:デフォルトの名無しさん mailto:sage [2005/05/26(木) 07:22:58 ]
iconv(1)では変換できるか試してみた?

28 名前:デフォルトの名無しさん mailto:sage [2005/05/27(金) 06:23:35 ]
Num Lock の状態を判別する方法を教えてください

29 名前:デフォルトの名無しさん mailto:sage [2005/05/27(金) 07:02:17 ]
LEDランプが点灯していたら ON

30 名前:デフォルトの名無しさん mailto:sage [2005/05/27(金) 07:04:20 ]
>>29
プログラムから



31 名前:デフォルトの名無しさん mailto:sage [2005/05/27(金) 07:38:04 ]
BOOL GetNumLockStateEx(LPNMLKSTATE lpNmlkState);

32 名前:デフォルトの名無しさん mailto:sage [2005/05/27(金) 08:36:07 ]
えーと、ここ何のスレだっけ?

33 名前:デフォルトの名無しさん mailto:sage [2005/05/27(金) 10:07:22 ]
>>28
if(modifiers(void) & B_NUM_LOCK){
  //NumLockがONになってる
}


34 名前:デフォルトの名無しさん mailto:sage [2005/05/27(金) 10:13:50 ]
(・∀・) void

35 名前:デフォルトの名無しさん [2005/05/27(金) 14:13:23 ]
VOice ID

36 名前:デフォルトの名無しさん [2005/05/27(金) 23:17:14 ]
マイクロ秒単位でスリープさせたいんだけど、どうすればいいかな?
sleep関数は秒指定だし、BSDではselect関数のtimeval構造体のtv_usecが無視されるし…

37 名前:デフォルトの名無しさん mailto:sage [2005/05/27(金) 23:18:51 ]
おまえはマイクロ秒を知覚できるのかと

38 名前:デフォルトの名無しさん mailto:sage [2005/05/27(金) 23:19:06 ]
usleep, nanosleep.
と、ここまで書いて、tv_usecが無視される?
いったどこのBSD?
寝過ぎる事があるから使えないとか言わないでくれよ。

39 名前:デフォルトの名無しさん mailto:sage [2005/05/27(金) 23:38:13 ]
リアルタイムOSでもつかっとけ。

40 名前:デフォルトの名無しさん mailto:sage [2005/05/28(土) 09:27:57 ]
ほんとうにマイクロ秒単位の解像度があるOSなんて普通ないでそ。



41 名前:デフォルトの名無しさん mailto:sage [2005/05/28(土) 14:36:24 ]
sleep系は「すくなくともn秒処理を停止」するんであって
「n秒たったら処理を再開する」わけではないよ
OSの都合で処理がいつまでも復帰しない可能性はある

42 名前:デフォルトの名無しさん mailto:sage [2005/05/28(土) 14:52:25 ]
マイクロ秒の精度が欲しいなら自分でクロック計算して
ビジーループを回すのが確実

43 名前:デフォルトの名無しさん mailto:sage [2005/05/28(土) 14:54:22 ]
ビジーループだろうがコンテキストスイッチされない保証はぜんぜん
ないんじゃないの

44 名前:デフォルトの名無しさん mailto:sage [2005/05/28(土) 15:04:56 ]
スレッドの優先度上げればスイッチされないよ

45 名前:デフォルトの名無しさん mailto:sage [2005/05/28(土) 15:07:31 ]
iconv(iconv_t cd, char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft)
で変換後の文字列のバイト数、要するにoutbytesleftに最低限必要な値を求める方法って何かないでしょうか?
i

46 名前:デフォルトの名無しさん mailto:sage [2005/05/28(土) 15:09:22 ]
splで割り込まれないようにするのは?

47 名前:デフォルトの名無しさん mailto:sage [2005/05/28(土) 15:40:28 ]
>>45
iconvの変換器は状態を持つので、一回それで試してバッファを確保してもう
一度……という使い方は間違ってる。



48 名前:デフォルトの名無しさん [2005/05/30(月) 06:20:20 ]
標準出力が pty か pipe かってどうやって判断しればよい?

49 名前:デフォルトの名無しさん mailto:sage [2005/05/30(月) 06:51:02 ]
ioctl


50 名前:デフォルトの名無しさん mailto:sage [2005/05/30(月) 07:06:53 ]
isatty



51 名前:デフォルトの名無しさん mailto:sage [2005/05/30(月) 08:50:16 ]
APUE も読んでないやつがいるな

52 名前:デフォルトの名無しさん mailto:sage [2005/05/30(月) 09:49:11 ]
>>51 全員読んでたらこのスレの流量は1/10以下になると思われ。



53 名前:デフォルトの名無しさん [2005/05/30(月) 11:05:07 ]
>>51
あの系統の本で新しいの(日本語がいいなぁ)って出てないの?


54 名前:デフォルトの名無しさん mailto:sage [2005/05/30(月) 11:21:01 ]
そんなあなたにAPUE 2nd Ed.
日本語訳のことは知らないが、まあそのうち出るんじゃないか。


55 名前:デフォルトの名無しさん mailto:sage [2005/05/30(月) 14:07:17 ]
>>48
pipeかどうかはfstat(2)してS_ISFIFOで。

56 名前:53 [2005/05/31(火) 11:05:02 ]
>>54
2nd Ed. でてたのか!
早く日本語訳出ないかなぁ。

あとUNIX Network Programming (SCTPとか追加になったやつ)のやつも翻訳でてほしい。
>篠田先生よろしくお願いします。m(_ _)m


57 名前:56 mailto:sage [2005/05/31(火) 11:07:42 ]
>>54
アマゾったらまだ発売してないじゃないくぁ。APUE 2nd Ed.
近日発売になってたけど。


58 名前:デフォルトの名無しさん [2005/05/31(火) 11:48:25 ]
APUE ってなに?
あぷえ?

59 名前:デフォルトの名無しさん mailto:sage [2005/05/31(火) 11:49:35 ]
そう。あぷえ。

60 名前:54 mailto:sage [2005/05/31(火) 11:50:32 ]
ごめんよぅ (´・ω・`)




61 名前:デフォルトの名無しさん mailto:sage [2005/05/31(火) 12:03:03 ]
アマゾンであぷえ調べたけど2ndは売ってないみたいあぷえ
Additionalなんとかさんがそれなのあぷえ

62 名前:デフォルトの名無しさん mailto:sage [2005/05/31(火) 19:32:46 ]
6/10発売じゃない?
あと10日

63 名前:デフォルトの名無しさん mailto:sage [2005/06/03(金) 05:18:55 ]
俺はあぷえは初版だけでいいな。90年代前半のUNIXについて
知ることができるし。現在のUNIXについて知りたいなら、今ある
資料読めばいいし。

64 名前:デフォルトの名無しさん [2005/06/03(金) 09:33:01 ]
90年代前半のUNIXなどというゴミについて知って何が楽しいのだろう

65 名前:デフォルトの名無しさん mailto:sage [2005/06/03(金) 10:02:21 ]
>>64
いや、それをいうなら70年代後半。。

66 名前:デフォルトの名無しさん [2005/06/03(金) 17:02:43 ]
Unix のコンソールの統合開発環境ていうのはありますか?
なければおまえがつくってください >>67

67 名前:デフォルトの名無しさん mailto:sage [2005/06/03(金) 17:07:13 ]
>>66
Emacs

68 名前:デフォルトの名無しさん mailto:sage [2005/06/03(金) 17:07:19 ]
そこで emacs ですよ。

69 名前:デフォルトの名無しさん mailto:sage [2005/06/03(金) 18:03:50 ]
emacs 以外ないだろう

70 名前:デフォルトの名無しさん mailto:sage [2005/06/03(金) 18:39:59 ]
vi



71 名前:デフォルトの名無しさん mailto:sage [2005/06/03(金) 22:09:55 ]
UNIX はログインした瞬間から統合開発環境に居る様なもんだ。
関数名補完とかは無いけど。

72 名前:デフォルトの名無しさん mailto:sage [2005/06/04(土) 13:53:58 ]
>>71
ホームディレクトリに関数名のファイルをいっぱい作っておくと言うのはどうか ?

73 名前:デフォルトの名無しさん mailto:sage [2005/06/04(土) 15:17:53 ]
>>72
echoでプログラム書く気か?

74 名前:デフォルトの名無しさん mailto:sage [2005/06/04(土) 15:37:28 ]
>>73
>>72 からどう考えたら、「echo でプログラム書く気か?」
なんて考えに至るのか非常に興味がある。

75 名前:デフォルトの名無しさん mailto:sage [2005/06/04(土) 15:59:51 ]
catの書き間違いでは?

76 名前:デフォルトの名無しさん mailto:sage [2005/06/04(土) 16:00:31 ]
シェルのファイル名補完を使ってプログラムを書こうとしてる
と考えたのではないか

77 名前:デフォルトの名無しさん mailto:sage [2005/06/04(土) 16:02:03 ]
補完が便利な言語とそうでないのがある
Cでは大して役にたたんだろう

78 名前:デフォルトの名無しさん mailto:sage [2005/06/05(日) 00:15:05 ]
あぷえが出た当時からUnixってそんなに発展したか?

79 名前:デフォルトの名無しさん mailto:sage [2005/06/05(日) 10:34:53 ]
基本的にはまったくそのまま(w

80 名前:デフォルトの名無しさん mailto:sage [2005/06/05(日) 11:14:42 ]
Linux とか



81 名前:デフォルトの名無しさん mailto:sage [2005/06/05(日) 12:29:55 ]
商用UNIXは進化しつづけていますよ。

82 名前:デフォルトの名無しさん mailto:sage [2005/06/05(日) 12:51:27 ]
あらぬ方向へと

83 名前:デフォルトの名無しさん mailto:sage [2005/06/05(日) 12:55:00 ]
  ,j;;;;;j,. ---一、 `  ―--‐、_ l;;;;;;
 {;;;;;;ゝ T辷iフ i    f'辷jァ  !i;;;;; 
  ヾ;;;ハ    ノ       .::!lリ;;r゙   UNIXにMacのGUIがつけば最強
   `Z;i   〈.,_..,.      ノ;;;;;;;;>  そんなふうに考えていた時期が
   ,;ぇハ、 、_,.ー-、_',.    ,f゙: Y;;f     俺にもありました
   ~''戈ヽ   `二´    r'´:::. `!


84 名前:デフォルトの名無しさん mailto:sage [2005/06/05(日) 13:00:41 ]
当時はその状態に憧れて、MinixだのMachTenだの試したもんだな。

85 名前:デフォルトの名無しさん mailto:sage [2005/06/06(月) 03:27:44 ]
soの作り方を解説してあるページ知りませんか?

86 名前:デフォルトの名無しさん mailto:sage [2005/06/06(月) 03:34:38 ]
soってなんだよ
super oppaiか?

87 名前:デフォルトの名無しさん mailto:sage [2005/06/06(月) 03:40:24 ]
じゃぁ a.out は?

88 名前:デフォルトの名無しさん mailto:sage [2005/06/06(月) 06:37:49 ]
$ touch a.out

89 名前:デフォルトの名無しさん mailto:sage [2005/06/06(月) 07:34:20 ]
ああ shared object か

90 名前:デフォルトの名無しさん mailto:sage [2005/06/06(月) 07:54:42 ]
マジボケかよ



91 名前:デフォルトの名無しさん mailto:sage [2005/06/06(月) 09:44:18 ]
super oppaiなら爆乳専門の風俗にあるよ

92 名前:デフォルトの名無しさん mailto:sage [2005/06/06(月) 09:53:47 ]
爆乳(゚听)イラネ
貧乳が(・∀・)イイ!!

93 名前:デフォルトの名無しさん mailto:sage [2005/06/06(月) 16:52:01 ]
>>92
呼んだ?w

処で質問。Solaris9のccって、C99? C89互換のオプションってあるんでしょうか。
#出先なので調べられないもんで。

94 名前:デフォルトの名無しさん [2005/06/06(月) 20:03:38 ]
>>88
噴いたw


95 名前:デフォルトの名無しさん mailto:sage [2005/06/06(月) 20:15:11 ]
>>93
c89 も c99 もコマンドとして提供されている

96 名前:デフォルトの名無しさん [2005/06/06(月) 20:23:52 ]
今のはc05

97 名前:デフォルトの名無しさん mailto:sage [2005/06/07(火) 13:52:46 ]
LinuxでWindowsのdllの様なことをやりたいのだけど、どうやってやればよいのでしょうか?

98 名前:デフォルトの名無しさん mailto:sage [2005/06/07(火) 14:01:24 ]
>>97
ふーん、so

99 名前:デフォルトの名無しさん [2005/06/07(火) 17:13:33 ]
#include <iostream>
using namespace std;
int main(){
cout << "Content-type: text/html\n\n" << endl;
cout << "test1" << endl;
char *s = (char *)malloc(atoi(getenv("CONTENT_LENGTH")));
cout << "test2" << endl;
free(s);
}
このプログラムをCONTENT_LENGTHが発生しない方法で起動するとtest1までしか出力されない。
という事は、freeが行われずにメモリリークが発生するのでしょうか?

100 名前:デフォルトの名無しさん mailto:sage [2005/06/07(火) 18:40:01 ]
OSが管理してくれます



101 名前:デフォルトの名無しさん mailto:sage [2005/06/07(火) 18:42:19 ]
atoi()の中でsegmentation faultして終了、じゃないのかね。


102 名前:デフォルトの名無しさん mailto:sage [2005/06/07(火) 19:23:32 ]
ちゃんとエラーチェックしろよ

103 名前:デフォルトの名無しさん mailto:sage [2005/06/08(水) 01:05:05 ]
freeでエラーが発生したかどうか知る方法がない罠
# 発生したことが分かったところでどうしようもない場合も多いが

104 名前:デフォルトの名無しさん mailto:sage [2005/06/08(水) 01:22:12 ]
CONTENT_LENGTHにすごい値が入っていたら
すごいことになりそうな悪寒。

105 名前:デフォルトの名無しさん mailto:sage [2005/06/08(水) 01:35:15 ]
.cgi 見つけたら Content-Length: 4294967295 でpostしまくるクローラでも作ったろか

106 名前:デフォルトの名無しさん mailto:sage [2005/06/08(水) 07:55:22 ]
端末(ターミナルウインドウ)の画面幅を取得する方法を教えてください


107 名前:デフォルトの名無しさん mailto:sage [2005/06/08(水) 08:21:59 ]
ioctl

108 名前:99 mailto:sage [2005/06/08(水) 14:06:19 ]
レスありがとうございました。

ちなみに、
>>99のプログラムは適当に書いただけで
実際に使うプログラムでは文字数超過判定をしています。

109 名前:デフォルトの名無しさん mailto:sage [2005/06/08(水) 15:40:14 ]
>>99
> cout << "Content-type: text/html\n\n" << endl;

UNIXでは、\r\n\r\n ですんで、よろしく。

110 名前:デフォルトの名無しさん mailto:sage [2005/06/08(水) 17:36:19 ]
>>109 逆。

ところで、MIMEヘッダーフィールドのセパレータは
CRLFとRFC2045で明確に定義されている。だから99のコードの最終目的
によってはOSに関係なくCRLFでなければならない。



111 名前:デフォルトの名無しさん mailto:sage [2005/06/08(水) 17:44:53 ]
( ゚Д゚) ・・・

112 名前:110 mailto:sage [2005/06/08(水) 17:46:57 ]
失礼。目的も何もこれ多分CGIだよね。なら、RFC2045じゃなくてRFC2068で
CRLFって決まってる。

ちなみにその後の出力でendlを使ってるけど、これはRFCでクライアントは
Content-type: textのメッセージボディの行末はCR/LF/CRLFのいずれでも
許容しなければならないって決まってるから、これはOK。

113 名前:110 mailto:sage [2005/06/08(水) 17:49:35 ]
すまん、寝ぼけてた。orz

114 名前:デフォルトの名無しさん mailto:sage [2005/06/08(水) 17:54:27 ]
( ゚Д゚) ・・・

115 名前:デフォルトの名無しさん mailto:sage [2005/06/08(水) 20:19:55 ]
わかってないなら、無理して言わなきゃいいのに...。

116 名前:デフォルトの名無しさん [2005/06/08(水) 21:59:31 ]
デバイスメモリをmmap()して
読み書きできるようにはなったのですが
領域をmemcpy()などに渡そうとするとSegmentation Faultになります。
どうすれば渡すことができるようになるでしょうか。
Linux kernel2.4です。

117 名前:デフォルトの名無しさん mailto:sage [2005/06/08(水) 22:21:06 ]
mmap関係ないとこのバグじゃないの?
読み手はエスパーじゃないんだから、問題のソースぐらい引用せよ

118 名前:デフォルトの名無しさん mailto:sage [2005/06/08(水) 22:36:20 ]
だれかエロゲーつくって下さい

119 名前:116 mailto:sage [2005/06/08(水) 22:36:32 ]
ふつうにできるはずということですか?。
ソースをかいつまんで書くと
src=mmap(NULL, 0x800000, PROT_READ|PROT_WRITE, MAP_PRIVATE, fd, 0);
//memcpy( src, dst, 0x800000 );//これは落ちる
cnt=0x800000;while(cnt--) *dst++=*src++;//これは通る
という感じなんです。問題の見誤りなのでしょうか。

120 名前:デフォルトの名無しさん mailto:sage [2005/06/08(水) 22:38:52 ]
memcpyのsrcとdstが逆に見えるが。



121 名前:デフォルトの名無しさん mailto:sage [2005/06/08(水) 22:40:24 ]
man memcpy

122 名前:116 mailto:sage [2005/06/08(水) 22:43:22 ]
ヽ(`Д´)ノ
すんません、いま書き間違えました。

123 名前:デフォルトの名無しさん mailto:sage [2005/06/08(水) 22:53:37 ]
確保したサイズまで一旦シークしなきゃいけないんじゃなかったっけ

124 名前:116 mailto:sage [2005/06/08(水) 23:54:31 ]
>>123
情報ありがとうございます。
すこしぐぐってみたところ、ファイルをmmap()するときに
マップしたサイズの実体を作るために必要みたいですね。
今回のとはもしかしたら関係ないかも。
でも試してみます。

125 名前:デフォルトの名無しさん mailto:sage [2005/06/09(木) 00:17:07 ]
>>124
デバイス相手ならシークしなくてもよかったと思うが、
本番前に/dev/memあたりで動作確認してみりゃいいんでは?


126 名前:116 mailto:sage [2005/06/09(木) 00:41:48 ]
>>125
情報ありがとうございます。
雰囲気的に問題が別のところにありそうで
いろいろやり足りてなかったと思いはじめました。
もう少しがんばってみます。

127 名前:デフォルトの名無しさん mailto:sage [2005/06/09(木) 01:16:09 ]
質問です
UNIXを使うとWindowsを使うのに比べてより良い
セックスライフが送れますか?

128 名前:デフォルトの名無しさん mailto:sage [2005/06/09(木) 01:18:59 ]
>>127
センスのカケラも無い人間だな

129 名前:デフォルトの名無しさん mailto:sage [2005/06/09(木) 01:21:05 ]
>>127
windowsを使う→winnyでウハウハ→おかずたくさん→
新鮮で気持ちいい→相方放置

unixを使う→winnyが動かない→おかずが足りない→
一人でできない→相方とハァハァ

答:送れる

130 名前:デフォルトの名無しさん mailto:sage [2005/06/09(木) 02:40:57 ]
>>129
センスのカケラも無い人間だな



131 名前:デフォルトの名無しさん mailto:sage [2005/06/09(木) 06:59:05 ]
デバイスを MAP_PRIVATE でマップするってのも変だぞ。
/dev/zero ならまあいいけど。

132 名前:デフォルトの名無しさん mailto:sage [2005/06/09(木) 13:35:27 ]
>>99
> cout << "Content-type: text/html\n\n" << endl;
> (略)
> cout << "test2" << endl;

cout << "Content-type: text/html\r\n\r\n";
(略)
cout << "test1\r\n" << flush;



133 名前:デフォルトの名無しさん [2005/06/15(水) 12:49:56 ]
Cで指定DIR配下のファイル名全てを列挙してTXTファイルに出力する
プログラムを作成したいのですが、処理の方法や関数等がわかりません
御教授いただければ助かります。よろしくお願いします。
ソラリスです。

134 名前:デフォルトの名無しさん mailto:sage [2005/06/15(水) 12:52:59 ]
opendir, readdir

135 名前:デフォルトの名無しさん mailto:sage [2005/06/15(水) 12:58:10 ]
closedir

136 名前:133 [2005/06/15(水) 13:07:12 ]
レスありがとうございます。参考で調べてみたのですが
直下だけは以下のコードで求められるようなのですが
次々にその配下のファイルを列挙する方法はどのうような仕組みにすれば
実現可能でしょうか?
#include <sys/types.h>
#include <dirent.h>
DIR *dp;
struct dirent *dir;
if ( (dp=opendir("/usr/bin")) == NULL ){

/* エラー */

}
/* カレントディレクトリのファイル一覧を表示 */
while ((dir = readdir(dp)) != NULL ){

printf("%s\n",dir->d_name);

}

137 名前:デフォルトの名無しさん mailto:sage [2005/06/15(水) 13:19:20 ]
readdir で得られたものがディレクトリならその下も同様に...

138 名前:デフォルトの名無しさん mailto:sage [2005/06/15(水) 13:19:38 ]
>>136
system("find DIR > TXT");
どうしても自前でreaddir()するなら、自分でディレクトリを展開しないといけない。

139 名前:133 [2005/06/15(水) 14:04:49 ]
>>137 >>138
ありがとうございます。やはり展開と再帰処理的な機能を
自前でつくる必要があるということですね。


140 名前:デフォルトの名無しさん mailto:sage [2005/06/15(水) 14:10:46 ]
だから折角人が自前で作らない方法を提示しているのに……



141 名前:133 [2005/06/15(水) 14:14:51 ]
>>140
すみません。system("find DIR > TXT"); だと自前しなくて
組めるという事でしたか。今必死にぐぐっているのですが
どのように使うのかわかりません。
お願いします。


142 名前:デフォルトの名無しさん mailto:sage [2005/06/15(水) 14:17:44 ]
>>141
やってみたら?
DIRとTXTを適当に書き換えて。

143 名前:デフォルトの名無しさん mailto:sage [2005/06/15(水) 14:18:01 ]
system() という関数のマニュアルページを嫁よ。

144 名前:デフォルトの名無しさん mailto:sage [2005/06/15(水) 14:20:58 ]
ていうか、
(勉強のために)プログラムを書くのが目的ならいいけど、

>指定DIR配下のファイル名全てを列挙してTXTファイルに出力する

が目的だったら、いちいちプログラム書くのはアフォだよ。

145 名前:133 [2005/06/15(水) 14:35:13 ]
>>142
了解しました。一度ためしてみます。
ちなみに
cc test.c の命令でコンパイル実行してるのですがデバッグモードのような追跡は
どのようにすれば良いですか?教えてもらってばかりですみません。
お願いします。

>>143
再度検索します。ありがとうございます。

>>144
勉強でつくってみています。只の列挙であればLSコマンドの
ほうが便利ですよね。


146 名前:133 [2005/06/15(水) 14:37:37 ]
systemは理解しました。コマンドを実行するわけですね。


147 名前:デフォルトの名無しさん mailto:sage [2005/06/15(水) 14:43:42 ]
>>145
gdb

148 名前:デフォルトの名無しさん mailto:sage [2005/06/15(水) 14:46:01 ]
デバッグは -g つけてコンパイル&リンクして、
ソラリスだと dbx かなんか使うんでないかな。

149 名前:133 [2005/06/15(水) 14:47:19 ]
>>147
gdb test.c という解釈ですね?

150 名前:デフォルトの名無しさん mailto:sage [2005/06/15(水) 14:47:35 ]
>>136
ftw(3), nftw(3)



151 名前:デフォルトの名無しさん mailto:sage [2005/06/15(水) 14:49:02 ]
>>149
みんながこんだけキーワード出してんだから、マニュアルとか嫁よ。

152 名前:デフォルトの名無しさん mailto:sage [2005/06/15(水) 14:51:15 ]
>>133
会社の部下だったら首にしてるよ

153 名前:133 [2005/06/15(水) 14:57:46 ]
>>150
このような関数もあるのですね。勉強になります。
ありがとうございました。

>>151 親身な御指導ありがとうございます。

>>152 未成年なのでまだ働けませんが、社会にでて
へまをしないように頑張りたいと思います。
御指導ありがとうございます。


154 名前:デフォルトの名無しさん [2005/06/15(水) 15:02:15 ]
>>153
おまえみたいなクソじゃだめだろうよ

155 名前:デフォルトの名無しさん mailto:sage [2005/06/15(水) 15:04:10 ]
未成年って働けないのか?

156 名前:デフォルトの名無しさん [2005/06/15(水) 15:08:46 ]
俺は5歳んときから Unix プログラミングやってたけどな

157 名前:133 [2005/06/15(水) 16:11:41 ]
ftwを使って自前作成をしてみようと思います。
サンプルを見つけたのですが英語ばかりで皆目がつきません
int ret;
ret = ftw(strPath,ftwFunc,Depth,flg);
とこのような呼出し例を見つけたのですが、大体1つめのパラメタは検討がつくのですが
他がさぱり解りません。
ftwFuncにDIRかどうかの結果が返るという事ですよね。おそらく。

当方でうまくデバッグできないのでやっつけ本番になってしまい怖い感じです。
引き続きご協力いただければサイワイです。お願いします。


158 名前:デフォルトの名無しさん mailto:sage [2005/06/15(水) 16:15:31 ]
狂気の法案を拉致問題の安部晋三先生と阻止しよう!!【■■2ちゃんねるが消滅します】

とんでもない言論弾圧法案=「人権擁護法」が国会に提出されようとしています!!!
この法案の真の狙いは、
@社会的には、2ちゃん/ブログをはじめとしたネット世界の一般人の小うるさい言論の圧殺であり、
A政治的には、拉致問題強硬派&在日参政権反対の自民右派の消滅です。
民族(朝鮮・中国・韓国)/ 同和 /信条(宗教・層化・赤化)他に関する一切の差別的発言を禁じるという狂気の法律です。

この法律の前例の無い恐ろしい特徴は、特定人に関する言動は当然、不特定多数の集団に関する一般的発言
(朝鮮人は〜〜と書くこと)までも圧殺しようとする点にあります。
◆違反者には、無令状捜索・差押、出頭要求、矯正教育が待っており、それを拒否すると、
さらに罰金30万&氏名・住所などの全国晒し上げを食らう(61条)という仰天内容です。

一刻も早く、防戦する安部先生達に、日本国民の怒涛の援護射撃をお願い致します!!!
※※以下5つともアドレス中に★をはさんであります、★を消去の上、どうか必ずご覧下さい!!※※ 
zinkenvip.fc2web.co★m/
blog.livedoor.jp/no_gest★apo/
blog.livedoor.jp/monste★r_00/
↑↑【凶悪法案の問題点&背景の全て】
www.kantei.go.jp/jp/forms/goik★en.html
↑↑【首相官邸ご意見フォーム】イメージと違って、ここは非常に効果ありです!
全部読んでくれます、投稿テーマで返事が変わります!
meyasu.jimin.or.jp/cgi-bin/jimin/mey★asu-entry.cgi
↑↑【自民党目安箱】事態は急を告げています。文章は簡単でいいので、国民の「人権擁護法」への反対意思を、
とにかく 1 秒 も 早 く 党本部に伝えて下さい!
■□■人権擁護法ストップin日比谷公会堂 6/19(日)12:30〜16:00超大物国会議員登場・皆さん大挙してご参加を■□■

159 名前:デフォルトの名無しさん [2005/06/15(水) 16:16:19 ]
>>157
馬鹿かおまえは

なんでも手とり足とりやってやんなきゃわからんのか
「初心者だから」を免罪符にすることは許されん

金はらってアビバにでも行きな

160 名前:ttp://www.linux.or.jp/JM/html/LDP_man-pages/man3/ftw.3.html mailto:sage [2005/06/15(水) 16:24:13 ]
>>157
何度も言うけど、マニュアルを嫁よ。
そんで、ここで出てきたキーワードをつかってググりまくれ。
今の世の中、大半のことは半日ググりまくればそれなりにわかる。
英語が苦手ならオンラインの辞書やら翻訳サイトやらも利用できる。



161 名前:133 [2005/06/15(水) 16:29:52 ]
手厳しいお言葉ありがとうございました。了解です。

162 名前:デフォルトの名無しさん mailto:sage [2005/06/15(水) 16:31:08 ]
>>133タンの人気に嫉妬(´・ω・`)

163 名前:デフォルトの名無しさん mailto:sage [2005/06/15(水) 16:31:54 ]
これがゆとり教育の弊害か

164 名前:デフォルトの名無しさん mailto:sage [2005/06/15(水) 18:30:27 ]
APUE 2nd 買ったって声を聞かないのは何故(なにゆえ)?

165 名前:デフォルトの名無しさん mailto:sage [2005/06/15(水) 22:52:20 ]
Solarisあるんだから、日本語のマニュアルもあるでしょ?
# 面倒だからdocs.sun.comは探さないけど。

↓Linuxの
www.linux.or.jp/JM/html/LDP_man-pages/man3/nftw.3.html

166 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 00:09:52 ]
最近は小学校からC言語勉強してるんか?すげえね

167 名前:デフォルトの名無しさん [2005/06/16(木) 11:47:52 ]
>>164
まだ届いてないんじゃない?

168 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 12:56:24 ]
まだ発売されていないんじゃ…。
ttp://www.awprofessional.com/title/0201433079
Available: Jun 17, 2005ってなっている。

ついでに21st Century Compilersも調べたらいつのまにか2007年になっているし…。
2003年くらいのはずだったのに。

169 名前:133 [2005/06/16(木) 13:11:36 ]
>>165
ありがとうございます。参考にしてなんとかイメージ的に
コード作ってみたのですが、貼りますので指摘いただいても良いですか?
まだコンパイル通していません

170 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 13:17:10 ]
>>169
それはひょっとしてジョークで言ってるのか?



171 名前:133 [2005/06/16(木) 13:20:22 ]
いいえジョークではありません。自分なりの限界の理解(解釈)
で挑戦してみた次第です。貼ってみても良いですか?


172 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 13:22:29 ]
???

173 名前:133 [2005/06/16(木) 13:24:04 ]
僕の糞コードにご指摘をください。といっておりますのですが。。。
だめでしょうか?駄目であれば諦めます。

174 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 13:33:40 ]
>>173
糞なら貼るな。それなりにできたと思うのならアップローダを使え。

175 名前:133 [2005/06/16(木) 13:39:21 ]
ここに貼っては駄目でしょうか?アップローダー使った事がないのです。

176 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 13:42:52 ]
>>175
ダメ。絶対。

177 名前:133 [2005/06/16(木) 13:44:54 ]
大量なコードではなくおおよそ30ステップくらいですが
だめでしょうか?

178 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 13:46:52 ]
ダメ男が都合のいい女にしつこくしている構図だな

179 名前:デフォルトの名無しさん [2005/06/16(木) 13:56:15 ]
また馬鹿がひつこいな

180 名前:133 [2005/06/16(木) 14:26:16 ]
貼るなといわれたのであれば諦めます。すみません



181 名前:デフォルトの名無しさん [2005/06/16(木) 15:07:37 ]
>>180
せめてコンパイルくらい通してくれ

182 名前:デフォルトの名無しさん [2005/06/16(木) 15:08:49 ]
ソースうpまだ〜 (・∀・ )っ/凵 ⌒☆チンチン

183 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 15:14:03 ]
>>176 覚醒剤撲滅キャンペーン?
>>178 「先っちょだけでいいからさぁ」ってやつ?
>>181 同意

184 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 15:17:12 ]
>177 133  2005/06/16(木) 13:44:54
>180 133  2005/06/16(木) 14:26:16
この間にアップローダの使い方くらいいくらでも調べられそうな気がするが。

185 名前:133 [2005/06/16(木) 15:18:47 ]
コンパイルは通りました。いかがでしょうか?嘘ではありません

186 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 15:22:10 ]
自治厨うざい、>>133は気にせずソース貼れ

187 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 15:24:40 ]
つーか、他人のいうこと聞かないんだったら最初から貼ればいいのにね。

188 名前:デフォルトの名無しさん [2005/06/16(木) 15:27:17 ]
>>185
馬鹿かおまえは
もう自分で解決できるだろ
うせろよ

189 名前:133 [2005/06/16(木) 15:28:01 ]
優しいお言葉ありがとうございます。それでは貼らせていただきます。
お願いします。見た感じ一覧が取得できそうだったのですが、サブフォルダ配下
のファイル列挙が行われていなさそうなのです。
2レスにわけます。


#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <stdlib.h>
#include <ftw.h>
#include <time.h>
#include <dirent.h>
int fn (const char *, const struct stat *, int);
void main (int argc, char *argv[] ){
if (ftw (argv[1], fn, 10) != 0)
perror ("ftw"); exit (2);
exit (0);
}

190 名前:133 [2005/06/16(木) 15:29:10 ]
int fn (const char *name, const struct stat *statptr, int flag){
int i;
char *basename;
DIR *dp;/*DIRの定義*/
struct dirent *dir;/*DIRの構造体*/
struct stat buf;/*ファイル情報の構造体*/
int result;/*処理の結果戻り値*/
if (flag == FTW_D){/*ディレクトリの場合は配下の情報取得を行う*/
if ( (dp=opendir(name)) == NULL ) /*DIRを開く*/
perror( "指定されたディレクトリが存在しません。" );
while ((dir = readdir(dp)) != NULL ){/* カレントディレクトリのファイル一覧を取得 */
result = stat(dir->d_name, &buf );
if( result != 0 )/* ファイル状態情報が取得できたかのチェック */
perror( "ファイルの情報の取得に失敗しました。" );
else{
printf( "file : %s\n", dir->d_name );
printf( "size : %ld\n", buf.st_size );
printf( "Date : %s", ctime( &buf.st_mtime ) );
}
}
return 0;
}
return 0;
}

つっこみどころ満載だと予見しておりますが、必死に頑張りましたので
御教授お願いいたします。



191 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 15:31:47 ]
俺は新手のパフォーマンスだと思う(w

192 名前:デフォルトの名無しさん [2005/06/16(木) 15:32:06 ]
>>189
馬鹿かおまえは
アビバに行けよ

193 名前:デフォルトの名無しさん [2005/06/16(木) 15:35:45 ]
>>191
つーか新手の荒らしだろ
イヤガラセ

194 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 15:40:52 ]
>void main
ここまで読んでやめた

195 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 15:41:41 ]
>>192
いや、アビバに行くとか以前に日本語の勉強が必要だろ。

196 名前:133 [2005/06/16(木) 15:52:31 ]
>>194
すみません。通常intですね。理解しています。
あと不要な変数が残っていました。すみません


197 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 15:56:37 ]
>>196
他人の意見は聞かない、ftw()のマニュアルページを読んでその程度しか理解できてない、
そんな調子ならいっそ人間止めたほうがいいよ。

198 名前:133 [2005/06/16(木) 15:58:20 ]
>>197
厳しい御指導ありがとうございます。

199 名前:デフォルトの名無しさん [2005/06/16(木) 16:01:54 ]
>>198
気色わるい謙虚さだな
ほめ殺しの類似のイヤガラセか?
慇懃不礼みたいな

200 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 16:39:32 ]
スルーした方がいいって。



201 名前:デフォルトの名無しさん [2005/06/16(木) 16:57:52 ]
アビバに行ってもプログラミングは教えてくれないと思う。
とマジレス

202 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 17:00:11 ]
さっそく [アビバ プログラミング] でググってみますた。

203 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 17:31:04 ]
アミバ最強

204 名前:133 [2005/06/16(木) 17:35:07 ]
私の理解力では上記のコーディングしかイメージが浮かばなかったので
おそらく間違いとして認識している具体的なコードの指摘を受けれれば
ftwの使い方も理解できるようになれるかと思っております。
教えていただいたページや、その他も参照してみましたが
この関数について、実際の使用例があまりにも少なく、皆様のスキルを
お借りし、理解を深めようとおもいました。迷惑だったなら申し訳ありません。

205 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 17:35:39 ]
一行に数字が書いてあるファイルが或とします
1
2
3
等、それは複数あります

これを、hoge[]に変数1つにつき一行の値を入れて行きたいのですが
このコードをかいていただけないでしょうか?

206 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 17:41:56 ]
いただけません。

207 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 17:42:40 ]
@hoge = <>;

208 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 18:02:00 ]
>>207
そっか、言語指定無かったもんな

209 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 18:02:29 ]
hoge[]
と書いてあるわけだが

210 名前:205 mailto:sage [2005/06/16(木) 18:03:28 ]
すいません
C言語です



211 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 18:06:10 ]
#include <stdlib.h>

int main(void)
{
  system("perl -e '@hoge = <>;'");
  return 0;
}

212 名前:205 mailto:sage [2005/06/16(木) 18:08:21 ]
perlは入っていません

また、systemとかは使わずに
C言語しか、使わずにそのひとつのファイルで完結するように
システムコール以外の呼出はしないようにお願いします

213 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 18:08:50 ]
断る。

214 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 18:08:52 ]
unixらしい宿題ですね

215 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 18:10:22 ]
hoge[NR] = $1;
って書きにきたら時既に遅しw


216 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 18:11:42 ]
>>212
>C言語しか、使わずにそのひとつのファイルで完結するように
>システムコール以外の呼出はしないようにお願いします
ストリーム系ライブラリは使っちゃいけないの?

217 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 18:11:48 ]
答えない奴は2chをみないで下さい

218 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 18:13:05 ]
スレ違いだから宿題スレに行けよ

219 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 18:13:17 ]
標準ライブラリの読み込みは可能です

220 名前:デフォルトの名無しさん [2005/06/16(木) 18:18:45 ]
>>219
またおまえか
アビバに行けっつのがわからんのか



221 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 18:21:30 ]
>>218, >>220
>>217

222 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 18:43:25 ]
void hage(int hoge[], char const *fn){
int fd = open(fn, O_RDONLY); struct stat s; fstat(fd, &s);
{const char *fbuf = mmap(0,s->st_size, PROT_READ,MAP_PRIVATE,fd,0);const char *p;
int i=0; hoge[i]=0; for(p=fbuf; p!=&fbuf[s->st_size]; p++)
{ if( '0'<=*p&&*p<='9' ){hoge[i]=hoge[i]*10+*p-'0'; } else if( hoge[i] ){ i++; hoge[i]=0;}}
munmap(fbuf,s->st_size);close(fd);}}

エラーチェックは省略。コンパイルは掛けてない。システムコールのみ使用。数字はASCIIに従うこと。

223 名前:205 mailto:sage [2005/06/16(木) 18:43:39 ]
誰かお願いします

224 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 18:44:54 ]
あ、sはポインタや無かった。脳内コンパイルはあかんなぁ。やっぱし。

225 名前:205 mailto:sage [2005/06/16(木) 18:48:41 ]
fopenを使ってお願いします

226 名前:デフォルトの名無しさん [2005/06/16(木) 18:52:47 ]
まじめに答えてるやつは
宿題やらされてるのがわからんのか

227 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 18:57:21 ]
>>226
誰ひとり真面目に答えてないのがわからんのか?(w

228 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 18:58:27 ]
void hage(int hoge[], const char *fn){
FILE* fp = fopen(fn, "r"); struct stat s; fstat(fileno(fp), &s);
{const char *fbuf = mmap(0,s.st_size, PROT_READ,MAP_PRIVATE,fileno(fp),0);
const char *p;int i=0; hoge[i]=0; for(p=fbuf; p!=&fbuf[s.st_size]; p++)
{ if( '0'<=*p&&*p<='9' ){hoge[i]=hoge[i]*10+*p-'0'; } else if( hoge[i] ){ i++; hoge[i]=0;}}
munmap(fbuf,s.st_size);fclose(fp);}}

ほい。fopen版。これ以上条件を小出しにするようなら、おいらは対応しないから。

229 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 19:00:13 ]
うっせぇーばーか

230 名前:デフォルトの名無しさん [2005/06/16(木) 20:12:14 ]
>>205
スレ違い
pc8.2ch.net/test/read.cgi/unix/1062659209/l50



231 名前:133 [2005/06/16(木) 23:56:29 ]
私のところも何とかお願いできませんか?

232 名前:デフォルトの名無しさん mailto:sage [2005/06/17(金) 00:05:53 ]
>>138 の文字列部分のコマンド入力で済むことを、わざわざCで書かなければいけないってのが、
「ちょっと見てやろうか」という気持ちを全く起こさせない原因なのだよ

233 名前:デフォルトの名無しさん mailto:sage [2005/06/17(金) 00:31:41 ]
/* それでもCでやる馬鹿 */
#define CMD_STR "find %s>%s"
void func(const char * targetDir, const char * outputFile)
{
if (targetDir == NULL || outputFile == NULL) {
return;
}
char * buf = malloc(strlen(targetDir) + strlen(outputFile) + sizeof(CMD_STR));
if (buf == NULL) {
return;
}
sprintf(buf, CMD_STR, targetDir, outputFile);
system(buf);
free(buf);
}

234 名前:デフォルトの名無しさん mailto:sage [2005/06/17(金) 00:48:08 ]
system()で呼び出すだけでは、それこそまったく意味が無いな。
より実用的でありがちなのはpopen()を使う例だろう。

235 名前:133 [2005/06/17(金) 00:55:03 ]
すみません。すべてネタをばらします。実はですね
VBで作った画面があるんですが、機能詳細はWindows端末から
ボタンを押してあるリモート側DIRの下にあるファイル一覧を取得して
リダイレクトした結果をダウンロードする仕組みがあるのです
要はLIB管ツールのプログラム納品資材確認機能だったのですが、以前
私が担当していた環境はVMSマシンでした。ところが今年から
UNIX管理資材とかLINUX管理資材とかが出現してきて以前のVMSの
総合的な動作を丸々流用して使いまわししないといけなくなったのです
VB画面のボタンからUNIXへリモート処理する仕組みは丸々流用できるので
そこで明示的にコールしているVMS上においているDIR情報取得ツールを
UNIXとかLINUXで同じように動くように作成したいのです。可能でしょうか?



236 名前:デフォルトの名無しさん mailto:sage [2005/06/17(金) 00:57:40 ]
find

237 名前:133 [2005/06/17(金) 00:59:16 ]
findでは半年前のファイルに対しての情報で時刻部が欠落してしまうのです
もちろんソラリス10だとLSの--full-timeで問題なく落とせるわけですが

238 名前:デフォルトの名無しさん mailto:sage [2005/06/17(金) 01:02:08 ]
>>235
そんならpopen(3)でfind(1)を呼ぶのが一番ラクだな

FILE *fp;
char buff[8192];

snprintf(buff, "find ......);
FILE *fp = popen(buff, "r");
while (fgets(buff, sizeof buff, fp)) { ..... }
pclose(fp);

こんな感じだ

239 名前:デフォルトの名無しさん mailto:sage [2005/06/17(金) 01:03:32 ]
>>237
なら取得できたファイル名に対してstat()すればよかろ

240 名前:133 [2005/06/17(金) 01:08:47 ]
>>238
その手法は一度調べてみます。ありがとうございます。

>>237
上部の私が貼ったソースで既にstatが見受けられると思いますが
statのメイン部分では問題なくfullTimeを取得できる結果を得ていますので
その個別にstatを行うための拠点DIRにおいてそれぞれ処理する方法を
お伺いしている次第なのです。
指定したDIR配下の詳細データを列挙したくおもいます



241 名前:デフォルトの名無しさん [2005/06/17(金) 01:17:22 ]
自分で出来ないなら仕事辞めれ
他のまともな人に雇用を譲れ

242 名前:133 [2005/06/17(金) 01:24:23 ]
それはごもっともかもしれません
自分で解決して生きていかねばならない世の中ですから
いつまでも他人に甘えて生きていけるわけではありません
重々承知です。

243 名前:デフォルトの名無しさん mailto:sage [2005/06/17(金) 01:36:28 ]
つか今の時代ネットが随分便利になってるし
キーワードもらえればそれで十分でしょ?
宿題○投げ学生サンじゃないんだしさ、給料貰ってんでしょ、それで?

といいつつ。

>>240
stat()の引数に指定するパス名はフルパスか、カレントディレクトリからの
相対パスでなければならない。
popen()でfind(1)を実行する場合に、カレント以外のディレクトリを
指定したんなら、そのディレクトリのフルパスにfind(1)から出力
されたパスを足せばいいでしょ。
そんぐらいは、できるよね?


244 名前:デフォルトの名無しさん mailto:sage [2005/06/17(金) 06:54:17 ]
ダメ男にあれこれやってやると、ますますダメな奴を作る事になるぞ
ああ、それが狙いか?

245 名前:デフォルトの名無しさん mailto:sage [2005/06/17(金) 07:37:54 ]
なんかSolarisでfulltimeで取得できる云々をみて思い出したが、>>133は前スレの>>970か同じ職場のやつかな。
>>980のソースを弄るだけでいいと思うが。

246 名前:デフォルトの名無しさん mailto:sage [2005/06/17(金) 07:58:21 ]
>>153

247 名前:デフォルトの名無しさん mailto:sage [2005/06/17(金) 08:01:21 ]
235と153が激しく矛盾している点について。

248 名前:デフォルトの名無しさん mailto:sage [2005/06/17(金) 08:04:00 ]
>>245
漏れもそれを思い出していますた。

249 名前:デフォルトの名無しさん mailto:sage [2005/06/17(金) 08:56:39 ]
狼少年あらわる

250 名前:デフォルトの名無しさん [2005/06/17(金) 10:23:16 ]
みんな気をつけろ!
コイツはとんだクワセ者だぞ!



251 名前:デフォルトの名無しさん mailto:sage [2005/06/17(金) 10:35:13 ]
だからスルーしとけと言ったのに。

252 名前:デフォルトの名無しさん mailto:sage [2005/06/17(金) 12:36:36 ]
もう来ないだろ。俺は面白かったから文句無い

253 名前:デフォルトの名無しさん mailto:sage [2005/06/17(金) 13:02:08 ]
>>244
イイんじゃね?
仕事ができないクズは、一度どうしようもないくらい追い込まれないと治らないから(笑)。

254 名前:デフォルトの名無しさん mailto:sage [2005/06/19(日) 10:15:48 ]
ftw(3)なんて関数あるんだ、知らなかった。
ほんのちょっと楽が出来るという微妙な関数だな、これ

#include <stdio.h>
#include <ftw.h>

int func(const char *path, const struct stat *st, int type)
{
  printf("%s is ", path);
  switch(type){
  case FTW_F:  printf("File\n"); break;
  case FTW_D:   printf("Directory\n"); break;
  }
  return 0;
}

int main(int ac, char **av)
{
  ftw(av[1], func, 10);
}


255 名前:デフォルトの名無しさん mailto:sage [2005/06/19(日) 15:32:49 ]
微妙というか発想はLisperっぽいね。

256 名前:133 [2005/06/20(月) 00:42:41 ]
ありがとうごさいました。うまく動きそうです。
感謝します。皆さまの数々の親身な対応に頭があがりません。ありがとうございました。

257 名前:デフォルトの名無しさん mailto:sage [2005/06/20(月) 01:38:27 ]
オオカミがきたぞ

258 名前:デフォルトの名無しさん mailto:sage [2005/06/20(月) 17:58:25 ]
良く分かってないので変な質問かもしれませんが…

mkdir -p /xxx/xxxx 2> /dev/null

この 2> ってどういう意味なのでしょう?

259 名前:デフォルトの名無しさん mailto:sage [2005/06/20(月) 18:05:41 ]
man pipe

260 名前:デフォルトの名無しさん mailto:sage [2005/06/20(月) 18:10:26 ]
www.google.co.jp/search?hl=ja&lr=lang_ja&q=2



261 名前:デフォルトの名無しさん mailto:sage [2005/06/20(月) 18:11:04 ]
>>258
ファイル記述子の2番への出力をりだいれくと。

262 名前:デフォルトの名無しさん mailto:sage [2005/06/20(月) 18:11:50 ]
>>258

n> file
は、ファイルディスクリプタ n を file にリダイレクトする。
ファイルディスクリプタ 2 は標準エラーに割り当てられているから、
その例では、mkdir の標準エラーへの出力を /dev/null にリダイレクトして
捨てている。

263 名前:デフォルトの名無しさん mailto:sage [2005/06/20(月) 18:14:46 ]
>>261-262
ありがとうございます

264 名前:デフォルトの名無しさん mailto:sage [2005/06/20(月) 18:21:14 ]
>>258
>>259が1番正確な答えをいってるのになぜ感謝をせん

>>261->>262
お前等も甘やかすな
スレ違い以上に板違いだろが
痔になって死ね

265 名前:デフォルトの名無しさん mailto:sage [2005/06/20(月) 18:24:28 ]
黙れホモ野郎

266 名前:デフォルトの名無しさん mailto:sage [2005/06/20(月) 18:26:50 ]
> >>259が1番正確な答えをいってるのになぜ感謝をせん

それを言うなら man sh あたりだろwwww


267 名前:デフォルトの名無しさん mailto:sage [2005/06/20(月) 18:34:57 ]
うは
ほんとに
man pipeに載ってるね

268 名前:デフォルトの名無しさん [2005/06/20(月) 19:05:43 ]
APUE 読めってことだね

269 名前:デフォルトの名無しさん mailto:sage [2005/06/20(月) 22:19:49 ]
>>268
高い。厚い。
あの手の本は電車の中で読めるように5冊ぐらいに分けて欲しいよ。

270 名前:デフォルトの名無しさん [2005/06/20(月) 22:38:25 ]
www.amazon.co.jp/exec/obidos/ASIN/4894712059/
非常にハイレベルです, 2003/06/01
レビュアー: 本音のレビューアー (プロフィールを見る)   東京都 Japan
中途半端なレベルのエンジニアが買うと痛い目を見ます。

プログラミングのセンスがあり、ネットワーキングについてもそれ相応の知識と経験がある方が読むと、骨の隋まできっちりと把握できるでしょう。

非常に高価な本なので、一度本屋で目を通してから買うことをお勧めします。




271 名前:デフォルトの名無しさん mailto:sage [2005/06/20(月) 22:47:41 ]
AdvancedWindowsの方がためになるし、高い。

272 名前:質問です [2005/06/20(月) 23:54:26 ]
質問です、
共有ライブラリの検索パスが通っているディレクトリを調べるには
どうすればよいのでしょうか?

273 名前:デフォルトの名無しさん mailto:sage [2005/06/20(月) 23:57:49 ]
ld.so.conf

274 名前:デフォルトの名無しさん mailto:sage [2005/06/21(火) 00:10:40 ]
$ echo $LD_LIBRARY_PATH | awk -F: '{ for (i = 1; i <= NF; i++) { print $i } }'; ldconfig -p | tail +2 | awk '{ print $NF }' | xargs -n 1 dirname | sort | uniq

こんなかんじ?

275 名前:デフォルトの名無しさん mailto:sage [2005/06/21(火) 00:26:42 ]
まー、OSによって違うしね

276 名前:質問です [2005/06/21(火) 00:30:22 ]
>>273
ありがとうございます。/etc/ld.so.confにそれらしきリストが見つかりました。
ただそれにパスを加えて再起動しても、コンパイル時パスが通ってないようで苦戦しております

277 名前:質問です [2005/06/21(火) 00:37:02 ]
共有ライブラリを作りたいのですが、うまくいきません、問題点がわかりましたら教えて下さい。

・共有ファイル側makefile(ソースファイル2つあります):
tws.so:tws_envvalue.o tws_time.o
g++ -shared tws_envvalue.o tws_time.o -o tws.so
tws_envvalue.o:tws_envvalue.cpp
g++ -fPIC -c tws_envvalue.cpp -o tws_envvalue.o
tws_time.o:tws_time.cpp
g++ -fPIC -c tws_time.cpp -o tws_time.o
install:
cp -f *.h /usr/include/tws/
cp -f tws.so /usr/lib/
(makeでコンパイルした後make install でsoファイルを移動しています。)

・利用ファイル側
cgi_env.cgi:cgi_env.o
g++ -l /usr/lib/tws.so cgi_env.o -O3 -o cgi_env.cgi
cgi_env.o:cgi_env.cpp
g++ -c cgi_env.cpp -D LINUX -o cgi_env.o
install:
cp cgi_env.cgi ../../public_html/

このようにすると。利用ファイル側コンパイル中
g++ -l /usr/lib/tws.so cgi_env.o -O3 -o cgi_env.cgi
/usr/bin/ld: cannot find -l/usr/lib/tws.so
と出力され、あるはずのtws.soが認識されません。一体何が悪いのでしょうか。
gcc バージョンは 3.2.2 20030222 (Red Hat Linux 3.2.2-5)と出ました。

278 名前:デフォルトの名無しさん mailto:sage [2005/06/21(火) 00:48:15 ]
gcc -Lディレクトリ名 -o a.out foo.o bar.o -lライブラリ名

279 名前:デフォルトの名無しさん mailto:sage [2005/06/21(火) 00:49:12 ]
>>277
-ltwsなんじゃないの?

280 名前:デフォルトの名無しさん mailto:sage [2005/06/21(火) 01:00:47 ]
-L/usr/lib -ltwsだと
/usr/lib/libtws.(so|a) をさがすのでは

-Lも-lもつけないで
g++ foo.o bar.o /usr/lib/tws.so -o unko
とか?



281 名前:質問です [2005/06/21(火) 01:14:46 ]
>>280さんのご指摘がビンゴでした、そのまんまの記述で無事コンパイル&使用が出来ました。
>>278 >>279さんも合わせてお礼申し上げます、助かりました。

282 名前:デフォルトの名無しさん mailto:sage [2005/06/21(火) 08:55:54 ]
ウンコー

283 名前:デフォルトの名無しさん mailto:sage [2005/06/24(金) 17:27:56 ]
教えてください。Cソースコードでテキストファイルに結果を書込みしたいのですが
どうすれば良いでしょう??

284 名前:デフォルトの名無しさん mailto:sage [2005/06/24(金) 17:39:22 ]
system("echo hoge > hoge.txt");


285 名前:デフォルトの名無しさん mailto:sage [2005/06/24(金) 17:39:52 ]
ソースコードでは相当に難しい

286 名前:デフォルトの名無しさん mailto:sage [2005/06/24(金) 17:49:09 ]
cintで実行したら、ソースコードで書き込んだと言うことにならないか?
というかスレ違いです、>>283さんよ。
UNIX独自じゃないしね。(binaryならあれだけども)

287 名前:デフォルトの名無しさん mailto:sage [2005/06/24(金) 22:45:48 ]
ソースコードでファイルに書くのは無理でした。

プログラムの実行結果の値をプログラム中から指定したファイルに
書き込みたいです。
exit(1); とか main の中の return -1; とかの 1や -1のことです。

どのような方法が可能でしょうか?

288 名前:デフォルトの名無しさん mailto:sage [2005/06/24(金) 22:55:46 ]
return の意味わかってるか?

289 名前:デフォルトの名無しさん mailto:sage [2005/06/24(金) 22:56:42 ]
int main () {
pid_t pid;
int st;
switch((pid = fork())) {
case -1: abort();
case 0: break;
default: waitpid(pid, &st, 0);
WriteToFile(WEXITSTATUS(st));
_exit(0);
}
... /* 実際の処理 */
}

290 名前:デフォルトの名無しさん mailto:sage [2005/06/24(金) 22:58:25 ]
>>288の答えの方が的確だな



291 名前:デフォルトの名無しさん mailto:sage [2005/06/24(金) 23:41:31 ]
基本的にPerlしか判らないんですが、ネットワークの負荷試験&自分の為に
CでSocketプログラムを作りたいと思いました。

簡単なTCPで通信をするプログラムは出来たのですが
負荷試験目的でパケットサイズを小さいのから大きいのを指定して
遅れる様にしたいと思います。

この場合は送る文字で制限するのが効率が良いのでしょうか?
また、1500バイト以上の文字列をランダムなバイト数で送る為には
やはり送る時のバッファサイズ(?)で何とかするのがスマートなんでしょうか?

なんか書いていて他にどうするんだって気になって来ましたが
普通のFTPとかはどういう単位でパケットサイズを決めているのでしょうか?

環境 : linux,solaris,FreeBSD,HP-UX for GCC

292 名前:デフォルトの名無しさん mailto:sage [2005/06/24(金) 23:45:50 ]
ソース嫁

293 名前:デフォルトの名無しさん mailto:sage [2005/06/24(金) 23:50:42 ]
>>291
小っさいデータで送ろうとしても、一つのパケットにまとめられちゃう事が
あるから注意。

294 名前:デフォルトの名無しさん mailto:sage [2005/06/25(土) 00:06:09 ]
>>291
TCP/IPの上に乗っかっているアプリケーションプログラマは、
「パケットサイズ」のことなんか考えちゃいかん
TCP/IPはあくまでバイトストリームのプロトコルだ。

なお>>293の言ってることについては「Nagleアルゴリズム」ででもぐぐれ。

295 名前:291 mailto:sage [2005/06/25(土) 00:25:57 ]
いや、ソースを読めりゃ問題無いんですが・・・。
まぁ勉強しろってのも全くではありますが。

某糞ネットワーク機器のバフォーマンスを計る為に自分で作りたかっただけで
自分がやりたい事をやってくれるソフトは、既にあったりはするんです。

Nagleアルゴリズムってのをぐぐってみました。
どういう物かはなんとなく判りましたがコレってWindowsだけって
認識でいいんですか?

> TCP/IPはあくまでバイトストリームのプロトコルだ。

発送を変えて「どんなサイズのパケットが来たか」でやってみる事にします。
いや、やり方はしらんけど。


296 名前:デフォルトの名無しさん mailto:sage [2005/06/25(土) 00:29:35 ]
>>295
>どういう物かはなんとなく判りましたがコレってWindowsだけって

間違い

297 名前:デフォルトの名無しさん mailto:sage [2005/06/25(土) 00:39:04 ]
>>287

#! /bin/sh
./a.out
echo $? > filename


298 名前:デフォルトの名無しさん mailto:sage [2005/06/25(土) 00:42:21 ]
>>291
ネットワークプログラミングスレの方が適切だと思う。
既に的確な答えが返ってきているのにこう書くのも何だが…

あっちのスレのテンプレにあるサイトも読んでね。
UNIX SocketプログラミングFAQは必読。

299 名前:291 mailto:sage [2005/06/25(土) 00:56:59 ]

> >どういう物かはなんとなく判りましたがコレってWindowsだけって
>
> 間違い

いててて。。。

> 298
とりあえず、あっちを熟読してみます。
ですが、なんかやりたい事と自分のスキルの次元が違いすぎる勘を感じました。

300 名前:デフォルトの名無しさん mailto:sage [2005/06/25(土) 06:55:16 ]
詳解TCP/IP の sock とか



301 名前:デフォルトの名無しさん [2005/06/26(日) 00:20:00 ]
Shift_JIS文字列を扱う場合、2バイト目がエスケープ文字だった場合に
問題が起きますよね。

WindowsではAPIやVC++のみに用意された関数で処理できるようですが、
Unix・Linuxではどのようにして問題を回避するのでしょうか?
自作関数を作る必要がありますかね?
ライブラリで処理できればいいんですが・・・

302 名前:デフォルトの名無しさん mailto:sage [2005/06/26(日) 00:26:08 ]
iconvで16bit unicode charあるいはutf8に汁

303 名前:デフォルトの名無しさん [2005/06/26(日) 00:26:49 ]
今からプログラミングを始めるには何言語がいいっすか?

304 名前:デフォルトの名無しさん mailto:sage [2005/06/26(日) 00:31:04 ]
問題は起きる場合と起きない場合がある。
というか、UNIXでそんなに大きな問題が出るか?

305 名前:デフォルトの名無しさん mailto:sage [2005/06/26(日) 00:55:20 ]
>>301
どういう問題が起きるかは、どういう種類の処理をしたいかによるだろ。
だから、対応もケースバイケースにならざるを得ない。

2byte目とのマッチング、1byte目と2byte目を分断、なんてのは、まあ、
まずいな。これは別に2byte目が\の場合には限らない。

内部処理は全部wchar_tにして逃げる手もあるが、システムコール等に
Shift_JISで渡す必要があって、しかもそれが問題を生じる可能性がある
と判断したなら、何か手を考える必要があるわなあ。



306 名前:デフォルトの名無しさん mailto:sage [2005/06/26(日) 01:21:43 ]
UIを持つアプリケーションでは、文字の並び順が問題になる。

307 名前:デフォルトの名無しさん mailto:sage [2005/06/26(日) 04:39:50 ]
>>301
文字列の頭から1文字ずつ調べて(途中から調べると2バイト目とAscii文字との区別がつかない場合があるので誤認識する)
Shift_JISの1バイト目に該当するコードが出てきたら次の文字は2バイト目と判断して、問題が起きないように適切な処理をするか
Unicodeなり、EUCなりに変換するしかない。

308 名前:デフォルトの名無しさん mailto:sage [2005/06/26(日) 06:12:09 ]
killコマンドで殺される際に、それを捕捉して何らかの処理をすることは可能でしょうか?

309 名前:デフォルトの名無しさん mailto:sage [2005/06/26(日) 06:23:16 ]
man signal かな

310 名前:デフォルトの名無しさん mailto:sage [2005/06/26(日) 11:38:50 ]
>>308
但し、kill -KILLは捕捉できない。



311 名前:質問です [2005/06/26(日) 11:43:20 ]
UNIXというよりWeb上の規格についての質問なのですが、
<FORM enctype="multiform/form-data">でブラウザがサーバーにstdinに送信するデータの形式について知りたいです。
inputフォーム2つとfileフォーム1つで実際に送信されたデータをとって見たら。
-----------------------------7d51d429260446
Content-Disposition: form-data; name="key1"

value1
-----------------------------7d51d429260446
Content-Disposition: form-data; name="key2"

value2
-----------------------------7d51d429260446
Content-Disposition: form-data; name="file1"; filename="C:\Documents and Settings\all user\デスクトップ\1119279517350.swf"
Content-Type: application/x-shockwave-flash

FWSク#7 x ー $マC ・
d?
(以下ファイルのデータが続く)
-----------------------------7d51d429260446--

↑このようなデータが取れました、これを見るにContent-Dispositionの行の次にContent-typeが指定されていたら1行空けてファイルデータ、
省略されていれば1行空けてフォームデータと見て良いのでしょうか?正確な規格文章が(出来れば日本語で)あったら教えて下さい。

312 名前:デフォルトの名無しさん mailto:sage [2005/06/26(日) 12:09:55 ]
man form

313 名前:デフォルトの名無しさん mailto:sage [2005/06/26(日) 12:11:20 ]
>>311
ブラウザによる
ってか、板違い
Web製作技術板だとかそんないたがあっただろ
そこいっとけ

314 名前:デフォルトの名無しさん mailto:sage [2005/06/26(日) 12:21:59 ]
>>311 RFC1806

315 名前:デフォルトの名無しさん mailto:sage [2005/06/26(日) 12:37:19 ]
>>311
RFCの日本語訳はネットワークプログラミング版のテンプレURL集をみよ。

316 名前:訂正 mailto:sage [2005/06/26(日) 12:37:48 ]
>>315
ネットワークプログラミング版→ネットワークプログラミングスレ


317 名前:デフォルトの名無しさん mailto:sage [2005/06/26(日) 12:40:29 ]
日本語訳しか読めない奴がよく技術本とか言うな

318 名前:デフォルトの名無しさん mailto:sage [2005/06/28(火) 15:57:07 ]
ファイルデスクプリタからfdopen()してFILE *を得るように、
文字列から同様にFILE *を得ることはできませんかね?


319 名前:デフォルトの名無しさん mailto:sage [2005/06/28(火) 16:04:31 ]
>>318
文字列をファイル名と見立ててfopenすればいいんじゃないかな

320 名前:あああ [2005/06/29(水) 00:50:49 ]
次のプログラムをLittle EndianのCPUで実行したとき、
それぞれcmdとdataのメモリの内容、メモリから読み出した直後
のレジスタの内容、実際に出力される内容はそれぞれどのような
値になるでしょう?

char *cmdreg = CMD_PORT, *datreg=DATA_PORT;

unsigned int16 cmd;
unsigned int32 data;

cmd=0x87cd , data=0x20030719;
outw(cmdreg,(cmd & 0xff00)>>8 | (cmd & 0xff)<<8);
outl(datreg, data);






321 名前:デフォルトの名無しさん mailto:sage [2005/06/29(水) 02:31:09 ]
なんで自分でやらないの?

322 名前:デフォルトの名無しさん mailto:sage [2005/06/29(水) 03:09:42 ]
>>318-319 レス感謝。
CでC++のistrstreamみたいなことがやりたかったのです・・・。

323 名前:デフォルトの名無しさん mailto:sage [2005/06/29(水) 05:20:36 ]
書き込みだけなら、sprintfでポインタをずらしていけば充分

324 名前:デフォルトの名無しさん mailto:sage [2005/06/29(水) 05:28:50 ]
>>322
FILE*を相手にする関数をオンメモリのバイト列にも使えるか、というわけだよな。
*BSDならば、funopen()を使えば実現できる。でもまあ、移植性はない。

325 名前:デフォルトの名無しさん mailto:sage [2005/06/29(水) 07:07:05 ]
>>324
glibcだとfopencookie
funopenは結構古くからあるけど、ネーミングの悪さからか、あまり広まらず。
逆にfopencookieを使っているアプリ(例えばPHP)では、
funopenをwrappingするような状況。(ノ∀`)アチャー

326 名前:デフォルトの名無しさん mailto:sage [2005/06/30(木) 19:04:50 ]
hoge@hogehoge:~/test/ncurses$ make
gcc -c -Wall -std=c99 -D__USE_POSIX199309 test.c
test.c: 関数 `main' 内:
test.c:5: error: storage size of `req' isn't known
test.c:8: 警告: implicit declaration of function `nanosleep'
test.c:5: 警告: unused variable `req'
make: *** [test.o] エラー 1

#include <time.h>

int main(void) {
  struct timespec req;
  req.tv_sec = 0;  req.tv_nsec = 33000;
  nanosleep(&req, NULL);
  return 0;
}

debianでプログラミングしていてnanosleepを使いたいのですが

time.h
# ifdef __USE_POSIX199309
/* Pause execution for a number of nanoseconds.
  This function is a cancellation point and therefore not marked with
  __THROW. */
extern int nanosleep (__const struct timespec *__requested_time,
       struct timespec *__remaining);
# endif

となっていたので-D__USE_POSIX199309としたのですがだめでした。
どうやれば使用できるようになるのでしょうか?

327 名前:デフォルトの名無しさん mailto:sage [2005/06/30(木) 19:19:19 ]
>>326
-std=c99
が邪魔してるようですね


328 名前:326 mailto:sage [2005/06/30(木) 20:01:20 ]
>>327
ほんとだ。
-std=gnu99
にしたら成功しますタ。

329 名前:デフォルトの名無しさん mailto:sage [2005/07/01(金) 06:24:38 ]
forkとかspawnてどこで管理してるの?

330 名前:デフォルトの名無しさん mailto:sage [2005/07/01(金) 07:14:00 ]
OS



331 名前:デフォルトの名無しさん mailto:sage [2005/07/01(金) 07:47:43 ]
質問の意味も答えの意味もわからん

332 名前:デフォルトの名無しさん mailto:sage [2005/07/01(金) 09:24:53 ]
俺なんかそのレスの意味もわからん

333 名前:デフォルトの名無しさん mailto:sage [2005/07/01(金) 10:01:03 ]
ゆとり教育の弊害で国語力が低下した俺様が来ますたよ

334 名前:デフォルトの名無しさん mailto:sage [2005/07/01(金) 10:11:06 ]
なんでもかんでもゆとり教育のせいにすんなよ

335 名前:デフォルトの名無しさん mailto:sage [2005/07/01(金) 10:27:47 ]
creat(2)で最後の'e'が抜けたのもゆとり教育のせいだよ。
子供にはスペルくらいちゃんと教えないとね。

336 名前:初心者 [2005/07/01(金) 12:50:55 ]
ファイル・システムは、最終的にどれくらい大きくなるか
予測不能なエリアをアサインし、また、高速にアクセスす
る必要がある。UNIXでは、これをどのように実現している
か図を使い、述べよ。というわけのわからない問題が出てきました。
どなたかぜひ教えてください!

337 名前:デフォルトの名無しさん mailto:sage [2005/07/01(金) 12:53:09 ]
○ <- ディスク
---------------- 壁
□ <- メモリ


ってか、板違い



338 名前:デフォルトの名無しさん mailto:sage [2005/07/01(金) 13:09:02 ]
>>336
プログラミング関係ないので板違いです。続きはUNIX板の質問スレへでも。

たぶんinodeがデータ本体をどういう風に保持しているか調べればいいのでしょう。
www-db.stanford.edu/~manku/quals/summaries/goldberg-uniximpl.htm

339 名前:デフォルトの名無しさん mailto:sage [2005/07/02(土) 21:30:17 ]
329であほな事を聞いてるのは自分です。
あほさに未だ気付けません、forkとかOS?カーネル?てどこです?
プロセスってなんかの管轄内にあるわけですよね?ここから間違ってまるんですかね
どこ見ればいいんでしょうか、
psのソースみたらわかるかと思って軽い気持ちで突入したんですが
ものっそい事になってて目が痛いです。マクロびゅんびゅん飛んでくるし
追い詰めたと思ったら未知の言語で、助けてください

340 名前:デフォルトの名無しさん [2005/07/02(土) 21:38:49 ]
>>339
forkってのは野茂の決め球で、すごい角度でOSに対して投げつける。
OSはそれを受け取るとなんと孫六ボールになって分身。氏ねボケ連発。
プロセスはOSの管理下にあり、OSがプロセスを監視。
プロセスが何人載っても大丈夫な設計になっている。(でも上限あり)
psのソースにはもちろん載っていない。
載っているのはカーネルのソースなわけだが、Linuxくらいなら簡単。
プロセス管理といえばスケジュール管理から入った方がロリ簡単。
sched.cを探して、印刷して、嫁



341 名前:デフォルトの名無しさん mailto:sage [2005/07/02(土) 21:46:23 ]
プログラミングを始めたばかりで、ポインタのあつかいがよくわからないのですが
int main(short argc, const char **argv){
という関数のなかから

argc, argvを違う関数に渡したいのですが

hoge(argc, &&argv); では
test.c:67: error: label `argv' used but not defined
といわれ
hoge(argc, &argv); では
test.c:67: warning: passing arg 2 of `hoge' from incompatible pointer type
といわれるのですが、正しくはどうするのでしょうか?

342 名前:デフォルトの名無しさん mailto:sage [2005/07/02(土) 21:48:13 ]
hoge(argc, argv)

343 名前:341 mailto:sage [2005/07/02(土) 22:04:51 ]
>>342
ありがとうございます

そしたら、
int hoge(int argc, ここで、argvはなんてうけたらいいのでしょうか?

344 名前:341 mailto:sage [2005/07/02(土) 22:08:34 ]
すいません 途中で送信してしまいました

現在は
int hoge(int argc, char **argv){
で、うけているのですが
これを
int hoge(int argc, char argv){
にすると、ウォーニングではなくエラーが出てしまいます

345 名前:デフォルトの名無しさん mailto:sage [2005/07/02(土) 22:13:57 ]
はい

346 名前:デフォルトの名無しさん [2005/07/02(土) 22:17:24 ]
>>344
そんな変更をする必要は無い
おまえはUNIXのスレに来る前にC言語の勉強をしなさい

347 名前:デフォルトの名無しさん mailto:sage [2005/07/02(土) 22:56:40 ]
>>340
おおーーなるほど、
何を指してるのかはわかってませんけど
辿り方がわかった気がします。
ドキュメント全部その切り口で書かれてればいいのに
sched.c ご馳走様です。
感謝!!ありがとう

348 名前:デフォルトの名無しさん mailto:sage [2005/07/03(日) 03:19:11 ]
ソース読む前に本でも読んだ方がいいだろw

349 名前:デフォルトの名無しさん mailto:sage [2005/07/03(日) 09:39:08 ]
ライオンズ コメンタリーとかね。

350 名前:デフォルトの名無しさん mailto:sage [2005/07/03(日) 11:13:36 ]
そんな具体的なのは早いってw



351 名前:デフォルトの名無しさん mailto:sage [2005/07/03(日) 13:34:46 ]
XtAppAddInputを使用してPipeのFDをReadで登録した場合、
パイプの書き込みが行われなくてもXEventが発生してしまうものなのでしょうか?
すいませんが知ってる方いらっしゃいましたら教えていただけますか。

352 名前:デフォルトの名無しさん mailto:sage [2005/07/03(日) 14:05:40 ]
>>349
詳しく
ぐぐっても西部の話しかでてこねー

353 名前:デフォルトの名無しさん mailto:sage [2005/07/03(日) 14:18:53 ]
>>352
www.ascii.co.jp/books/detail/4-7561/4-7561-1844-5.html

354 名前:デフォルトの名無しさん mailto:sage [2005/07/03(日) 14:32:10 ]
>>353
ありがとう〜英語の本だったか

355 名前:デフォルトの名無しさん mailto:sage [2005/07/03(日) 14:36:37 ]
ええ?翻訳のはずだけどw

356 名前:デフォルトの名無しさん mailto:sage [2005/07/03(日) 15:19:29 ]
すいません、質問なのですが。
環境変数を獲得するプログラムなんですけれども、

#include <stdio.h>

main(int argc, char *argv[], char *envp[])のソースを
{
int i;

for(i = 0; envp[i]; i++);
printf("%s\n",envp[i]);

exit(0);
}

実行ファイルを実行すると、NULLが返ってきました。

設定されている環境変数の一覧を表示させたいですが。



何も設定されていないという意味でしょうか?



357 名前:デフォルトの名無しさん mailto:sage [2005/07/03(日) 15:31:13 ]
>>356
そんな具体的なのは早いってw

358 名前:デフォルトの名無しさん mailto:sage [2005/07/03(日) 15:33:01 ]
>>356
for のお尻のセミコロンはいらんだろ。
あとスレ違いだと思う。

359 名前:デフォルトの名無しさん mailto:sage [2005/07/03(日) 15:34:43 ]
>>356
間違い: フォーーーーーッ;
正解: フォーーーーーッ{}

360 名前:デフォルトの名無しさん mailto:sage [2005/07/03(日) 15:39:10 ]
いや、それ一緒だからw



361 名前:デフォルトの名無しさん mailto:sage [2005/07/03(日) 15:41:53 ]
>>360
フォーーー・・・

362 名前:356 mailto:sage [2005/07/03(日) 16:00:06 ]
>>356=357
ちょっと、自演してみましたw


363 名前:デフォルトの名無しさん mailto:sage [2005/07/03(日) 16:01:40 ]
>>362
フォーー!!

364 名前:よちお mailto:sage [2005/07/03(日) 16:20:06 ]
マジスカポリス?

365 名前:デフォルトの名無しさん mailto:sage [2005/07/03(日) 21:10:34 ]
>>356
env のソース見りゃいいじゃん

366 名前:デフォルトの名無しさん mailto:sage [2005/07/03(日) 21:14:34 ]
>>365
だからそんなんしなくってもいいって言ってんだろフゥーーーーーッ!
for(); っていうありがちなミスなだけですよ

367 名前:デフォルトの名無しさん mailto:sage [2005/07/03(日) 22:15:23 ]
ありがちなのか。私にゃありえないミスに見えたが。

368 名前:デフォルトの名無しさん mailto:sage [2005/07/03(日) 22:25:07 ]
>>367
だから初心者にありがちなミスって言ってんだろフゥーーーーッ!
>>365が見逃したとしても仕方ありませんよ

369 名前:デフォルトの名無しさん mailto:sage [2005/07/04(月) 05:50:45 ]
topコマンドのように、表示を更新しつつ、改行して進んでいかない方法を探しています。
1行の場合\rを出力してやれば、その行の1列目まで戻ってそこから出力できることがわかったのですが、
逆改行のやり方がわかりません。教えていただけないでしょうか?

370 名前:デフォルトの名無しさん mailto:sage [2005/07/04(月) 06:32:28 ]
$ man curses
$ tput cuu1
$ man 5 terminfo

BSDならtermcapを。



371 名前:デフォルトの名無しさん mailto:sage [2005/07/04(月) 07:09:03 ]
thx

372 名前:デフォルトの名無しさん mailto:sage [2005/07/04(月) 14:33:52 ]
ソースを読んでいたら
setlocale(LC_CTYPE, "");
と言うのがあったのですが、
具体的にこれはどのようなときどのようなことに役に立つのでしょうか?

373 名前:デフォルトの名無しさん mailto:sage [2005/07/04(月) 14:59:51 ]
>>372
man setlocale した上で質問しているんだろうな?

374 名前:デフォルトの名無しさん mailto:sage [2005/07/04(月) 15:04:48 ]
うん

375 名前:デフォルトの名無しさん mailto:sage [2005/07/04(月) 16:54:36 ]
getenv(3)してみるのが面倒な時。

376 名前:デフォルトの名無しさん mailto:sage [2005/07/04(月) 21:15:32 ]
おれもわからん
なんでコード上で setlocale(LC_CTYPE, ""); する必要があるの?
使ってるコード見てみてもなにがなんだかわからんや
暇な人説明プリーズ

377 名前:デフォルトの名無しさん mailto:sage [2005/07/04(月) 21:26:13 ]
setlocale()呼ばないと、デフォルトでは"C"ロケールになる
setlocale(LC_CTYPE, "");を呼ぶと、文字種別に関するロケールが
現在の実行環境設定に従って設定される。

ロケール依存の関数(mbstowcs()など)を呼ぶ場合には、
setlocale()を呼んでおいた方がいい。

つかmanぐらい嫁

378 名前:デフォルトの名無しさん mailto:sage [2005/07/04(月) 21:27:29 ]
ちんこたってきたんだけどどうしよう

379 名前:デフォルトの名無しさん mailto:sage [2005/07/04(月) 21:31:03 ]
英語のマニュアルなんて読む気がおきねぇ
catのマニュアルよんで理解するのにも30分くらいかかる俺だぞ
gccは長さを見ただけでやめたよ

そんな俺だけど感謝してる
本当にありがとう、なんとなくくわかった気がするよ

380 名前:デフォルトの名無しさん mailto:sage [2005/07/04(月) 21:49:07 ]
>>3くらい読め。
man on www
www.linux.or.jp/JM/#Search
www.linux.or.jp/JM/html/LDP_man-pages/man3/setlocale.3.html



381 名前:デフォルトの名無しさん mailto:sage [2005/07/04(月) 21:58:48 ]
日本語訳読んだら負けだと思ってる


382 名前:デフォルトの名無しさん mailto:sage [2005/07/04(月) 22:00:40 ]
オリジナル読む>翻訳読む>>>>>>>>>>>>>読まない

383 名前:デフォルトの名無しさん mailto:sage [2005/07/04(月) 22:04:52 ]
誤訳とかは置いといて
たまに日本語訳マニュアルを読むと何世代まえのやねん
っておもうことがあるね

384 名前:デフォルトの名無しさん mailto:sage [2005/07/04(月) 22:04:54 ]
コマンドのマニュアルはそれだけ読んでもわけわかんねーことは
確かに多いが、ライブラリ関数やシステムコールのマニュアルぐらいは
有用だから読んどけよ。

385 名前:デフォルトの名無しさん mailto:sage [2005/07/04(月) 22:47:23 ]
>>383
あなたも翻訳に参加して下さい

386 名前:デフォルトの名無しさん mailto:sage [2005/07/07(木) 09:13:18 ]
経過時間を計測したいのですが、プロセッサ時間依存の方法ですと、マルチスレッドのプログラムの  
経過時間がうまく計測できません。clock()以外で、ミリ秒まで取得する方法を教えてください。

387 名前:デフォルトの名無しさん mailto:sage [2005/07/07(木) 09:24:09 ]
頭使えよばか

388 名前:デフォルトの名無しさん mailto:sage [2005/07/07(木) 10:53:50 ]
>>386
マルチすなや。
移動しているつもりなら、きちんと挨拶してからにしろ。

389 名前:デフォルトの名無しさん [2005/07/07(木) 12:56:03 ]
(・∀・)コンニチハ

390 名前:デフォルトの名無しさん mailto:sage [2005/07/07(木) 14:29:37 ]
(・∀・)コンニチハ
経過時間を計測したいのですが、プロセッサ時間依存の方法ですと、マルチスレッドのプログラムの   
経過時間がうまく計測できません。clock()以外で、ミリ秒まで取得する方法を教えてください。 




391 名前:デフォルトの名無しさん mailto:sage [2005/07/07(木) 14:41:54 ]
同じスレにマルチとはなかなかやるな

392 名前:390 [2005/07/07(木) 15:07:17 ]
>>391
マルチマルチとうるさいんだこのクズ
質問に答えられないんならROMってろ

393 名前:デフォルトの名無しさん mailto:sage [2005/07/07(木) 15:10:32 ]
あいさつしてから、って点が違うみたいだよ。>>391

394 名前:デフォルトの名無しさん mailto:sage [2005/07/07(木) 15:12:50 ]
さすがマルチスレッド


395 名前:デフォルトの名無しさん mailto:sage [2005/07/07(木) 15:13:11 ]
アホかい。

396 名前:デフォルトの名無しさん mailto:sage [2005/07/07(木) 17:35:50 ]
gettimeofdayの何が不満なのか。

397 名前:デフォルトの名無しさん mailto:sage [2005/07/07(木) 20:18:35 ]
スレッドの実装が何かも言わないで答えられるかよ

398 名前:デフォルトの名無しさん mailto:sage [2005/07/07(木) 20:41:07 ]
>>397
うはwwwテラキモスwwwwww

399 名前:デフォルトの名無しさん mailto:sage [2005/07/08(金) 00:07:15 ]
>>386の文章の意味が分かる奴はいるのか?


400 名前:デフォルトの名無しさん mailto:sage [2005/07/08(金) 00:20:05 ]
Xlib回りのことなのですが
Window型はどのような型なのでしょうか?
googleで検索しようにもwindowがキーワードなため検索できません



401 名前:デフォルトの名無しさん mailto:sage [2005/07/08(金) 00:24:51 ]
xlibとwindowで検索すりゃいいじゃん

402 名前:デフォルトの名無しさん mailto:sage [2005/07/08(金) 00:27:22 ]
>>401
それだと引っかかり過ぎです

ヘッダファイル読んだら早かったですね
すいませんお手数をお掛けしました

403 名前:デフォルトの名無しさん mailto:sage [2005/07/08(金) 00:51:36 ]
>>402
じゃぁもう判ったろうけど只のIDね。

404 名前:402 mailto:sage [2005/07/08(金) 02:20:09 ]
はい、すいませんありがとうございます
単に、unsigned intでした


405 名前:デフォルトの名無しさん [2005/07/08(金) 02:43:22 ]
XmbDrawImageString
で表示する文字列の幅を計算することはできますか?
プロポーショナルのモナーフォントを使うので文字数x8等では大きさがあいませんでした

406 名前:デフォルトの名無しさん mailto:sage [2005/07/08(金) 02:59:43 ]
XmbTextExtents

407 名前:デフォルトの名無しさん mailto:sage [2005/07/08(金) 16:44:48 ]
ヘッダファイルを見てみたのですが
知能がたりないためか理解できませんでした

XFontSet型はどのようなかたなんですかね?

408 名前:407 mailto:sage [2005/07/08(金) 18:17:01 ]
どう検索してもでない・・・
構造体なのかな・・・

409 名前:デフォルトの名無しさん mailto:sage [2005/07/08(金) 20:14:50 ]
わたしも似たような質問をさせていただきます
よくコードを書いていたら、関数や型などいろいろなものがあたらしくでてくるのですが
それらを検索しても詳しい説明が引っかからないことが結構よくあります
man hoge とやっても、マニュアルがあるのは希です
私も直接ヘッダファイルを読もうと思うのですが
% grep hoge /usr/X11/include/X11/*
等とし、引っかかったファイルの中を見るのですが全然わかりません
今は、extents->max_ink_extent.height と言うものを調べているのですが
よくわかりません

ヘッダファイルを読むにはコツなどあるのでしょうか?


410 名前:デフォルトの名無しさん mailto:sage [2005/07/08(金) 20:28:37 ]
>>409
単に
grep hoge
などとして名前で検索したら大量にひっかかるのは当たり前だ。

まずは正規表現を学べ。
そして、探したいシンボルがどのように宣言されているか想像し、
それに応じた正規表現を用いて、
grep 'typedef.*hoge'
などとして検索することだ。





411 名前:デフォルトの名無しさん mailto:sage [2005/07/08(金) 20:57:50 ]
統合開発環境使えよ・・・
これだから化石みたいなUNIX使いは

412 名前:デフォルトの名無しさん mailto:sage [2005/07/08(金) 21:00:01 ]
>>411
「使える統合開発環境」があったら使ってるっつーの

413 名前:デフォルトの名無しさん mailto:sage [2005/07/08(金) 21:07:19 ]
tags使うとか……
それはそうと、emacsって統合開発環境っぽいけど。

414 名前:デフォルトの名無しさん mailto:sage [2005/07/08(金) 21:21:56 ]
つーか Xlib はヘッダだけ読んでもわからんよ。
参考書入手したほうがいい。

415 名前:デフォルトの名無しさん mailto:sage [2005/07/08(金) 21:35:05 ]
>>414
そこで、もまいの使ってるよい参考書を
お姉さんにこっそりおしえなさい

416 名前:409 mailto:sage [2005/07/08(金) 22:30:37 ]
みなさまありがとうございました
ファイル内で検索は正規表現を使ってやっています
ですが、なかなか私の知識が足りないせいかむづかしくて…

>>414
どのような参考書がありますかね?
X Windowsで遊ぶ本 っていうのを買ってそれからプログラミングを始めたのですが
ぜんぜんその本には関数の説明が載ってなくてきっかけ本みたいなかんじです
X Window プログラミングっていう本があるらしいのですがアマゾンでも取扱い無しになってて…
ほかになにかあったら教えていただきたいです

417 名前:デフォルトの名無しさん mailto:sage [2005/07/08(金) 22:49:48 ]
>>416
xjman.dsl.gr.jp/X11R6/X11/
とりあえず、ここには目を通す。


418 名前:デフォルトの名無しさん mailto:sage [2005/07/08(金) 23:11:53 ]
>>416
> X Window プログラミングっていう本があるらしいのですがアマゾンでも取扱い無しになってて…

第二版
www.amazon.co.jp/exec/obidos/ASIN/4526033995/249-1846796-0085153
X-Windows になってるのはアマゾンのミスだな。

定番はソフトバンクから出てた Xlibプログラミング・マニュアルだけど、
高いし絶版だから上の本で充分かと。

419 名前:デフォルトの名無しさん mailto:sage [2005/07/08(金) 23:33:41 ]
Xなんてソース全部公開されてんだからそっからいくらでも調べられるじゃん


420 名前:デフォルトの名無しさん mailto:sage [2005/07/08(金) 23:46:47 ]
>>419
と理論だけで、実践のともなわない馬鹿が申しております。。。



421 名前:デフォルトの名無しさん mailto:sage [2005/07/08(金) 23:49:26 ]
時間効率の問題ってあるよなあ。
あるシンボルの定義位置を参照する、といったよくあるニーズに答える
にあたっては統合開発環境はやっぱ強いよ。
専用の開発環境だけあってctagよりは厳密で正確だし、システムヘッダまで
再帰的に勝手に探してくれるからな。




422 名前:デフォルトの名無しさん mailto:sage [2005/07/08(金) 23:52:40 ]
静的な解析ツールを使う
という選択肢がなぜないのか

423 名前:デフォルトの名無しさん mailto:sage [2005/07/08(金) 23:53:49 ]
道具を使いこなせるかどうかの話だけだと思うが。
findとgrepとxargsがあればかなりのことができる。

424 名前:デフォルトの名無しさん mailto:sage [2005/07/08(金) 23:57:50 ]
>>423
だから、時間効率の問題

それにfind(1), grep(1), xargs(1)はCのシンタクスを知らないし
行指向の作業しかできない

425 名前:デフォルトの名無しさん mailto:sage [2005/07/09(土) 00:11:46 ]
IDE はリソース喰いだから好きじゃない
最近 cvsweb みたいなのが便利に思えてきた

426 名前:デフォルトの名無しさん mailto:sage [2005/07/09(土) 00:11:53 ]
globalとか。


427 名前:デフォルトの名無しさん mailto:sage [2005/07/09(土) 00:17:35 ]
>>419
つーかお前はXのソースを読んだことがあるのか?

428 名前:デフォルトの名無しさん mailto:sage [2005/07/09(土) 00:18:26 ]
>>425
リソース喰いつってもモノによるでしょ
同じIDEでも、たとえばVC++6.0とVS.NET 2003では全然違う

クロスリファレンス機能、補完機能つきのエディタ
(これはviやemacsより良いかといえば疑問はあるが)、
ソース見ながら実行できるGUIデバッガ
(ものによってはエディットコンティニュー可能)
GUIリソースエディタ
オンラインヘルプとの連携

こういったものが手に入るのだから、開発効率は比べ物にならん

429 名前:デフォルトの名無しさん mailto:sage [2005/07/09(土) 00:28:50 ]
>>428
そういったものが手に入って効率化する工程は、
ソフトウェア生産全工程の何%なのか?

430 名前:デフォルトの名無しさん mailto:sage [2005/07/09(土) 00:32:47 ]
>>429
まあ、設計段階以外の全てじゃないか?
テスト工程でもコードの修正は発生するからな

eclipseのようなものはリファクタリングやUnitTestとの連携機能も
持っているしな



431 名前:デフォルトの名無しさん mailto:sage [2005/07/09(土) 00:35:53 ]
>>428
>同じIDEでも、たとえばVC++6.0とVS.NET 2003では全然違う

UNIX べったりなんで、そういうの使った事無いんだ
触った事ある IDE は Eclipse とか Xcode とか

IDE で重装備するよりも、REPL が充実してる環境の
方がヘルシーだと思う。

432 名前:デフォルトの名無しさん mailto:sage [2005/07/09(土) 00:42:51 ]
ツールボックスアプローチの中にいる人間に
キッチンシンクアプローチをとったツールの良さを説くのはなかなか難しかろう

433 名前:デフォルトの名無しさん mailto:sage [2005/07/09(土) 00:43:17 ]
>>431
たとえMicrosoftのVisual Studioであっても、別にIDE漬けを強制される
ワケじゃないよ。

最近のVisual Studioには残念ながらメイクファイルを生成する機能は
無くなったようだが、依然として自分で書くことはできるし、
make(1)相当のnmake.exeもついている。無論、cc(1)を直接実行すれば
いい程度の仕事なら、cl.exeを実行すればよい。実際ちょっとした
プログラムを作って試す、といった程度なら、いちいちIDEを起動する
よりはこっちが速い。

434 名前:デフォルトの名無しさん mailto:sage [2005/07/09(土) 00:43:44 ]
>>432
emacsユーザなら結構いると思うんだけどね。

435 名前:デフォルトの名無しさん mailto:sage [2005/07/09(土) 01:15:47 ]
ツールボックスを使いこなせずにレガシーな環境に固執して
1人だけ効率落としてる奴の方が迷惑なわけだが
あっここには趣味プログラマしかいないからいいのか

436 名前:デフォルトの名無しさん mailto:sage [2005/07/09(土) 01:21:38 ]
俺はツールボックスの方が好きだけど、今はツールボックスこそがレガシーな環境なんじゃないの
翻って、今風な環境って奴は進む道を間違えてるとは思うけどね

437 名前:デフォルトの名無しさん mailto:sage [2005/07/09(土) 01:22:41 ]
> ツールボックスを使いこなせずにレガシーな環境に固執して

ツールボックスよりレガシーって、メインフレームの環境とかか
ごめん、俺少しだけ流れないJCL流す苦労に涙したことあるけど
ほとんど知らないわ(w

438 名前:デフォルトの名無しさん mailto:sage [2005/07/09(土) 01:32:11 ]
多分 >>435 はツールボックスという用語を知らなかったんだろうね

439 名前:409 mailto:sage [2005/07/09(土) 01:32:12 ]
>>418
ありがとうございます
それを買ってみます



440 名前:デフォルトの名無しさん mailto:sage [2005/07/09(土) 01:38:56 ]
俺はもともとWindowsでVC++使ってコード書いてたけど
UNIXを使いはじめてからは、WindowsでもEmacs(Meadow)でコード書くようになったよ
はじめはGNU/Linuxを使ってて、KDevelopとか使ってやってたけど
わずらわしくなって、テキストエディタで書きはじめたらこりゃ便利
Emacsとか使うとコード書くのも楽にカスタマイズできるから書くスピードも早いし
VC++のIDE使ってると、一々マウスで操作してやる操作を探さなきゃいけないけど
(まぁ、ショートカットに入れたりしたらいいだけだが)
テキストエディタとコンソールだと、screenとかつかうと切替えも早いし
俺にはこっちのほうが便利だし速い



441 名前:デフォルトの名無しさん mailto:sage [2005/07/09(土) 01:44:57 ]
Emacsの立ち位置はびみょうだな

Toolbox ----- Emacs ----- IDE

ってカンジ?
まあ、道具はケースバイケース・適材適所で使える人が最強ですよ、と
言っておく。

442 名前:デフォルトの名無しさん mailto:sage [2005/07/09(土) 01:49:36 ]
蟹飯がIDE嫌いらしく、printfデバグを推奨してたのは萎えたな
老害という言葉を思い出したよ


443 名前:デフォルトの名無しさん mailto:sage [2005/07/09(土) 01:53:00 ]
Toolbox (UNIX/Shell) ----- Kitchen Sink (Emacs ----- IDE ----- Smalltalk)

444 名前:デフォルトの名無しさん mailto:sage [2005/07/09(土) 01:54:58 ]
とはいえ、蟹飯>>442なんだけどね。


445 名前:デフォルトの名無しさん mailto:sage [2005/07/09(土) 01:55:41 ]
>>444
まあ尊敬はしとるよ。

446 名前:デフォルトの名無しさん mailto:sage [2005/07/09(土) 01:56:23 ]
漢ならgdbである

447 名前:デフォルトの名無しさん mailto:sage [2005/07/09(土) 01:57:00 ]
>>443
N88BASICとかもKitchen Sinkなのかなあ

448 名前:デフォルトの名無しさん mailto:sage [2005/07/09(土) 01:57:20 ]
>>446
え?adbとかじゃなくて?

449 名前:デフォルトの名無しさん mailto:sage [2005/07/09(土) 02:01:29 ]
俺は焼き畑も printf() も良く使うな
根っからのレガシーだから

450 名前:デフォルトの名無しさん mailto:sage [2005/07/09(土) 02:19:06 ]
道具なんて自分に合ったもん使えばいい。
他人の道具にいちいち文句言うのが間違い。

作業が遅いのが気にくわんならば「遅い」とだけ文句言え。




451 名前:デフォルトの名無しさん mailto:sage [2005/07/09(土) 02:24:13 ]
>>450
新人相手なら教育すべきだろうし
ペアプロとかしてると、突っ込みたくなるんじゃないかな

ほら、viでなんか非効率なことやってるの見て、「こうやるんだYO!!」
みたいな
でも、最近はそういう「職場の先輩」って少なくなってる気がするね

452 名前:デフォルトの名無しさん [2005/07/09(土) 02:31:51 ]
よく思うのが 構造体や関数の定義位置を探す方法に乏しいこと
ヘッダをgrepして定義位置を探すとかって原始的だよね?
効率のいい方法があれば とっておきのスク水猫耳を

453 名前:デフォルトの名無しさん mailto:sage [2005/07/09(土) 02:33:19 ]
>>450
> 作業が遅いのが気にくわんならば「遅い」とだけ文句言え。

頼むからチームでプログラミングするところには参加しないでね

454 名前:デフォルトの名無しさん mailto:sage [2005/07/09(土) 03:03:50 ]
>>452
grep でも C/P は十分だと思うけど、
↓みたいに web 化するとか

lxr.linux.no/

455 名前:デフォルトの名無しさん mailto:sage [2005/07/09(土) 03:09:14 ]
>>451
非効率の例で vi を挙げないでくれ...

456 名前:デフォルトの名無しさん mailto:sage [2005/07/09(土) 03:12:07 ]
>>455
edとかのがよかった?(w

457 名前:デフォルトの名無しさん mailto:sage [2005/07/09(土) 03:13:38 ]
>>454
IDEは、IDE自体のデキにもよるけど、class/structの宣言変えたりすると
すぐ追従してくれる。
毎度毎度
make ctags
とかそんなようなコマンドをタイプしてしばらくバッチ処理を待たないと
いけない世界とはえらい違いなワケですが。

458 名前:デフォルトの名無しさん mailto:sage [2005/07/09(土) 03:14:26 ]
>>456
効率悪ぃのは得物の所為じゃねぃ

459 名前:デフォルトの名無しさん mailto:sage [2005/07/09(土) 03:16:31 ]
>>457
頻繁に書き換える所なら脳キャッシュに載ってるんじゃないかね

460 名前:デフォルトの名無しさん mailto:sage [2005/07/09(土) 03:17:02 ]
>>458
いや、こう言っちゃなんだけど俺はvi好きよ。
今、純正のvi触る機会は無いけれど。

>>451は別にviをコケにしてるんじゃなくて、
習熟度によってえらく使い方が替わってしまうviというエディタを
使いこなせていない新人君の操作にイライラしてしまう、
というよくある光景を描いたつもりなんだ



461 名前:デフォルトの名無しさん mailto:sage [2005/07/09(土) 03:17:43 ]
>>459
いやさ、脳キャッシュとか脳スタックとか容量に限界あるから
割り込みもよく入るし(w

462 名前:デフォルトの名無しさん mailto:sage [2005/07/09(土) 03:20:48 ]
>>460
そうか、スマソ。
最近、vi 使ってるだけで後輩から老害認定されてる人を見たもんで。
Java だったから IDE 使った方が良いんだろうけど、ちょっと悲しかった。

463 名前:デフォルトの名無しさん mailto:sage [2005/07/09(土) 03:27:12 ]
Javaは言語がクソだから環境を整えないとマトモに使えないんだよな。

464 名前:デフォルトの名無しさん mailto:sage [2005/07/09(土) 03:31:20 ]
俺、vi使ってJavaでコーディングしてたら、JBuilderユーザの同僚に
「速いねー」<(タイプが)
とか誉められたことがあるな

あれは嫌味か何かだったんだろうか

ま、Javaみたいに完全にクラス指向の言語だと、エディタの補完機能の
有効性がデカい、というのはある。Cとかに比べると

465 名前:デフォルトの名無しさん [2005/07/09(土) 03:41:56 ]
>>457
ctagsってなに?
便利そうなんだけど
尻尾もつけるから

466 名前:デフォルトの名無しさん mailto:sage [2005/07/09(土) 03:44:27 ]
>>465
ctags(1)

つか、おまいは本当にUNIXプログラマなのか

467 名前:デフォルトの名無しさん mailto:sage [2005/07/09(土) 03:47:55 ]
>>463
そんなJavaをデザインしたBill Joyには足を向けて寝られない>>463


468 名前:デフォルトの名無しさん mailto:sage [2005/07/09(土) 04:07:08 ]
>>466
JMに載ってないコマンドはいまいち知らんのよ
とりあえずこれを使えばincludeされる予定のヘッダを
全部読んでタグ作ってくれるのね。
SASSOKU試してみる

469 名前:デフォルトの名無しさん mailto:sage [2005/07/09(土) 08:13:45 ]
>>468
GNU Globalのほうが便利よ


470 名前:デフォルトの名無しさん mailto:sage [2005/07/09(土) 09:00:17 ]
viで、カーソル移動を矢印キー押しっぱなしでやってるの見ると一言言いたくなるよね。
で、聞いてみたら検索(/)コマンドも単語移動(wなど)も、ex系のコマンド(sなど)も知らなかったりしてもうね……



471 名前:デフォルトの名無しさん mailto:sage [2005/07/09(土) 10:06:34 ]
viなんて非常時以外使わんだろ
得意げにviの使い方を語る奴見ると引く

472 名前:デフォルトの名無しさん mailto:sage [2005/07/09(土) 10:14:35 ]
いや、そんな当たり前のことで得意になったりしませんから。
#まさか、sed使えるからって得意になる奴もいまい。それと同じことだ。

473 名前:デフォルトの名無しさん mailto:sage [2005/07/09(土) 10:19:39 ]
vi はカーソル移動=検索なんだよね(ほぼ)
その辺りの感触がわからないとゴミにしか見えないだろう。

474 名前:デフォルトの名無しさん mailto:sage [2005/07/09(土) 10:24:04 ]
#カーソル移動はfだが

475 名前:デフォルトの名無しさん mailto:sage [2005/07/09(土) 10:29:32 ]
あぁ・・・

476 名前:デフォルトの名無しさん mailto:sage [2005/07/09(土) 11:05:22 ]
Xlib スレがあるのにそっちを勧める奴はおらんのか。
こっちだ。
pc8.2ch.net/test/read.cgi/tech/1060005170/l50

477 名前:デフォルトの名無しさん mailto:sage [2005/07/09(土) 12:39:11 ]
Xlibなんて過去の遺物だし

478 名前:デフォルトの名無しさん mailto:sage [2005/07/09(土) 12:53:35 ]
それは libc なんて過去の遺物だしって言うのと変わらんよ。

479 名前:デフォルトの名無しさん mailto:sage [2005/07/09(土) 14:38:12 ]
>>471
viしか使えなくてすまん


480 名前:デフォルトの名無しさん mailto:sage [2005/07/09(土) 15:36:30 ]
libcなんてダサすぎる。
時代はglibc。



481 名前:デフォルトの名無しさん mailto:sage [2005/07/09(土) 15:44:01 ]
glibc? 時代はlibstdc++。

482 名前:デフォルトの名無しさん mailto:sage [2005/07/09(土) 15:46:42 ]
たしかにオマエラには2ちゃんがお似合いだw

483 名前:djb信者 mailto:sage [2005/07/09(土) 15:56:01 ]
時代は、diet-libc

484 名前:デフォルトの名無しさん mailto:sage [2005/07/09(土) 18:00:57 ]
>>471
非常時に使うのって、edじゃないか?

485 名前:デフォルトの名無しさん mailto:sage [2005/07/09(土) 18:03:23 ]
>>484
え?非常時は boot cdrom で、dtpad 使うけど?

486 名前:デフォルトの名無しさん mailto:sage [2005/07/09(土) 18:42:03 ]
時代は変わったちうことですね

487 名前:デフォルトの名無しさん mailto:sage [2005/07/09(土) 19:04:12 ]
非常時でもディスプレイが映ると思うなよ

488 名前:デフォルトの名無しさん mailto:sage [2005/07/09(土) 19:11:28 ]
>>487
シリアルポートは生きてるかも知れないけどな

489 名前:デフォルトの名無しさん mailto:sage [2005/07/09(土) 19:29:12 ]
非常時は巫女/ぐにょ Linux で Emacs

490 名前:デフォルトの名無しさん mailto:sage [2005/07/09(土) 20:20:51 ]
非常時にCDブートなんかしてたら漏らしちゃうよ。



491 名前:デフォルトの名無しさん mailto:sage [2005/07/09(土) 21:36:13 ]
じゃUSBブートでおながいします。


492 名前:デフォルトの名無しさん [2005/07/10(日) 01:32:30 ]
晒しあげてやる。

493 名前:デフォルトの名無しさん mailto:sage [2005/07/10(日) 01:46:43 ]
Xlibを使ったコードを書いていて実行してみたら
XCreateFontSetのところで以下の様なエラーが出ました
これはどのような意味なのでしょうか?


X Error of failed request: BadValue (integer parameter out of range for operation)
Major opcode of failed request: 1 (X_CreateWindow)
Value in failed request: 0x0
Serial number of failed request: 7
Current serial number in output stream: 13

494 名前:デフォルトの名無しさん mailto:sage [2005/07/10(日) 01:51:11 ]
>>493
X_CreateWindow()のパラメータがあってなくてBadValueエラーがでたんだろ。
そのXCreateFontSet()の呼び出しをコメントにして同じエラーがでるなら
それ以前に呼んでる関数を疑え。

495 名前:デフォルトの名無しさん mailto:sage [2005/07/10(日) 02:20:34 ]
あるいはデバッグ時には、main()の先頭かあるいは
デバッガを使って実行前に
_Xdebug = 1;
をしておくという手もある。(遅くなるが)
こうすると、毎回XSync()するのと同じ効果があるので、
パラメータ間違いがあった場合すぐにエラーが起きる。
これって昔は常識だったけど、今は lost technology
に近い?


496 名前:デフォルトの名無しさん mailto:sage [2005/07/10(日) 02:24:56 ]
そもそも生の Xlib 自体が lost technology に近い

497 名前:デフォルトの名無しさん mailto:sage [2005/07/10(日) 03:16:21 ]
今更X Windowを何かのシステムのインタフェースに
使おうという発想がlost ideaだ

498 名前:デフォルトの名無しさん mailto:sage [2005/07/10(日) 10:20:30 ]
>>400は本当に生のXlibでいいのか?
Motif, gtkとかフレームワークもいろいろあるが…
www.free-soft.org/guitool/

499 名前:デフォルトの名無しさん mailto:sage [2005/07/10(日) 10:30:28 ]
Qt

500 名前:デフォルトの名無しさん mailto:sage [2005/07/10(日) 11:24:14 ]
QtはGPLだから用途によってはまずいぞ。
LGPLなgtkの方がまだ安全。



501 名前:デフォルトの名無しさん mailto:sage [2005/07/10(日) 11:28:11 ]
え?Qtはライセンス料払えば非GPLでもOKやん。

502 名前:デフォルトの名無しさん mailto:sage [2005/07/10(日) 11:26:37 ]
Windowプログラミングは初めてなのですが、何か良い入門書があったら教えてください

503 名前:デフォルトの名無しさん mailto:sage [2005/07/10(日) 11:29:46 ]
金を払ってQtを使う阿呆は(ry

504 名前:デフォルトの名無しさん mailto:sage [2005/07/10(日) 11:56:34 ]
>>502
釣りでないならスレ違い。

505 名前:デフォルトの名無しさん mailto:sage [2005/07/10(日) 11:57:48 ]
マックプログラミングは初めてなのですが、何か良い入門書があったら教えてください

506 名前:デフォルトの名無しさん mailto:sage [2005/07/10(日) 12:15:56 ]
面白くないよ

507 名前:デフォルトの名無しさん mailto:sage [2005/07/10(日) 12:30:47 ]
>>504
書籍の質問はダメですか?

508 名前:502 mailto:sage [2005/07/10(日) 12:58:29 ]
わかりました別スレに行きます。さようなら

509 名前:502 mailto:sage [2005/07/10(日) 12:58:59 ]
わかりました別スレに行きます。さようなら

510 名前:502 mailto:sage [2005/07/10(日) 13:02:04 ]
わかりました別スレに行きます。さようなら



511 名前:502 mailto:sage [2005/07/10(日) 13:00:12 ]
わかりました別スレに行きます。さようなら

512 名前:493 mailto:sage [2005/07/10(日) 14:04:33 ]
皆さんどうもありがとうございました
いろいろとやってみたのですがどうもうまくいきませんでした
font_fontsetに入れるところでエラーになります。
何が悪いのかは本当にけんとうもつきません

したは、簡略化したコードです
何かうたがうてんなどありますでしょうか?

int main( int argc, char **argv){
Display *disp;

disp = XOpenDisplay( NULL);
font_set( disp);
}

void font_set( Display *disp){
char **misss;
int miss_count;
char *def;

XFontSet font_fontset;

font_fontset = XCreateFontSet( disp, "-mona-gothic-medium-r-normal--16-*", &misss, &miss_count, &def);
}



513 名前:デフォルトの名無しさん mailto:sage [2005/07/10(日) 16:44:19 ]
それ実行してみたが、特にエラー出ないんだけど?

514 名前:493 mailto:sage [2005/07/10(日) 16:54:34 ]
はい、わたしも上記のだけですとエラーはでないです
上記のようなコードを書く際になにか注意事項のようなものはありませんでしょうか?

515 名前:デフォルトの名無しさん mailto:sage [2005/07/10(日) 16:59:04 ]
回答不能な質問するな

516 名前:デフォルトの名無しさん mailto:sage [2005/07/10(日) 17:00:43 ]
解答できないのなら書き込むな

517 名前:デフォルトの名無しさん mailto:sage [2005/07/10(日) 17:12:01 ]
真性のアホか。
そういう時はエラーが確実に発生する簡略化したコードを貼るんだ


518 名前:デフォルトの名無しさん mailto:sage [2005/07/10(日) 17:14:06 ]
>>494-496 を 150 万回くらい読みなおすこと。

通常は Xlib の関数を呼んだからといって
その時点でサーバにリクエストが投げられるのではない
(効率のためバファリングされる)
ということを頭に入れておくこと。

>>516
馬鹿は黙っていること。

519 名前:デフォルトの名無しさん mailto:sage [2005/07/10(日) 17:23:42 ]
おまえらちんこ生えてるくせになまいきいってんじゃねーよ

520 名前:デフォルトの名無しさん mailto:sage [2005/07/10(日) 19:51:47 ]
>>519
金玉も無いくせに(以下同文)



521 名前:デフォルトの名無しさん [2005/07/10(日) 22:00:59 ]
とりあえず、
X protocolは非同期メッセージを使ったprotocolで、
Xlibはその非同期メッセージを直接扱うAPIであること、
を理解してください。


522 名前:デフォルトの名無しさん mailto:sage [2005/07/10(日) 22:01:23 ]
>>519 お友達になってください。おながいします。

523 名前:デフォルトの名無しさん mailto:sage [2005/07/10(日) 22:47:03 ]
>>516の尻の穴で我慢しる

524 名前:デフォルトの名無しさん [2005/07/11(月) 17:52:50 ]


525 名前:516 mailto:sage [2005/07/11(月) 17:58:37 ]
>>522
いれて、、、、、、、、、、、
ポッ



526 名前:デフォルトの名無しさん [2005/07/11(月) 19:05:03 ]
皆さんのお知恵をかりたいのですが

OS: Linux CentOS 4

自作アプリ内からの firefox 起動/終了について

アプリには、firefox起動メッセージとパラメータとしてURLがきます。
(URLはその都度変化する)

するとアプリは
1. スレッドをDETACHEDで生成
2. "1"のスレッドで system("firefox <URL>"); を行い firefox を起動
3. syste() が終了したら、
  メインスレッドにメッセージを送信して"1"のスレッド終了

としてます。


527 名前:526 [2005/07/11(月) 19:05:29 ]
続き

アプリには複数回メッセージがきます。
その都度上記処理を実行し、これにより複数のURLに対してそれぞれ
firefoxウィンドウ が開きます。


ここで質問です、
特定のURLへの firefoxウィンドウが閉じたというアクションを自アプリ内で
どうすれば知ることが出来るでしょうか?


当初、各子スレッドが system(3)でブロックすることを期待していたのです
が firefoxは、既に起動していると既存のfirefoxプロセスにて新URLへのウ
ィンドウを開くため system(3)がすぐに終了してしまいます。

よろしくお願いします。


528 名前:デフォルトの名無しさん mailto:sage [2005/07/11(月) 19:34:37 ]
>>527
firefoxが生きている間待ちつづけるスクリプトを書くとか

529 名前:デフォルトの名無しさん mailto:sage [2005/07/11(月) 19:41:24 ]
拡張とか書かないと無理じゃないかねぇ。

530 名前:527 [2005/07/11(月) 19:56:25 ]
>>528
ちょっとイメージがわきません。
詳しく教えていただけますか?




531 名前:デフォルトの名無しさん mailto:sage [2005/07/11(月) 19:56:32 ]
systemじゃなくて fork + exec じゃだめなんか?


532 名前:527 [2005/07/11(月) 20:12:31 ]
>>531

pid_t child;

if ((child = fork()) == 0) {
  execlp("firefox", "www.linux.or.jp/", (char*)0);
}

if (child < 0) {
  goto end;
}

waitpid(child, NULL, WNOHANG);

をやったのすが、指定したURL www.linux.or.jp/ が表示されず、
また waitpid もすぐ戻ってしまいました。

どうすればいいんだろう...


533 名前:デフォルトの名無しさん mailto:sage [2005/07/11(月) 20:24:35 ]
execlpの引数合ってる?

534 名前:デフォルトの名無しさん mailto:sage [2005/07/11(月) 20:26:19 ]
> firefoxは、既に起動していると既存のfirefoxプロセスにて新URLへのウ
> ィンドウを開くため

が真実ならば、fork() & exec()で実行しようが何の解決にもならんだろ
馬鹿馬鹿しい

535 名前:デフォルトの名無しさん mailto:sage [2005/07/11(月) 21:57:58 ]
ソース読めばぁ?

536 名前:デフォルトの名無しさん mailto:sage [2005/07/11(月) 22:37:12 ]
つーか、ソフトウェア板行ったら、
誰かがその目的に合った拡張を書いてくれると思う。

537 名前:526,527 [2005/07/12(火) 13:33:12 ]
dirtyな方法でしょうが、なんとか動かすことができました。
とった手段は次の通りです。


1.スレッドでURLに対応したプロファイルを作成する
 プロファイルは既存のものでも大丈夫なようです。

  system("firefox -CreateProfile <profile>");


2."1"のプロファイルを指定し、firefox を起動
  system("firefox -P <profile> <url>");

  新規に作成したプロファイルの場合、標準エラー出力にエラー/警告がでます。


上記によりその都度 firefoxが別プロセスで起動し、子スレッドが system でブロックするようになりました。
firefoxを閉じると system から戻ります。


他に良い方法がありましたらどうぞご教授下さい。
色々考えてくれたか方々、ありがとうございました。


538 名前:デフォルトの名無しさん mailto:sage [2005/07/12(火) 20:01:45 ]
>>537
だからさー、何でソース読まないの?

539 名前:537 mailto:sage [2005/07/12(火) 20:52:14 ]
         -、            ,.-、
        ./  .\          /  ヽ
       /    ;ゝ--──-- 、._/    .|
       /,.-‐''"´          \   |
     /                ヽ、 |
    /  ●                ヽ| >>538
     l       (_人__ノ         ●   l いや、そんな事言われても
    .|  ´´    |   /            |             ワテ猫やし
     l        ヽ_/         ´´  l
    ` 、                    /
      `ー 、__              /
          `'''ー‐‐──‐┬‐‐'''""
           /      |
           /        |

540 名前:デフォルトの名無しさん mailto:sage [2005/07/12(火) 21:08:08 ]
>>539
なごんだ



541 名前:デフォルトの名無しさん mailto:sage [2005/07/14(木) 00:27:29 ]
APUEの新版買った人いる?
いたら感想聞かせて


542 名前:デフォルトの名無しさん [2005/07/17(日) 07:40:38 ]
クラスの関数でEUCの文字列をUTF-8に変換するものを作りました。
これをあるプログラムから呼ぶと正しく処理できるのに、別のプログラムから
呼ぶとiconv_open()の部分で
 iconv_open(): Invalid argument
とエラーになってしまいます。iconv_open()の引数は固定なので上記のような
エラーにはならないと思うんですが、こういうことはどういう原因で起こりえる
のでしょうか? 曖昧な質問ですみません。

2つのプログラムは同じ環境でコンパイルして動かしています。
MiracleLinux2.1 + gcc3.2.2 + glibc2.3.2です。
---
class Hoge
{
 ( ... 略 ... )
 void Hoge::UTF8deHyouji(const char*str)
 {
  ( ... 略 ... )
  iconv_t cd = iconv_open("UTF-8","EUC-JP");
  if(cd == (iconv_t)-1)){
   fprintf(stderr, "iconv_open(): %s", strerror(errno));
   return;
  }

  if(iconv(cd, &inbuf, &inleft, &outbuf, &outleft) == (size_t)-1){
   fprintf(stderr, "iconv():%s", strerror(errno));
  }
  iconv_close(cd);
  ( ... 略 ... )
 }
}
  

543 名前:デフォルトの名無しさん mailto:sage [2005/07/17(日) 09:36:49 ]
まずmainの直後でやれ
話はそれからだ

544 名前:デフォルトの名無しさん mailto:sage [2005/07/17(日) 09:39:21 ]
man iconv_open の ERRORS のセクションはご覧になってらっしゃる?


545 名前:542 mailto:sage [2005/07/17(日) 12:57:11 ]
>>543
変換部分だけを切り出して実行すると正常に動作します。
またクラスから呼び出して動作する場合もあるのです。

もともとは大きな(?)プログラムの中で使用されていたクラスで
そこではエラーになるので、クラスの関数だけ呼び出して実行
する簡単なプログラムで試したらエラーが出ないという謎の状況
です。

>>544
変換だけ行うプログラムなどでは正常に動作するので、サポートは
されていると思うのです。また、iconv -l でもEUC-JP、UTF-8がある
ことを確認しました。同じ環境でプログラムによってEINVALが返って
しまうことはあったりするのでしょうか…?



546 名前:デフォルトの名無しさん mailto:sage [2005/07/17(日) 13:57:34 ]
iconv_openの呼び出しをstraceしてみるトカ

547 名前:542 mailto:sage [2005/07/17(日) 14:40:26 ]
>>543
ふと思い立って、動かないほうのプログラムのmain()で
iconv_open() 〜 iconv_close() までの処理を書いてみたら
そこでも「Invalid argument」になってしまいました。
だんだんワケがわからなくなってきました…orz

>>546
ありがとうございます。やってみます。
(実はstrace自体知らなかったりしますが…)

548 名前:542 [2005/07/17(日) 14:53:40 ]
straceの結果、下のような行がありました。
open("/usr/lib/gconv/gconv-modules.cache", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/gconv/gconv-modules", O_RDONLY) = -1 ENOENT (No such file or directory)

動かないほうのプログラムを調べてみると、サーバプログラムなので
実行ユーザのホームにchroot()していました。試しにchrootしている
箇所をコメントアウトしたら正常に動作しました。

問題の原因は解ったのですが、iconv()を使用するプログラムでは
chrootしてはいけないということになるのでしょうか?セキュリティの
関係でここはchrootしておきたいのですが、何か良い解決策はない
ものでしょうか。

549 名前:デフォルトの名無しさん mailto:sage [2005/07/17(日) 14:57:56 ]
chrootした先にも必要なもの一式そろえてあげればいいのでは。

550 名前:デフォルトの名無しさん mailto:sage [2005/07/17(日) 15:33:21 ]
>>548
chrootの意味わかってるか?




551 名前:542 mailto:sage [2005/07/17(日) 15:35:38 ]
>>549
ホームディレクトリを基点に/usr/lib/gconvのディレクトリを掘って
丸ごとコピーしたら動きました。ありがとうございます。

552 名前:デフォルトの名無しさん mailto:sage [2005/07/17(日) 15:39:15 ]
ソースをざっと見ただけだけどchrootの前に一回iconvを呼べばそれは必要ない気がする。

553 名前:542 mailto:sage [2005/07/17(日) 15:49:42 ]
>>550
一応解っていたつもりだったのですが、iconv_open()などの
内部で行われる動作についてはなんとなく例外のような感じが
していました…

>>552
最初に生成した変換ディスクリプタを使いまわすということでしょうか。
うまく行きそうな気がするのですが、ちょっと構造が大きく変わってしまうので
別の機会に試してみたいと思います。

554 名前:デフォルトの名無しさん mailto:sage [2005/07/17(日) 15:58:15 ]
そうじゃなくて、gconvは最初に呼ばれたときに一回だけgconv-modulesを読み込んで
初期化して、それ以降はファイルアクセスしないみたいだから。

555 名前:542 mailto:sage [2005/07/17(日) 16:58:39 ]
>>554
確かに>>548のエラーもログの中で一度しかでていませんでした。
仰るとおりchrootの前にiconv_open()→iconv_close()だけ実行したら
コピーしたファイル無しでも問題なく動作しました。

これで全てすっきりです。
ご回答いただいた方々、本当にありがとうございました。

556 名前:デフォルトの名無しさん mailto:sage [2005/07/17(日) 20:02:05 ]
このスレやっぱスゲー

557 名前:デフォルトの名無しさん mailto:sage [2005/07/17(日) 20:48:13 ]
どの辺がすごいのかよくわからないのだが
ム板のほうが深い話できるだろ

558 名前:デフォルトの名無しさん mailto:sage [2005/07/17(日) 23:05:32 ]
根拠がソースだけだと気持ち悪いのでマニュアルの記述を探してきた。
英語を面倒がらず、ソース読む前にマニュアルを読むべきだったな。>自分
www.gnu.org/software/libc/manual/html_node/glibc-iconv-Implementation.html
> 6.5.4.1 Format of gconv-modules files
> ...
> At the first call of the iconv_open function the program reads all available
> gconv-modules files and builds up two tables: one containing all the known
> aliases and another that contains the information about the conversions and
> which shared object implements them.

559 名前: ◆AE4dNGZqMw mailto:sage [2005/07/21(木) 07:09:48 ]
ちょっと愚痴らせてくれや
コンソールでscreen使ってソース書いてたんだけど
Xlibを使ったコードだったから、実験するためにtwm立ち上げて
そこでscreenをデタッチしてkterm上で実行してみたわけよ、でもなぜか
セグフォるの、調べてみたら
color_black = BlackPixel( disp, 0);
これでセグフォる
どう考えてもセグフォる部分じゃない
3時間ものすごい頭使って今まで考えたわけよ
pika−−−−−−−−−−nn!!!!!!!
もしかして、screenをデタッチしてやったからコンソールのときのなんかの変数受け継いでるのかな?
で、あたらしくkterm立ち上げてashで生で実行
‥‥‥‥‥‥‥‥‥‥
いけた‥‥‥‥
ほんと、今までの3時間なんだったんだろう‥‥


ごめん、 どうしても誰かにいいたかったの‥‥

560 名前:デフォルトの名無しさん mailto:sage [2005/07/21(木) 07:33:36 ]
あるマニュアル読んでたら
フォント名はコードに直書きするんじゃなくて
.Xresourcesに書けって書いてあるんだけど
なんで? 指定フォントの決め打ちなのにわざわざ書かせなきゃいけないの?

ってか、どうやって読み込めってんだよ




561 名前:デフォルトの名無しさん mailto:sage [2005/07/21(木) 09:31:59 ]
再コンパイルすることなく、
カスタマイズすることができる

562 名前:デフォルトの名無しさん mailto:sage [2005/07/21(木) 09:45:40 ]
>>559
環境変数を確認するのはことXWindowに関しては常道。

>>560
おまいさんもXWindowに関して基礎から勉強し直した方が…

563 名前:デフォルトの名無しさん mailto:sage [2005/07/21(木) 10:58:37 ]
XWindowの基礎なんて勉強しても無駄になることうけあい

564 名前:デフォルトの名無しさん mailto:sage [2005/07/21(木) 11:09:11 ]
身に付けて無駄になる基礎なんてない。

565 名前:デフォルトの名無しさん mailto:sage [2005/07/21(木) 11:24:32 ]
Xを使う以上、基本はXを知ることだと思うんだけど
Xの知識が無駄になるってどういうことなの?
また違うWindowSystem誰か作ったの?

566 名前:560 mailto:sage [2005/07/21(木) 11:46:10 ]
ありがと

でも決め打ちだよ?
そのフォントじゃないと正しく動作しないの
それでも、やれっていうの?

567 名前:デフォルトの名無しさん mailto:sage [2005/07/21(木) 12:07:51 ]
今使ってるフォントに問題が発覚して
正しく動作する別のフォントに入れ替える必要が出てくるかもしれない。
とかね。

べつにローカルな使用だけでソースが手元にあって
いつでもコンパイルできるならなんでもいんじゃね?

568 名前:デフォルトの名無しさん mailto:sage [2005/07/21(木) 12:29:23 ]
>>565
「Xの仕事が無い」というだけのこと

569 名前:565 mailto:sage [2005/07/21(木) 19:43:12 ]
お前らの人生全て仕事なんだ・・・
寂しいね

570 名前:デフォルトの名無しさん mailto:sage [2005/07/21(木) 20:53:19 ]
>>569
お、俺を一緒にするなよな? な?



571 名前:デフォルトの名無しさん mailto:sage [2005/07/21(木) 21:11:20 ]
うーん
でも仕事以外にXって使わないからなぁ・・・

572 名前:デフォルトの名無しさん mailto:sage [2005/07/21(木) 21:58:54 ]
家ではWindows使ってるって事?

573 名前:デフォルトの名無しさん mailto:sage [2005/07/22(金) 07:56:56 ]
>>559
> もしかして、screenをデタッチしてやったからコンソールのときのなんかの変数受け継いでるのかな?

「もしかして」じゃなくて調べろよ。

for i in `env | awk -F= '{ print $1 }'`; do (unset "$i"; ./a.out); done

どうせ全然違う原因だと思うが。

574 名前:デフォルトの名無しさん mailto:sage [2005/07/22(金) 08:36:40 ]
なにがしたいのかがまったくわからん

575 名前:デフォルトの名無しさん mailto:sage [2005/07/22(金) 22:48:34 ]
単に XOpenDisplay() に失敗していたけどエラーチェックして
なくて、disp == NULL で落ちてたってだけじゃないの?


576 名前:デフォルトの名無しさん mailto:sage [2005/07/30(土) 11:01:11 ]
C/C++質問スレから誘導されてきました。

子プロセスの標準出力と標準エラー出力を親プロセスで取りたいのですが、
たまに出力を取る部分で止まってしまいます。fgetsしているところで止まっている
ので、eofがくるまで待っているのか、とも思っているのですが・・・。

子プロセスの標準出力と標準エラー出力を別に取りたいので、forkしてパイプを
つなげる必要があると認識しています。

テストでつかったソースは以下のアップローダにupしました。

kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/819.c

#main関数内で起動用のコマンド文字列を作っているのですが、
#このソースでは省略しています。

このような時、どうすればよいのでしょうか。どなたかご教授ください。

577 名前:デフォルトの名無しさん mailto:sage [2005/07/30(土) 12:05:12 ]
子側でstderrのバッファが満杯になってブロックされてんじゃないの?

578 名前:デフォルトの名無しさん mailto:sage [2005/07/30(土) 12:19:30 ]
selectかスレッドを使って読み出せ。

579 名前:576 mailto:sage [2005/07/30(土) 12:55:27 ]
アドバイスありがとうございます。

> 577さん
バッファが満杯でブロックされてる場合は578さんが書いているように
1.スレッドで満杯になる前に逐次読み出してやる
2.selectでタイムアウトを設定する
という形でしょうか。

> 578さん
スレッドはぱっと調べた結果、手に負えそうもないので、selectについて調べてみました。
selectはファイルディスクリプタが読み書き可能になるまで待機して、準備できた場合は
1以上を返す、という理解でよろしいのでしょうか。

#上記のブロックされた場合はタイムアウトでbreakする?

selectを使って色々いじってみます。

580 名前:デフォルトの名無しさん mailto:sage [2005/07/30(土) 14:49:47 ]
select(2)やってみる前に、
とりあえずstrace -p PIDを全てに試してみたらどうなのよ?
# Solarisだとtruss

ありがちなのが、bugで誰も書いてないpipeを読んでいるケース。



581 名前:576 mailto:sage [2005/07/30(土) 19:23:22 ]
> 580さん
straceですか。そのようなコマンドがあることは知りませんでした。

#ものすごい今更ですが、Linux/gcc環境なので
#straceで使えました。

早速実行してみた結果、以下のように・・・

$ strace -p 19592
write(2, "書き込みメッセージ・・・"..., 46

$ strace -p 19590
read(3,

もしかして580さんの仰るとおり読み出すpipeが違うのでしょうか。デバッグライト
では、子プロセスの書き込み先は対になる4だったのですが・・・。
メッセージを読み出せる場合の方が多かったので油断していました。

582 名前:デフォルトの名無しさん mailto:sage [2005/07/30(土) 19:37:43 ]
>>581
>>579の時点で妥当な結論が出ているので580はさくっと無視するのが吉。
どうせあなたのプログラムも読んでない。



583 名前:デフォルトの名無しさん [2005/08/02(火) 11:54:06 ]
kernel2.6系で、システムコールをフックする方法を教えて下さい。

このページには2.4での方法が書いてありますが、2.6ではうまくいかないです。
ttp://www.atmarkit.co.jp/fsecurity/rensai/rootkit03/rootkit02.html


上のページと同じように、sys_unameをフックするソースを晒して下さい!!

584 名前:デフォルトの名無しさん mailto:sage [2005/08/02(火) 11:58:37 ]
それくらい自分で調べられないお子ちゃまはおいたしちゃダメ。


585 名前:デフォルトの名無しさん mailto:sage [2005/08/02(火) 12:37:43 ]
>>583
LKM rootkit のソース読めばいいじゃん。

586 名前:デフォルトの名無しさん mailto:sage [2005/08/02(火) 17:30:35 ]
>> 585

kernel2.6では、結構大変そう。。。
カーネルのバージョン毎にrootkitの対応状況が異なる。

最新版カーネルで、フック&晒しよろろ。

2.6全般のシステムコールをフックするrootkitがあれば、教えてください。

587 名前:デフォルトの名無しさん mailto:sage [2005/08/02(火) 19:24:43 ]
>>586
いや、だから自分で読めよ。

588 名前:デフォルトの名無しさん mailto:sage [2005/08/04(木) 02:23:45 ]
>>586

straceは、すべて(!?)のシステムコールをフックしてるんじゃないか?

よくしらんがね。

589 名前:デフォルトの名無しさん mailto:sage [2005/08/04(木) 15:55:42 ]
このスレッドの576で質問させていただいたものですが、また
お知恵を拝借させていただけないでしょうか。

SolarisとLinuxではforkしてexeclpしたときの振る舞いが違う、
という現象で悩んでいたのですが、どうやらshの違いではないかと
いうところまで突き止めました。

Linuxの場合、shはbashのシンボリックリンクになっていて、-cでコマンド
起動をするとpidはshと同一になるのですが、Solarisですとshとコマンドが
別のpidになります。

Solarisではforkの返り値のpidでkillしてもコマンドは別pidなので殺せない
ようなのです。

Solarisのshでbashと同じ動作をさせるか、何とかして孫(sh->コマンド)のpid
を取ってきてkillする方法はありませんでしょうか?。

> 582さん
アドバイスありがとうございます。selectでうまく動作させることができました。

#まとめをUPしようかとも思ったのですが、2chでは一般的ではない行為です?

590 名前:デフォルトの名無しさん mailto:sage [2005/08/04(木) 16:09:35 ]
>>589
いろいろ方法はないではないけどね。
ps出力相当の情報を拾ってきて、ppidがshのpidのプロセスを探すとか。
そもそも、なんでexeclp()でshを動かすのかが問題かな。
シェルを経由しないで直接動かせばいいじゃんと思うわけだ。
killハンドラで子供を殺すプロセスを中継に使うって手もあると思うし。
#まとめは歓迎。この件だけでもこのスレ全部でも、すきなだけやっちゃってくださいw
##で、アップロードはアップローダかどこかに。



591 名前:デフォルトの名無しさん mailto:sage [2005/08/04(木) 17:39:38 ]
>>588
んなことはない。
共通の入口と出口を抑えているだけでつ。

592 名前:デフォルトの名無しさん mailto:sage [2005/08/04(木) 21:50:42 ]
>>591
ltraceなんかは純然たるwrapperだわな。

>>589
sh -c 'exec command args'してみれば?

593 名前:デフォルトの名無しさん [2005/08/05(金) 16:12:11 ]
>>589
fork() したら、子プロセスの最初で setsid()して新しいセッション/プロセスグループを作成する。
こうすると kill(-pid, SIGTERM)とかでそのプロセスグループに対して killすることがでけるよ。

こんな感じ

  child = fork();
  if (child == 0) {
    setsid();
    execlp(〜);
  }

  〜〜
  kill(-child, SIGTERM);

自作アプリで Firefoxをexec、killしたい時にやりました。


594 名前:デフォルトの名無しさん mailto:sage [2005/08/05(金) 17:10:50 ]
>>592
ltraceはwrapperじゃないよ。
stepモードで実行して、libcの関数の先頭アドレスにjumpした瞬間を拾って
スタック先頭から引数を拾って表示している。だから死ぬほど遅い。

wrapperにすると可変長引数に対応できないからな。

595 名前:デフォルトの名無しさん mailto:sage [2005/08/07(日) 02:07:29 ]
現在実行している環境が32ビットか64ビットか判別する方法を教えてください。

596 名前:デフォルトの名無しさん mailto:sage [2005/08/07(日) 02:29:14 ]
>>595
すべてのUNIXで共通して判別できる方法はありません

597 名前:デフォルトの名無しさん mailto:sage [2005/08/07(日) 02:36:17 ]
>>595
intの最大値を調べてみたら?

598 名前:デフォルトの名無しさん mailto:sage [2005/08/07(日) 02:38:21 ]
ILP64かもしれないし

599 名前:デフォルトの名無しさん mailto:sage [2005/08/07(日) 02:39:03 ]
違った
LP64かもしれないし(つーか普通そう)

600 名前:デフォルトの名無しさん mailto:sage [2005/08/07(日) 03:16:51 ]
sizeof(void*)
sizeof(long)
sizeof(int)
の結果を見て好きなように解釈すれ



601 名前:デフォルトの名無しさん mailto:sage [2005/08/07(日) 03:22:37 ]
お前らアホか?
CPUのことだろ?
dmesgでCPUみたらいいだろ

602 名前:デフォルトの名無しさん mailto:sage [2005/08/07(日) 03:26:28 ]
スレのテーマ的には実行中のプログラムが自分で判断する方法ということでは?

603 名前:デフォルトの名無しさん mailto:sage [2005/08/07(日) 03:27:20 ]
>>595
実行してる環境の「何が」32ビットか64ビットかによって判定法が異なる。

604 名前:デフォルトの名無しさん mailto:sage [2005/08/07(日) 03:55:47 ]
目的に応じてautoconfのマクロを自分で書けばよかろ


605 名前:デフォルトの名無しさん mailto:sage [2005/08/07(日) 04:34:51 ]
>>601
OSが64bitであろうと32bitであろうと、
実行環境のbit数は関係ないだろう。emulatorかもしれないんだし。

606 名前:デフォルトの名無しさん mailto:sage [2005/08/07(日) 12:28:22 ]
>>601
そもそも dmesg が入っているとは限らない。


607 名前:デフォルトの名無しさん [2005/08/07(日) 12:47:21 ]
uname -aはどうでしょう?

608 名前:デフォルトの名無しさん mailto:sage [2005/08/07(日) 13:02:41 ]
CPUを見ても32bitか64bitかなんて決定できないだろ。
両方のバイナリを実行できるOSもあるし。
>>600,603あたりがFAじゃねーの。


609 名前:デフォルトの名無しさん mailto:sage [2005/08/07(日) 13:06:00 ]
なんで600が?

610 名前:デフォルトの名無しさん mailto:sage [2005/08/07(日) 13:16:35 ]
>>609
結局603を間がえたあと
www.opengroup.org/public/tech/aspen/lp64_wp.htm
見たいな感じで600のようなことをすることになるわけで。



611 名前:デフォルトの名無しさん [2005/08/07(日) 14:11:01 ]
select() システムコールはどのような時に使用するのでしょうか?
簡単な解説があるサイトを紹介していただいても結構です。


612 名前:デフォルトの名無しさん mailto:sage [2005/08/07(日) 14:13:02 ]
www.linux.or.jp/JM/html/LDP_man-pages/man2/select.2.html

613 名前:sage [2005/08/07(日) 14:17:31 ]
ありがとうございます。
例をもとに、動作検証してみます。

614 名前:デフォルトの名無しさん mailto:sage [2005/08/07(日) 14:18:12 ]
>>611
ひとつのスレッドで同時に複数I/Oを実行したいとい

615 名前:sage [2005/08/07(日) 14:37:06 ]
ありがとうございます。>> 614
サンプルとか例などはありませんでしょうか?

616 名前:デフォルトの名無しさん mailto:sage [2005/08/07(日) 14:45:35 ]
www.linux.or.jp/JM/html/LDP_man-pages/man2/select_tut.2.html

617 名前:デフォルトの名無しさん [2005/08/07(日) 14:51:05 ]
selectの掟とかあって、難しそうですが、
理解できるように努力してみます。
ありがとうございました。>> 614 616

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