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を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。