UNIXプログラミング質問すれ Part9
- 1 :デフォルトの名無しさん:2008/03/18(火) 08:10:34
- UNIXおよびUNIX clone環境一般のプログラミングに関する質問スレッド
前スレ
Part8 http://pc11.2ch.net/test/read.cgi/tech/1147946176/
Part7 http://pc8.2ch.net/test/read.cgi/tech/1127373405/
Part6 http://pc8.2ch.net/test/read.cgi/tech/1116908090/
Part5 http://pc8.2ch.net/test/read.cgi/tech/1105723117/
Part4 http://pc5.2ch.net/test/read.cgi/tech/1095843584/
Part3 http://pc5.2ch.net/test/read.cgi/tech/1085930894/
Part2 http://pc5.2ch.net/test/read.cgi/tech/1055110889/
Part1 http://pc2.2ch.net/tech/kako/992/992057422.html
Part3のミラー
http://makimo.to/2ch/pc5_tech/1085/1085930894.html
Part2のミラー
http://makimo.to/2ch/pc5_tech/1055/1055110889.html
- 2 :デフォルトの名無しさん:2008/03/19(水) 11:09:35
- タイムゾーンって取得できますか?
- 3 :デフォルトの名無しさん:2008/03/19(水) 11:19:24
- >>2
getenv("TZ")で取れない?
- 4 :デフォルトの名無しさん:2008/03/19(水) 13:31:11
- 実行ファイルのディレクトリとれますか?
gccで、ディレクトリパスのデリミタは環境変数になっていますか?
- 5 :デフォルトの名無しさん:2008/03/19(水) 13:42:19
- >>4
> 実行ファイルのディレクトリとれますか?
Linuxだったらreadlink("/proc/self/exe", ...)で。一般的な方法はない。
> gccで、ディレクトリパスのデリミタは環境変数になっていますか?
C/C++でのことなら、ないと思う。UNIXなら固定でいいんじゃない?
- 6 :4:2008/03/19(水) 13:58:41
- thx!
>実行ファイルのディレクトリ
>>Linuxだったらreadlink("/proc/self/exe", ...)で。
BSDだとどうなりますk?
>gccで、ディレクトリパスのデリミタは環境変数
>>C/C++でのことなら、ないと思う
ifdef + define するしかないですか。
でもそういった、ヘッダーファイルとか、オプソでありそうな。。。
- 7 :4:2008/03/19(水) 15:33:33
- >>Linuxだったらreadlink("/proc/self/exe", ...)で。
POSIX準拠だったので使えることは分かりましたが、使い方が分かりません。
先頭の引数は何なのか?_?
- 8 :デフォルトの名無しさん:2008/03/19(水) 15:53:34
- 先頭の引数は "/proc/self/exe" だよ。この名前が Linux 依存なわけです。
BSD では一般解はないと思う。NetBSD だと Linux と同じ手が使えるみたい。
http://www.adl.nii.ac.jp/~moro/unix-programmer/faq-j_2.html#SEC23
- 9 :4:2008/03/19(水) 16:01:20
- >>8
それ、良いリンクですね。
Mac OS X だと、"/proc/self/exe"ではうまくいきませんね。
argv[0]を見ようとしたらwxWidgetsでmainが見れなかったorz
- 10 :4:2008/03/19(水) 16:11:38
- wxApp:argv[0]で、実行ファイルのフルパス取れました。
これで余韻だろうか。
- 11 :デフォルトの名無しさん:2008/03/20(木) 01:57:42
- 調べれば資料がありそうなことはきちんと資料を調べた方がいいよ。
プログラミングは迷路を突破するみたいに手探りでやるものじゃない。
そうやって書かれたプログラムを他の環境でも問題なく動くと考えるのは、
ある迷路を突破した道順が他の迷路でも通用すると期待するくらい無謀。
- 12 :デフォルトの名無しさん:2008/03/21(金) 09:50:00
- ↑
ウゼー
- 13 :デフォルトの名無しさん:2008/03/21(金) 22:57:54
- そして>>12は小一時間怒りを噛みしめた後、
自演を思いつきMac板へ向かったのである。
- 14 :デフォルトの名無しさん:2008/03/23(日) 17:13:16
- OSが32bit版でも64bit版でも実行結果って変わらないの?
64bit版を使う利点はメモリが4GB以上使えることくらい??
- 15 :デフォルトの名無しさん:2008/03/23(日) 19:54:19
- メモリがというよりアドレス空間が。
- 16 :デフォルトの名無しさん:2008/03/23(日) 20:05:29
- >>13
ワラタw
Mac 板で似た質問を見たと思ったら、ここ由来だったのね。
>>14
LP64 環境だと仮定して、、、
long が 64bit になっても良い様に書いていれば結果は変わらない
x86 だと仮定して、、、
レジスタが増えるから多くの場合で 64bit の方が速いという利点もある
勿論デメリットもある
- 17 :デフォルトの名無しさん:2008/03/27(木) 09:30:24
- AnsiToUnicode(UTF-8)/UnicodeToAnsi
みたいな関数はありますか?
- 18 :デフォルトの名無しさん:2008/03/27(木) 09:38:56
- >>17
POSIX的には無いかと。
ICUでも使うといいよ。
- 19 :17:2008/03/27(木) 09:59:45
- >>18
へぇ〜、こんな複数OSで使えるものがあったんだ。
知らないと目茶目茶な実装するとこだった。
- 20 :デフォルトの名無しさん:2008/03/27(木) 19:07:07
- ICUって簡単に使えますかぁ?...
- 21 :デフォルトの名無しさん:2008/03/27(木) 21:30:20
- あなたの頭では無理です。集中治療が必要です。
- 22 :デフォルトの名無しさん:2008/03/28(金) 00:46:46
- エンコーディング変換ぐらいなら簡単よ。
- 23 :20:2008/03/28(金) 08:46:28
- >>22
サンプルコードきぼんorz
- 24 :デフォルトの名無しさん:2008/03/28(金) 12:50:14
- ucnv_frommUChars ucnv_toUChars でぐぐってみるのだ。
- 25 :デフォルトの名無しさん:2008/03/28(金) 15:29:59
- ttp://beubeubeu.exblog.jp/4199356/
ttp://www.emaki.minidns.net/Programming/tools/icu/index.html
みつけますた。
- 26 :デフォルトの名無しさん:2008/03/28(金) 16:48:43
- >UConverter *pConverter = ucnv_open("EUC-JP", &error);
ucnv_openの引数で、"windows-31j"、"shift_jis"、"EUC-JP"といった文字が指定されていますが、
この一覧はどこにあるのでしょう?
ソース全文検索かけても出てきませんが???
- 27 :26:2008/03/28(金) 17:12:05
- ついでに、iconv_openの引数の文字列一覧も教えて下さいorz
- 28 :デフォルトの名無しさん:2008/03/28(金) 17:41:45
- iconv -l
- 29 :26:2008/03/28(金) 17:55:40
- >>28
そのコマンド打ってみて分りましたが、
OSが文字コードに関する情報(のファイル)を持っていて、
それによって変換可能な文字コードかどうか決まるわけですね。
BSD だとして、GUIアプリが受け取る文字コードが何か取得する方法を教えてください。
環境変数なのかなぁ?
- 30 :デフォルトの名無しさん:2008/03/28(金) 18:13:50
- >>29
nl_langinfo(CODESET) だったような、たしか
- 31 :26:2008/03/28(金) 18:19:08
- 超サンクス>>30
ありましたヽ(゚∀゚)ノ
ttp://www.linux.or.jp/JM/html/LDP_man-pages/man3/nl_langinfo.3.html
あ〜、これでやっとコーディングに入れますorz
- 32 :デフォルトの名無しさん:2008/03/28(金) 22:03:28
- >>31
マルチ乙
しかも>>4と同一人物
- 33 :デフォルトの名無しさん:2008/04/06(日) 16:42:26
- UNIXで2D(スプライトのようなもの)を高速描画しようとしたら何を使えばよいのでしょうか?
- 34 :デフォルトの名無しさん:2008/04/06(日) 16:52:16
- SDL
- 35 :デフォルトの名無しさん:2008/04/07(月) 09:06:19
- 言語はC/C++を考えております.
HDDの使用量や全容量を取得したいのですがどのようにすればよいのでしょうか?
(dfみたいな機能があればなおさらいいです.)
- 36 :デフォルトの名無しさん:2008/04/07(月) 09:21:34
- dfのソースを見るか、systemでdfを実行して結果を取得
- 37 :デフォルトの名無しさん:2008/04/07(月) 11:24:59
- >>36
いいこと教えてあげよう。OSにもよるだろうが、
man dfするとSEE ALSOに関連システムコールが書いてあったりもするもんだ。
- 38 :デフォルトの名無しさん:2008/04/07(月) 12:46:15
- >>37
書いてなかった
- 39 :デフォルトの名無しさん:2008/04/07(月) 13:06:39
- そりゃ残念だったな
NetBSD, Solaris, FreeBSD, HP-UX, Darwin は書いてあった
- 40 :デフォルトの名無しさん:2008/04/07(月) 13:28:07
- 全部同じsystem call?
なんていう奴?
- 41 :デフォルトの名無しさん:2008/04/07(月) 16:46:33
- statfs(2), fstatfs(2)
- 42 :デフォルトの名無しさん:2008/04/07(月) 16:59:43
- >>41
ありー
- 43 :デフォルトの名無しさん:2008/04/10(木) 17:45:11
- doubleは64ビットですか?
- 44 :デフォルトの名無しさん:2008/04/10(木) 17:56:45
- printf("%d\n",sizeof(double)) の結果を貼っていただければ答えられます(^-^)
- 45 :デフォルトの名無しさん:2008/04/10(木) 18:25:17
- いまどき浮動小数点形式がIEEE 754じゃない環境は
まず存在しないから、64bitでおk。
- 46 :デフォルトの名無しさん:2008/04/10(木) 22:01:10
- が、そのうち時代は変わるかも知れない。
そのときそのプログラムが使われ続けていないとも限らない、というのがY2Kの教訓。
- 47 :デフォルトの名無しさん:2008/04/10(木) 22:40:42
- charは8bitと仮定しちゃダメだよね
- 48 :デフォルトの名無しさん:2008/04/10(木) 22:49:57
- CHAR_BIT を使うのは常識たい。
- 49 :デフォルトの名無しさん:2008/04/11(金) 09:37:44
- >>47
char が16bitのものは今でもある。
- 50 :デフォルトの名無しさん:2008/04/11(金) 09:38:23
- それって、wchar、じゃなくて?
- 51 :デフォルトの名無しさん:2008/04/11(金) 09:43:40
- >>50
そう。CHAR_BIT = 16ということ。
- 52 :デフォルトの名無しさん:2008/04/11(金) 18:01:33
- CHAR_BIT が 9 はよく聞くね
- 53 :デフォルトの名無しさん:2008/04/13(日) 06:53:13
- pid_t型をprintfで表示したいのですが、どのようにすればよいのでしょうか?
- 54 :デフォルトの名無しさん:2008/04/13(日) 08:27:44
- %u
- 55 :デフォルトの名無しさん:2008/04/13(日) 11:16:21
- UNIX プログラミングからは外れているかもしれませんが,
一番近そうな質問スレッドなので質問させていただきます.
共有ライブラリの動的リンクについての質問です,
CentOS 5.1 でシステム標準の GCC 4.1.1 とは別に,GCC 4.2.3, 4.3.0 を /usr/local 以下にインストールしています.
gcc-4.2.3 のライブラリは /usr/local/lib/gcc-4.2.3 に,
gcc-4.3.0 のライブラリは /usr/local/lib/gcc-4.3.0 にインストールしています.
以下のように GCC 4.3.0 でライブラリを指定してコンパイルします.
gcc43 -Wall -O2 -c -fopenmp omp-test.c -o omp-test.o
gcc43 -Wall -O2 -lgomp omp-test.o -o omp-test.parallel
出来上がった実行バイナリ omp-test.parallel を ldd すると,
linux-gate.so.1 => (0x00110000)
libgomp.so.1 => /usr/local/lib/gcc-4.2.3/libgomp.so.1 (0x00111000)
libc.so.6 => /lib/libc.so.6 (0x00565000)
librt.so.1 => /lib/librt.so.1 (0x00df3000)
libpthread.so.0 => /lib/libpthread.so.0 (0x00702000)
/lib/ld-linux.so.2 (0x00546000)
と,GCC 4.2.3 のライブラリ依存となってしまいます.
同名のライブラリがある場合,
ldconfig で認識されている共有ライブラリで,一番上にあるものが使用されているようです.
コンパイル時に GCC のバージョンに合わせてライブラリを指定して,
実行時に GCC のバージョンに合ったライブラリをロードする方法をご存知の方はいませんか?
$ ldconfig -p|grep libgomp
libgomp.so.1 (libc6) => /usr/local/lib/gcc-4.2.3/libgomp.so.1
libgomp.so.1 (libc6) => /usr/local/lib/gcc-4.3.0/libgomp.so.1
libgomp.so.1 (libc6) => /usr/lib/libgomp.so.1
libgomp.so (libc6) => /usr/local/lib/gcc-4.2.3/libgomp.so
libgomp.so (libc6) => /usr/local/lib/gcc-4.3.0/libgomp.so
- 56 :デフォルトの名無しさん:2008/04/13(日) 11:26:46
- -Lで優先したいライブラリのパス指定したら?
最悪libgomp.aをstatic linkしてしまえばいい。
ただ結構コンパイラのバージョン依存なのでそこんとこは注意。
- 57 :55:2008/04/13(日) 13:15:26
- >>55 を書いたときには,コンパイル時に
実行バイナリに,ロードするライブラリのパスが記録されると勘違いしていたのですが,
実際には,コンパイル時には "libgomp.so.1" という情報が記録されるだけのようです.
実行時にロードするライブラリのパスは,
実行時に ldconfig で認識されているライブラリの中から上から順に同名の物を探して決定しているようです.
>>56
どうもありがとうございます.
コンパイラに合うバージョンの libgomp.a を静的にリンクするのが
一番安全そうなので,そうすることにします.
- 58 :デフォルトの名無しさん:2008/04/14(月) 00:36:44
- >>57の前半部分
-R(コンパイル時)や
LD_LIBRARY_PATH環境変数(実行時)で指定できる。
- 59 :55:2008/04/14(月) 08:15:00
- >>58
どうもありがとうございます.
おかげで動的にリンクする場合も安全に実行できるようになりました.
- 60 :デフォルトの名無しさん:2008/04/14(月) 09:47:57
- スタティックリンクライブラリを使いたいのですが、どうすればいいですか
- 61 :デフォルトの名無しさん:2008/04/14(月) 10:48:47
- make作業にコンパイルとリンクがあるが、
リンク作業で直接指定してリンクする。
- 62 :デフォルトの名無しさん:2008/04/14(月) 23:12:11
- Cシェルで質問
あるディレクトリのファイルを検索して、該当するファイルの先頭4桁を使って、
テキストからその4桁に対応する文字列を持ってきたいとする。
↓この"key"に検索したいファイル名の文字列を入れる。
set READKEY = `ls -l | grep key | awk '{print $9}' | cut -c1-4`
テキストから文字列を持ってくるところまではできたんだけど、
その文字列を一行づつ編集する方法がわからない、おしえて!
↓持ってきた文字列
aaaa
cccc
bbbb
一行づつ表示させるためにheadコマンドとtailコマンドを使った。
ループと、headコマンドで行数をインクリメントするのかなと。
ただ、それだとループの上限で最大行数の数を使う事になるんだろうけど、
行数を出す方法もわからないんだ
- 63 :デフォルトの名無しさん:2008/04/14(月) 23:20:26
- おとなしくperlでもつかっとけ。
- 64 :62:2008/04/14(月) 23:25:40
- >>63
>>62はパールだとできて、Cシェルだとできないもの?
シェルってなんでもできそうな印象だったんだけどなー
最近初めて面白くなってきたよ
- 65 :デフォルトの名無しさん:2008/04/14(月) 23:32:45
- なぜ底辺はcshが好きなんだろう?
- 66 :デフォルトの名無しさん:2008/04/15(火) 00:07:13
- >>62
shで。
ls -l | grep key | awk '{print $9}' | cut -c1-4 | while read l; do
# $lに対してやりたいこと
done
- 67 :62:2008/04/15(火) 00:16:37
- >>65
cshちゃんを悪く言わないで下さい
>>66
Bシェル?そんな簡単なのか
試してみる。ありがとー!
- 68 :デフォルトの名無しさん:2008/04/15(火) 07:14:32
- 特に宗教的理由が無いなら shell script は csh より bsh で組みなさい
- 69 :デフォルトの名無しさん:2008/04/15(火) 07:17:38
- ところで、
Csh Programming Considered Harmful
って今はもうみえないんだっけ?
- 70 :デフォルトの名無しさん:2008/04/15(火) 11:25:24
- ググったら一発だった
- 71 :デフォルトの名無しさん:2008/04/16(水) 09:39:29
- unixの考え方の1つとしてよく言われる、「1つのことをうまくやれ」というやつについて。
具体的に1つ(1機能)ってのはどの程度のものなんでしょうか。
例えば今のlsって、詳細情報出したり、変更日付順にソートできたり、全然単機能
じゃないと思うんですけど。原則と現実のギャップというやつですか?
- 72 :デフォルトの名無しさん:2008/04/16(水) 09:57:01
- >>71
> unixの考え方の1つとしてよく言われる、「1つのことをうまくやれ」というやつについて。
ファイルの内容をいじれるわけではないし, ディレクトリに対して操作ができる
わけでもないでしょ?
ディレクトリの内容をリスト表示するって事に特化していて, そのことに関して
だけはとてもうまくやっていると思うのだけど...
- 73 :デフォルトの名無しさん:2008/04/16(水) 10:33:05
- 例えばMS-DOSのDIRと比べてみると、
「〜バイトのファイルがあります」
「〜バイトが使用可能です」
とか勝手に付け加えたりしないのがUnix流。
もっとも、出力先が端末だったら複数カラムで表示したりする、とか
そういう機能は良くない、とみる向きもあるけどね。
("Program Design in the UNIX System Environment.")
- 74 :デフォルトの名無しさん:2008/04/16(水) 13:10:10
- >>71
更新日時順でソートなんてlsにやらせなかったら何使ってやるのさ。
- 75 :デフォルトの名無しさん:2008/04/16(水) 13:28:48
- >>73
ls -lもtotal出すよなあ、あれ出力使う時に余分。
tail +2しないといけない。
- 76 :デフォルトの名無しさん:2008/04/16(水) 13:41:33
- ところで >>62 の ls -l | ... | awk って、
ls -1 じゃダメなん?
- 77 :デフォルトの名無しさん:2008/04/16(水) 22:05:33
- >>71
UNIXの思想は基本的にミニマリズムでは無いと思う
djb tools はUNIX的なのか?
Perl は UNIXで広く受け入れられたが、これは異端なのか?
- 78 :デフォルトの名無しさん:2008/04/16(水) 22:40:22
- UNIXのプログラムは何にせよメールが読めるまでに肥大化する
- 79 :デフォルトの名無しさん:2008/04/16(水) 23:44:28
- メールの読めるlsはどこにありますか?
- 80 :デフォルトの名無しさん:2008/04/16(水) 23:58:18
- 逆に考えるんだ。
lsもcdもEmacsの中にあるんだ、と。
- 81 :デフォルトの名無しさん:2008/04/17(木) 00:00:07
- vi使いが来るぞー!
- 82 :デフォルトの名無しさん:2008/04/17(木) 00:10:59
- ls -tr ~/Mail/inbox/ | tail -1 | xargs view
- 83 :デフォルトの名無しさん:2008/04/17(木) 00:16:45
- MHですやん
- 84 :デフォルトの名無しさん:2008/04/17(木) 08:44:17
- >>77
小さいものは美しい、ってのはミニマリズムじゃないの?
- 85 :デフォルトの名無しさん:2008/04/17(木) 10:16:41
- >>78
それ元ネタ確かMITで開発されてるプログラムは、だった希瓦斯
- 86 :高野光弘問題:2008/05/20(火) 21:40:45
- Takano32,TAKANO Mitsuhiroこと高野光弘(日立製作所社員、日本UNIXユーザ会幹事)が
『32nd Diary』で「真性キチガイ」と障害者差別発言。さらに、2007年4月の入社後は、日立の機密も漏洩。
公益のため告発するも改善されないので、日立製作所に通報。
回答
「高野光弘という社員は存在する(本人は「嘘」と否定していた)
現在、管轄する部署が調査中
障害者差別発言に関しては許されるものではない」
また、漫画家鈴木健也による教祖様のようなひげの似顔絵を湮滅していたことも発覚。
これからどうすべきか、自分の頭で考えてくれることを期待します。
http://taka.no32.tk/diary/
- 87 :デフォルトの名無しさん:2008/05/27(火) 15:33:16
- >struct timeval tv;
の値って、
doubleの変数に入出力できたりしますか?
- 88 :デフォルトの名無しさん:2008/05/30(金) 00:26:33
- はい
- 89 :デフォルトの名無しさん:2008/06/01(日) 17:58:49
- > ムー板に書きましたが、誰も相手にしてくれません:
http://pc11.2ch.net/test/read.cgi/unix/1127388574/211-221
- 90 :デフォルトの名無しさん:2008/06/02(月) 08:47:43
- ↑
おめ、今頃それ貼ってもおせーよ!
プゲラッチョwww
- 91 :高野光弘問題:2008/06/11(水) 23:18:10
- takano32,TAKANO Mitsuhiroこと高野光弘(日立製作所社員、日本UNIXユーザ会幹事)が、
自身の『32nd diary』で公然と日立の機密を開示し、障害者差別発言をしている問題。
1981年11月12日 千葉県のディズニーランドのそばで誕生
2001年4月1日 千葉大学に入学
2005年4月1日 千葉大学大学院へ進学、日本UNIXユーザ会に入会
2007年4月1日 日立製作所に入社、神奈川県秦野市の寮へ
2007年8月22日 「ついに職場で人が倒れた」と公表
2007年11月13日 「情報漏えい」を言う上司に「死んだほうがいいよ」と暴言
2007年12月28日 「社内システムクソうんこ」と発言し、仕組みも暴露
2008年5月23日 機密漏洩問題について一応の謝罪
2008年5月26日 「給料泥棒とかうんぬん言われた」と謝罪を忘れて告白
2008年5月27日 「心バキバキ川田くん」と前日の発言者の名前を公言
2008年5月31日 「キチガイ」と日立のユーザーに障害者差別発言を連発
2006年10月27日(日立製作所に入社前に忠告されたこと)
「日記やコメントの投稿日時から勤務時間に業務外のことをしていることが判明」は
某社の某親会社が 2ch で祭られたように、NG です。
6月も勤務時間中に更新し続ける高野光弘君の『32nd diary』にツッコミをどうぞ
- 92 :デフォルトの名無しさん:2008/06/14(土) 13:44:09
- forkして子プロセスを作ってるんですが、
親プロセスから子プロセスの生存確認する方法ってありますか?
- 93 :デフォルトの名無しさん:2008/06/14(土) 13:46:39
- kill(2)しろ。
signal番号0で。
- 94 :92:2008/06/14(土) 13:56:40
- >>93
- 95 :92:2008/06/14(土) 13:57:10
- ↑間違い。すいません
>>93
- 96 :92:2008/06/14(土) 13:58:44
- >>93
ありがとうございます。
なんとなくやり方がわかった気がします。
- 97 :デフォルトの名無しさん:2008/06/14(土) 23:23:50
- SIGCLDをトラップしろ
- 98 :デフォルトの名無しさん:2008/06/15(日) 02:19:44
- >>97ある時に知る方法じゃなくて、
ずっと管理しておく方法。
- 99 :デフォルトの名無しさん:2008/06/15(日) 16:14:29
- >>98
俺もそう思ったが、別に97でもいいんじゃないのかな。
ある時にある子プロセスが生きてるか知ろうとするプログラムならば
当然pidを含む子プロセスの情報を保持しているわけで。
- 100 :98:2008/06/15(日) 16:36:19
- 悪いと言っているのではなく解説したまで。
質問するような人がすぐに理解できるとは限らないので。
- 101 :デフォルトの名無しさん:2008/06/17(火) 22:28:52
- 質問です。書籍『Understanding Unix/Linux Programming』の49ページ、
utmp構造体のutmpメンバ(time_t型)を受け取り、整形して表示する関数なんですが、
void showtime(long timeval)
{
char *cp;
cp = ctime(&timeval);
printf("%12.12s", cp+4);
}
このコードの書き手(著者)が、仮引数の型をtime_tでなくlongにした意図としては
どのようなものが考えられるでしょうか?
自分にはtime_tの実際の型に依存した良くないコーディングに見えますが、
何か特別な理由があるのではと思って質問しました。よろしくお願いします。
- 102 :高野光弘事件:2008/06/18(水) 01:14:04
- takano32,TAKANO Mitsuhiroこと高野光弘
(26歳、日立製作所エンタープライズサーバ事業部(秦野地区)社員、日本UNIXユーザ会幹事)が
自身の『32nd diary』で公然と日立の機密を開示し、障害者差別発言をしている問題が、とうとう事件になった模様。
2chで祭られて、さらに自分から燃料投下するなんて。誰か彼の凶行を止めてくれることを願って張ります。
2008-6-14 予告 心バキバキ川田くんを殺します。
2008-6-15 日本の警察をみた。いつも行動力がないと言われている日本の警察ですが、今日は変な行動力をみた。
理不尽で半端な行動力なので、もう少しガイドラインを固めないとダメだと思った
(現場の人は悪くないので、上がきちんとしろ、という意味)。 予告.in 予告.out 事情を話し、くだんの書き込み元IPアドレスなどを回答した。
理不尽なのは、あなたが公然と書いた「殺します」、「死んだほうがいいよ」、「クソ」、「うんこ」、「バカ」、「キチガイ」という発言と、
公共の場で自分から個人情報と機密を公開しているのに、文句を言うということなのではないでしょうか?
1946年12月19日生まれのお母さん、釣りが趣味のお父さん、二人のお姉さん、高校の同級生で漫画家の鈴木健也さん、どうか彼を止めてください。
日立グループの方、日本UNIXユーザ会の方、公益のためにもお願いします。
誰か『32nd diary』での高野光弘君の凶行を止めてください。
- 103 :101:2008/06/21(土) 02:11:33
- >>101
> utmp構造体のutmpメンバ(time_t型)
utmp構造体のut_timeメンバ(time_t型)の間違いでした。
あれこれ考えた結果、time_tがdoubleとして定義されている可能性もなくはないので
(K&Rやmanには算術型としか記されてない)
void showtime(time_t timeval)
{
printf("%12.12s", ctime(&timeval) + 4);
}
のようにtime_tはtime_tのままでctimeに渡したほうがいいという結論に落ち着きました。
しばらくROMってきます。失礼しました。
- 104 :デフォルトの名無しさん:2008/06/24(火) 07:13:39
- まあ、time_t 使うのがいいと思う
でも現実を知ってると long でもいいやってなるとも思う。
スタイルにどこまでこだわるかどうか、だね
http://ja.wikipedia.org/wiki/2038%E5%B9%B4%E5%95%8F%E9%A1%8C
> C言語の規格を定めた「ISO/IEC 9899:1999」では、time_t型の範囲や精度は
> いずれも処理系依存としているが、[2]time_t型は、伝統的には符号つき32ビット
> 整数(signed long int型)であり、最大値は (231 - 1) = 2,147,483,647 となる。
- 105 :101:2008/06/24(火) 23:23:59
- レスありがとうございます。
>>101-102とか自分で書いていて理屈っぽいなとは思ってました。
今後はそのあたりの現実や伝統と折り合いをつけてコードを書くことにします。
- 106 :101:2008/06/24(火) 23:25:47
- 訂正、102は書いてません。>>101, 103です
スレ汚してすいませんでした。ROMに戻ります orz
- 107 :デフォルトの名無しさん:2008/07/09(水) 10:48:42
- 便乗なのですが
time_t hoge = time(NULL);
とするのと
time_t hoge;
time(&hoge);
するのと
どちらが良いのでしょう?
- 108 :デフォルトの名無しさん:2008/07/09(水) 11:25:52
- どっちでもいいと思う。
しかし、time()は何でこんな妙な仕様なんだろ。
- 109 :デフォルトの名無しさん:2008/07/09(水) 11:28:37
- #include <time.h>
int main(int ac, char **av){
time_t hoge;
time_t fuga;
time(&hoge);
fuga = time(NULL);
printf("%d, %d\n", hoge, fuga);
return 0;
}
どっちでもいいぜ
昔は time_t hoge = time(NULL); が出来なかったんだと思う。
- 110 :デフォルトの名無しさん:2008/07/09(水) 14:35:15
- >>16のデメリットって何?
- 111 :デフォルトの名無しさん:2008/07/09(水) 17:40:02
- 主にポインタサイズが大きくなるので、
・メモリ消費が多くなる
・メモリアクセスにかかる時間が増える
- 112 :デフォルトの名無しさん:2008/07/09(水) 17:57:09
- そんなもんクロックでどうにでもなるっしょ
32で動かしてたら、その機能は生かせなくて速度が上がらないんだし
- 113 :デフォルトの名無しさん:2008/07/09(水) 18:33:46
- >>112
後半はその通りなんだが...
メモリーバンド幅ってのは、その時旬のメモリに依存する
データ幅広げない限り内部が高速になっても, どこかで
メモリに足を引っ張られる
そもそも x86 系ってクロック上げられなくなったから
マルチコアに走ったんじゃなかったっけ?
- 114 :デフォルトの名無しさん:2008/07/09(水) 18:35:36
- まあ、その程度のデメリットしかないわけだ。
- 115 :デフォルトの名無しさん:2008/07/09(水) 22:22:22
- 命令のクロック数とか気にする人には、それなりに影響があると思うけどね。
64bitレジスタ使うと(REXプレフィックスつけると)Intelのチップでは遅くなるって言うし。
- 116 :デフォルトの名無しさん:2008/07/15(火) 00:09:56
- >>111
>主にポインタサイズが大きくなるので、
でも、普通のプログラムでポインタ変数の占める割合ってどのくらい?
普通は作業領域として割当てられる非ポインタ用の領域の方がだいぶ大きいような
気がするんだけど。
- 117 :デフォルトの名無しさん:2008/07/15(火) 00:37:44
- 実体は 1 個だけど, 各種参照方法が必要になって,
<実体を指してるポインタの数> * <ポインタサイズ>
の方が,
<実体の個数> * <実体のサイズ>
より大きい.
なんて事もあった
- 118 :デフォルトの名無しさん:2008/07/15(火) 11:03:42
- ELFフォーマットに関して勉強しているのですが、
実行ファイルの中で、ある関数の実行コードに対応するバイト範囲を調べるのは
どうしたらいいでしょうか?
readelfコマンドを試してみましたが、どうもメモリ上でのアドレスは表示してくれるみたい
ですが、ファイル上でのバイト位置情報はないように見えました。
- 119 :デフォルトの名無しさん:2008/07/15(火) 11:33:02
- gcc -g
objdump -S
- 120 :デフォルトの名無しさん:2008/07/16(水) 00:28:01
- >>119
レスどうもです。ただ、やはりこの場合も エントリが 8048xxxx となって、
これは実行時のアドレスだと思うんですが....
あ、すっかり書き忘れていましたが Linux (ubuntu)/i386 と NetBSD/i386 を使っています。
もしかして別のプラットフォームだとファイル上のバイト位置で表示されたりします?
話は変わりますが、プログラムの開始アドレスが0x8048000あたりになってるわけですが、
これってどうやって決まってるんですかね? 何故この数字なのか、これより前の方の
アドレスは何かに使ったりするのか、etc...
- 121 :デフォルトの名無しさん:2008/07/16(水) 00:55:09
- readelfのソースを読んで、自分でツールを作ればいいじゃん。
- 122 :デフォルトの名無しさん:2008/07/16(水) 01:21:39
- >>120
objdump -hfS
- 123 :デフォルトの名無しさん:2008/07/16(水) 08:56:02
- >>121
適当なツールが本当にない、となればそうしますが...
>>122
結局、ヘッダー情報でのセクションのオフセットとディスアセンブルされた
アドレスの対比って感じですかね。
- 124 :デフォルトの名無しさん:2008/07/17(木) 11:40:19
- http://www.linux.or.jp/JM/html/LDP_man-pages/man7/pipe.7.html
「POSIX.1-2001 では、 PIPE_BUF バイト以下の write(2) は atomic に行われること、
つまりパイプへの出力データの書き込みは連続したシーケンスとして行われることを必須としている (MUST)。」
bashなどのシェルでプログラムを '|' でつないで起動したときって
標準出力でもPIPE_BUFより大きいと、atomicに行われない可能性があるんですか?
それとも、プログラム内で pipe(2)システムコールで作成したパイプにのみ当てはまることですか?
- 125 :デフォルトの名無しさん:2008/07/17(木) 12:37:19
- write(2)の仕様だから、常に分割されることがある。
そこの説明は、逆に「atomicであるとが保証される」ケースの説明。
- 126 :デフォルトの名無しさん:2008/07/17(木) 14:44:50
- getoptを使ってると古いって言われたんですけど、他に何かあるんですかね?
何があるのか聞こうと思ったのですが、違う部署の人なので探せなくって・・。
- 127 :デフォルトの名無しさん:2008/07/17(木) 15:04:32
- 俺もきみとは違う部署だが答えてみるよ。
CならGNU getoptでいいと思うよ。
- 128 :デフォルトの名無しさん:2008/07/17(木) 17:51:33
- GPLじゃないのか >GNU getopt
- 129 :デフォルトの名無しさん:2008/07/17(木) 18:10:17
- >>126-127
こんなふうにしてGPL汚染されていくわけですね。わかります。
- 130 :デフォルトの名無しさん:2008/07/17(木) 21:12:32
- getoptはLGPLだから別に問題は無いんじゃね。
- 131 :デフォルトの名無しさん:2008/07/18(金) 15:08:02
- こんなふうにしてFUDがひろまっていくわけですね、わかります。
- 132 :デフォルトの名無しさん:2008/07/19(土) 22:29:02
- 質問です
ttp://kzk9.net/column/unixfastestfilecopy.html
こちらのページの実装(2)にmmap()でのファイルコピーの紹介があるのですが
>int i = 0;
>assert(lseek(to, size - sizeof(int), 0L) >= 0);
>assert(write(to, (&i), sizeof(int)) == sizeof(int));
このlseek()とwrite()はコピー先のファイルに対してどういう処理をしているのでしょうか?
- 133 :デフォルトの名無しさん:2008/07/19(土) 22:44:06
- こりゃ糞コードだな
見ないほうがいい
- 134 :デフォルトの名無しさん:2008/07/19(土) 23:06:49
- 禿同
三行見ただけでも、ページ内間違いだらけに違いないことがわかる。
- 135 :デフォルトの名無しさん:2008/07/19(土) 23:26:34
- sparse fileでもつくってるの?
- 136 :デフォルトの名無しさん:2008/07/20(日) 00:16:22
- ファイルポインタを移動して、そこに何か書いてる。
mmapのためのファイルサイズの確保。
- 137 :デフォルトの名無しさん:2008/07/20(日) 00:26:45
- assertの中で?
- 138 :デフォルトの名無しさん:2008/07/20(日) 01:33:55
- ベンチマークみたいだから、失敗したら死んで良いんじゃない?
- 139 :デフォルトの名無しさん:2008/07/20(日) 02:41:37
- だからといって、
動作が似てるからって意味の全く異なるものを使うというのはおかしいな。
assertの式ってのはNDEBUG定義したら消滅していいコードだし。
ステータスをチェックしてエラー終了させたいなら、そういうマクロを自分で定義するべきじゃね。
#define CHECK(exp) (void)((exp) || (fprintf(stderr, "failed with condition %s at line %d\n", #exp, __LINE__),abort(),1))
とか。
- 140 :デフォルトの名無しさん:2008/07/20(日) 05:06:54
- 使い捨てプログラムでそこまで凝らんでも。
俺は使い捨てだったらエラーチェック自体やらんけどな。
で、忘れたころに引っ張りだしてきて動かなくて悩むと。
- 141 :デフォルトの名無しさん:2008/07/20(日) 08:47:38
- assert厨脂肪ワロス
- 142 :デフォルトの名無しさん:2008/07/20(日) 12:59:19
- 使い捨てにエラー処理なんて組み込むのか?
使い捨ての場合、ある前提でコードを書くんだからその前提外は無視していいでしょ
- 143 :デフォルトの名無しさん:2008/07/20(日) 13:47:31
- まあその辺は趣味の問題になるんじゃないかい。
深入りするとmalloc/free問題みたいになりそうな気がする。
- 144 :デフォルトの名無しさん:2008/07/20(日) 13:58:22
- >>143
> malloc/free問題
って何?
使い捨てのプログラムでfreeして終われとか、そんな話?
それだったら、ファイルのクローズすらしないが、俺は…
- 145 :124:2008/07/20(日) 14:22:23
- >>125
あらほんとだ、何を勘違いしてたんだろう
どうも
- 146 :デフォルトの名無しさん:2008/07/20(日) 14:27:13
- 標準入力から1行ずつ読み込んで、処理をするプログラムを作っているのですが
標準入力もpollで調べています。
この場合、やはり1行読み取るには、C++やCの標準ライブラリではなく、
readを使って自力で1行読み取りを実装しなければならないですよね?
- 147 :デフォルトの名無しさん:2008/07/20(日) 14:29:51
- どうして?
- 148 :デフォルトの名無しさん:2008/07/20(日) 14:41:22
- 標準ライブラリにnonblockingな行入力ルーチンがないからでしょそりゃ。
> 標準入力もpollで調べています。
に必然性があると仮定してだけど。
- 149 :デフォルトの名無しさん:2008/07/20(日) 14:53:45
- >>148
select/poll の後で fread とかだめだっけ?
posix 準拠なら getc_unlocked() とかなかったっけ?
- 150 :デフォルトの名無しさん:2008/07/20(日) 15:55:25
- >>149
>>146はstdioすっとばしてシステムコールを使わないとダメという主張だったのか。
C/C++にnonblockingな「行入力」ルーチンがないから自作という話だと思っていたよ。
それなら理由となるのはstdioのバッファに入っているがユーザプログラムはまだ
読んでいないデータの有無くらいだろうけど、set(v)bufすればいい話だろうし。
読み違えていたようですんまそん。
- 151 :デフォルトの名無しさん:2008/07/20(日) 15:57:33
- それならってのはstdioすっとばして……という話なら、ということで。
内容から判断つくとは思いますが、読みにくくてすいません。
- 152 :デフォルトの名無しさん:2008/07/20(日) 16:16:47
- >>149
それだとpollで調べたら空だけど、stdioの入力バッファにデータが存在する場合があるのでダメ
>>146
バッファされてるかどうかなんて、stdioの構造体の中のメンバ見るだけで実現できるんだけど、
ライブラリ依存なのでconfigureとかで各OS各ライブラリで場合分けするか、自前でstdioモドキを実装するしかないね。
fsense(stdin) みたいな関数があればいいんだけど。
もしくはfunopenを使ってreadfnをSTDINのnonblocking readにしちゃうとか、
そもそも標準入力をRAW MODEにしちゃうとかかね。
- 153 :デフォルトの名無しさん:2008/07/20(日) 16:44:50
- >>152
funopenはBSD系以外でも使えるの?
- 154 :デフォルトの名無しさん:2008/07/20(日) 16:59:58
- stdioをnoblockで使うのは、rubyの連中ががんばってたけど
結局1.9では諦めたんじゃなかったっけ?
- 155 :デフォルトの名無しさん:2008/07/20(日) 17:19:10
- assertの中に動作が必要なコードを入れてるのは久しぶりに見た
研究メインだとこうなっちゃうのかな
- 156 :デフォルトの名無しさん:2008/07/20(日) 18:58:22
- >>153
あれ…ほんとだ。linuxとかには無いのか。知らなかった。
- 157 :デフォルトの名無しさん:2008/07/20(日) 20:10:56
- 戻り値チェックしなくて済むから楽だね
- 158 :デフォルトの名無しさん:2008/07/20(日) 21:29:47
- glibcはunlocked_stdio(3)というのがあるが。
#define _BSD_SOURCE
してるからBSDにもあるんじゃないの?
ただ>>146の要望には、
setvbufによる行バッファリングとfileno(3)+poll(2)で十分だと思う。
- 159 :デフォルトの名無しさん:2008/07/20(日) 23:22:57
- 勘違いしてるのかしらんが、unlockとunblockはぜんぜん違うだろ
- 160 :デフォルトの名無しさん:2008/07/23(水) 11:16:20
- 質問す。
UNIXのCでCVS+ant的な事をしたいんだけど、できる?
antじゃない方が良い?
- 161 :デフォルトの名無しさん:2008/07/23(水) 13:12:37
- CVS と ant で、C 言語のプロジェクトを管理したい、のか?
- 162 :デフォルトの名無しさん:2008/07/23(水) 13:36:02
- いんや、C言語を CVS で管理したいんだけど、
ant 使った事ないから他に何か無いかな、と。
- 163 :デフォルトの名無しさん:2008/07/23(水) 14:21:18
- > ant 使った事ないから他に何か無いかな、と。
なんで使ったことないものが候補になるんだよ。
CVS+antって、具体的に何がしたいの?
- 164 :デフォルトの名無しさん:2008/07/23(水) 14:30:08
- えーと、javaだと CVS+ant という情報がたくさんあるんだけど、
C言語だと、CVS と何を組み合わせると良いのでしょうか。
そもそもantで何が出来るか、あんまりわかってないのですが。。。
- 165 :デフォルトの名無しさん:2008/07/23(水) 14:39:28
- しらべたら?
- 166 :デフォルトの名無しさん:2008/07/23(水) 15:29:56
- ソースを管理するだけならantも何も要らないよ
CVSだけでおk
- 167 :デフォルトの名無しさん:2008/07/23(水) 15:54:42
- CVSでソース管理は良いとして、やりたい事としては、
UNIX上に最新ソース取得して、ビルドして、配布して、、、
というのを、なるべく自動化したいなと。
UNIX側に、そういうシェルスクリプト用意すれば良いって話?なのかな。
- 168 :デフォルトの名無しさん:2008/07/23(水) 16:03:43
- CSVで拾ってビルドしてFTPディレクトリにでもコピーなら、数行のスクリプトでできるだろ
なにがantなのかわからん
- 169 :デフォルトの名無しさん:2008/07/23(水) 17:03:01
- まー、、、それで行くことにします。
antなら色々できそうな雰囲気あったので使ってみようと思ったんだけど、
今回は妥協の方向で。。。
- 170 :デフォルトの名無しさん:2008/07/23(水) 17:35:11
- とりあえずantが何か調べてみろよ
- 171 :デフォルトの名無しさん:2008/07/23(水) 20:32:59
- makeに決まっておろうが。
- 172 :デフォルトの名無しさん:2008/07/24(木) 14:30:47
- antって面白そうだな。。。時間ないけど。。。
ant使うとどの辺が楽になるのか、どなたかプレゼンしてくれまいか。
- 173 :デフォルトの名無しさん:2008/07/24(木) 14:37:10
- 使う理由もない(利点もわかってない)やつが、使おうと思う理由って何だろう。
時間がないといっときながら2chみてるし
わけわかめ
- 174 :デフォルトの名無しさん:2008/07/24(木) 17:00:58
- >>172
Javaの開発で使うときは楽ちんだけど、そうでなければ別に〜、という感じだよ。
makeでじゅうぶんですよ。
- 175 :デフォルトの名無しさん:2008/07/25(金) 00:22:47
- utmpって誰の管理下で動いてるの
こいつの信用度はどのぐらい?
- 176 :デフォルトの名無しさん:2008/07/25(金) 02:15:53
- login, xdm, sshdなど各自書き込み
まあまあ信用してもいい
- 177 :デフォルトの名無しさん:2008/07/30(水) 22:48:10
- open(2)ってなんで二つあるんですかね?
- 178 :デフォルトの名無しさん:2008/08/04(月) 16:14:05
- 一つしかないです。
open(char *, int, ...); で、
...に許されるのはmode_t一つです。
- 179 :デフォルトの名無しさん:2008/08/06(水) 06:49:40
- ifstreamを使ってテキストファイルを読み込んでいます。
UNIXの改行コードLFの時はうまく読み込めるのですが、
それ以外の時は読み込みに失敗します。
改行コードにかかわらず、読み込めるようなコードはどのように書けばよいのでしょうか?
- 180 :デフォルトの名無しさん:2008/08/06(水) 07:06:01
- >>179
「失敗する」って具体的に何が起こるの?
よくわからんからコード晒して欲しいな。
- 181 :デフォルトの名無しさん:2008/08/06(水) 11:24:37
- さしずめgetlineあたりが改行コード自動認識してくれねーよとか駄々こねてるのかね
- 182 :デフォルトの名無しさん:2008/08/06(水) 12:23:36
- まあCRでハマっているのは確実だろうな。
- 183 :デフォルトの名無しさん:2008/08/09(土) 17:29:07
- 今でもMACのファイルってCRが改行なんだっけ
- 184 :デフォルトの名無しさん:2008/08/09(土) 19:00:48
- そう設定できるアプリもあるけど、
今はLFオンリーなのが多い。
何故CR + LFオンリーにしないのかは謎。
- 185 :デフォルトの名無しさん:2008/08/10(日) 15:59:53
- execl系ってなんで
execl("bin/cat", "cat", "foo.txt", NULL);
みたいに渡さないとダメなんですか?
第二引数のcatって冗長だと思うんですけど。
第一引数でcatって分かるじゃないですか。
- 186 :デフォルトの名無しさん:2008/08/10(日) 16:03:08
- UNIXでGUIアプリを作るとしたら、どの言語を選択すればいいですか?
もっとも簡単なのを教えてください
Windowsなら、Visual BasicとかDelphiがあるので手軽なのですが...
- 187 :デフォルトの名無しさん:2008/08/10(日) 16:48:42
- >>185
つ execl("/bin/sh", "-", NULL)
- 188 :デフォルトの名無しさん:2008/08/10(日) 23:01:07
- >>186
GambasっていうBasic開発環境がある。
GUIポトペタもできて、使い勝手はVBに近い。
ものの試しにいじっただけなので、
どこまでのことが出来るかは知らないし
情報も少ないから初心者には導入が難しそう。
あとはWideStudioかな。
いろんな言語に対応してて、ハローワールド程度の
GUIならウィザードで作ってくれる。
それ以上のことがどこまで出来るかはしらない。
- 189 :デフォルトの名無しさん:2008/08/11(月) 12:15:17
- KDevelopに関する質問はどこのスレですればいい?
C/C++プロジェクトを新規作成したときに
*.cppファイルや*.hファイルのテンプレートを入力できるんだが、
そこで使えるマクロ($AUTHORとか)を教えてほしいのだが。
- 190 :189:2008/08/11(月) 12:16:13
- 日本語がおかしいのは仕様です
- 191 :デフォルトの名無しさん:2008/10/03(金) 15:37:54
- 端末に表示されている文字の色を部分的に変えたり,背景の色を変えたりしたい.
ncursesライブラリを使えばできるらしいのだけれども,やりたいことは,
topコマンドのようなものを作りたいだけなので,ncursesを持ち出すまでも
ないと思うのですが,参考資料等ないですか?
printfで制御コマンド直うちとかのレベルでOKです.
Linuxで書いてるのでLinuxでお願いします.
- 192 :デフォルトの名無しさん:2008/10/03(金) 15:58:03
- 使ってる端末によって制御シーケンスが違うので
端末の資料をさがすべき
- 193 :デフォルトの名無しさん:2008/10/03(金) 17:51:57
- >>191
ウチの linux の top は libncurses.so を link してるように見えるが
- 194 :デフォルトの名無しさん:2008/10/03(金) 18:46:36
- curses使えば簡単に出来るのに、馬鹿なの?
- 195 :デフォルトの名無しさん:2008/10/06(月) 10:10:05
- >>191
terminfo/termcapのライブラリ使えば?
topレベルなら簡単に実装できる。
cursesなら整形もやってくれるのでさらに楽だが。
- 196 :デフォルトの名無しさん:2008/10/11(土) 17:56:44
- vt100とかxtermのシーケンスでいいんじゃないの?
- 197 :デフォルトの名無しさん:2008/10/12(日) 12:10:19
- > terminfo/termcapのライブラリ
で簡単に取得できる。
- 198 :デフォルトの名無しさん:2008/10/26(日) 11:54:55
- cでputenvかsetenv使って環境変数設定してるんだけど、
実行後シェルでenv打っても結果が反映されないです。
プロセスが消えても設定残す方法ってあるんですか?
ちなみにタイムゾーンの設定です。
- 199 :デフォルトの名無しさん:2008/10/26(日) 12:44:07
- >>198
system("setx TZ JST-9");
- 200 :デフォルトの名無しさん:2008/10/26(日) 13:14:25
- たぶんない。
- 201 :デフォルトの名無しさん:2008/10/26(日) 15:12:42
- 環境変数ってのはプロセスのものであって、
システムグローバルなものじゃないから無理
- 202 :ヤマ:2008/10/26(日) 18:06:52
- 初めて2ちゃんねる利用しますヤマです。
どうぞお見知りおきを・・・
さっそく質問ですが、よく聞く『UNIX』『Linux』って呼ばれているものは
基本的に何に利用するものなのですか?
- 203 :デフォルトの名無しさん:2008/10/26(日) 18:10:24
- >>202
コンピュータを操作するのに利用する。 OS ってやつだ。
http://ja.wikipedia.org/wiki/%E3%82%AA%E3%83%9A%E3%83%AC%E3%83%BC%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0
- 204 :デフォルトの名無しさん:2008/11/03(月) 21:36:58
- 質問です。
readdir_r()とかのシステムコール呼んだとき、
帰ってくるファイル名の文字エンコードって、どうやったらわかりますでしょうか?
- 205 :デフォルトの名無しさん:2008/11/04(火) 03:19:49
- ファイル名に文字コードなどない。UNIXにおけるファイル名は
'\0'と'/'以外からなる任意のバイト列。
- 206 :デフォルトの名無しさん:2008/11/04(火) 03:29:33
- そんなだからgrepもできないんですよ
- 207 :デフォルトの名無しさん:2008/11/04(火) 08:27:29
- >>204
ぶっちゃけUNIXによる。
またファイルシステムやmount時のoptionでも違う。
たとえばMac OS X + HFS+だとUTF-8でNFDになってる。
しかしUFSやNFS上だと、NFDじゃないファイルも作れる。
最近はUTF-8が多いけど、NFDになってるのはMac OS Xくらい。
それからLinuxはmount時にiocharsetオプションで、
内部コードから任期の文字コードにファイル名変換できる。
- 208 :デフォルトの名無しさん:2008/11/04(火) 12:39:57
- POSIX的にはどうするのが正しいんだろうね。
ファイル名を現在のロケールの文字コードで表示したい、というときに
どうするべきなのか。
- 209 :デフォルトの名無しさん:2008/11/04(火) 12:51:03
- 自分で判定するしかない
nkfのソースでも読め
- 210 :デフォルトの名無しさん:2008/11/04(火) 14:43:41
- >>208
POSIXには規定がないので、
まず自分で必要なものだけ実装したら?
通常UTF-8, EUC_Japanを想定しておけばいいと思う。
ただMac OS XはNFDされてるし、
SDカードをmountするとShift_JISのままのケースが結構あるようだ。
- 211 :204:2008/11/05(水) 00:52:27
- 回答どうもです。
結構混沌としてんですね。
UTF-8化してないCygwinもマルチバイトWinAPIと同じやつ(≒Shift_JIS)返してくるし…。
Latin-1の連中もいるし…(←これ重要)。
POSIXの規格に沿った優等生的方法じゃなくてもいいんで、
これで判断すれば大抵うまくいく、って方法があれば御教示願います。
(残りも誤検出ではなく、エラーで扱える方法ならなお良し。)
日本語ファイルが存在する保証もないので、実際のファイル名から検出、
は残念ながら無しの方向で。
あと、環境変数はLANG=Cです。むむむ…。
- 212 :デフォルトの名無しさん:2008/11/05(水) 23:01:58
- Glibみたいに、「デフォルトUTF-8、不満があれば
環境変数G_FILENAME_ENCODINGに設定ヨロ」
みたいな話で我慢するしかないんじゃね。
http://library.gnome.org/devel/glib/unstable/glib-Character-Set-Conversion.html
- 213 :デフォルトの名無しさん:2008/11/06(木) 07:01:23
- こっちのネタと思われるので↓
557 :名無しさん@お腹いっぱい。:2008/11/05(水) 03:57:38
HP-UX (11i)にHULFT 6を入れてファイル転送をしているのですが
タイムアウトのテストができなくて困っております・・・
ファイルの集信側にてファイル受信コマンド「utlrecv」
を実行しているのですが、このコマンドからtime out(戻り値:4)が
返されたときのテストをしたいです。
タイムアウト時間を最小値に設定してみたのですが
10秒単位でしか設定できないため
通信に最低でも10秒以上かからないとテストにならないようです。
しかし、HP-UXのケーブルを抜いたりできない環境です。
仕方ないので、巨大なファイルを転送したら10秒以上かかって
タイムアウトになるかと思ったのですがtime outにならず
(あまり巨大なファイルだとall queue errorが返されてしまった)
どうやってテストしたらいいのか悩んでおります・・・
HULFTなんてどこで質問していいのかわからなくて
スレ違いかもしれませんが、HULFT使ったことある方
アドバイスいただければと思います。
- 214 :デフォルトの名無しさん:2008/11/06(木) 08:27:00
- HULFTってやつはhttpを使えるらしいので、
accept(2)だけしてほったらかしのサーバを書けばいいじゃない。
ちなみにプログラム書けない奴は板違い。
- 215 :デフォルトの名無しさん:2008/11/09(日) 20:38:42
- 受信コマンド「utlrecv」 を実行することで
acceptを含む通信を行うので
acceptのみしか行わないサーバを作ってテストことは不可能だろJK
- 216 :デフォルトの名無しさん:2008/11/09(日) 22:05:01
- 個人で扱うソフトじゃないんで
サポートに聞いたほうが早いかもね
- 217 :デフォルトの名無しさん:2008/11/10(月) 01:02:12
- >>215
receiveする方がacceptするの?
- 218 :デフォルトの名無しさん:2008/11/10(月) 01:19:24
- HULFT知らん奴はレスするな
- 219 :218:2008/11/10(月) 01:44:33
- 別に悪気があるわけでなく
他人が知識を付けると俺の居場所が無くなるから。
>>217よ、お前の勉強のための質問はしないでくれ。
- 220 :デフォルトの名無しさん:2008/11/10(月) 02:13:18
- 何騙り入れてんだよ
- 221 :デフォルトの名無しさん:2008/11/10(月) 04:35:42
- よい子のソケット通信入門講座と勘違いするなよ。
でもUNIXでHULFTかよ。
ソケットでやり取りした方が簡単にテストできるよwwww
- 222 :デフォルトの名無しさん:2008/11/10(月) 20:15:37
- はぁ?
- 223 :デフォルトの名無しさん:2008/11/13(木) 06:38:27
- HULFT 5の場合、ファイルの配信側に
配信前実行ジョブや配信後実行ジョブを登録することができます。
つまり、配信前実行ジョブとしてスリーかませればOK
番号順に処理が実行されるんで、Aにスリープを仕込めば
集信側にレスポンスが返るまでに時間がかかる↓
■ファイル集信側 ■ファイル配信側
@utlrecv (配信要求実行)→→→→→→→→→A配信前ジョブ実行
↓
Cファイル受信←←←←←←←←←←←←←←←Bファイル配信
↓
D配信後ジョブ実行
※ただし、HULFT 6からは、Aでスリープかませても、
「ジョブ実行中だよ」メッセージが集信側に返されるので
タイムアウトにならないことが発覚。
この方法は使えないお。
ケーブルも抜けない場合、どうすりゃいいんだろうね・・・・(^-^A)
俺はでかいファイル送信して、その隙にケーブル抜いてテストしてたよ。
回線を一時的にブロックすると占有するアプリでも
作れとかいうのだろうか・・チョット得ろい人教えてくれ。
- 224 :誤字スマソ:2008/11/13(木) 06:40:40
- HULFT 5の場合、ファイルの配信側に
配信前実行ジョブや配信後実行ジョブを登録することができます。
つまり、配信前実行ジョブとしてスリープかませればOK
番号順に処理が実行されるんで、Aにスリープを仕込めば
集信側にレスポンスが返るまでに時間がかかる↓
■ファイル集信側 ■ファイル配信側
@utlrecv (配信要求実行)→→→→→→→→→A配信前ジョブ実行
↓
Cファイル受信←←←←←←←←←←←←←←←Bファイル配信
↓
D配信後ジョブ実行
※ただし、HULFT 6からは、Aでスリープかませても、
「ジョブ実行中だよ」とのメッセージが集信側に返されるので
タイムアウトにならないことが発覚。
この方法は使えないお。
ケーブルも抜けない場合、どうすりゃいいんだろうね・・・・(^-^A)
俺はでかいファイル送信して、その隙にケーブル抜いてテストしてたよ。
回線を一時的にブロックするとか占有するアプリでも
作れとかいうのだろうか・・チョット得ろい人教えてくれ。
- 225 :デフォルトの名無しさん:2008/11/13(木) 09:51:44
- HULFTって何?
- 226 :デフォルトの名無しさん:2008/11/13(木) 10:21:29
- いもがいるな‥
- 227 :デフォルトの名無しさん:2008/11/13(木) 10:27:57
- いもって何?
- 228 :デフォルトの名無しさん:2008/11/13(木) 11:41:26
- 妹属性のキャラのこと
- 229 :デフォルトの名無しさん:2008/11/14(金) 02:03:18
- 質問です。
OSはHP-UXです。
ncursesをインストールしようとおもい、
./configure --prefix=$HOME --enable-widec
というオプションをつけてコンパイルし
ホームディレクトリ以下にインストールしました。
早速簡単なサンプルプログラムを書いて
gcc hoge.c -lncursesw -I/home/hogehoge/include/ncursesw/
というコンパイルオプションをつけてコンパイルしたのですが、
hoge.c:1 から include されたファイル中:
/home/hogehoge/include/ncursesw/ncurses.h:66:34: error: ncursesw/ncurses_dll.h: そのようなファイルまたはディレクトリはありません。
/home/hogehoge/include/ncursesw/ncurses.h:141:29: error: ncursesw/unctrl.h: そのようなファイルまたはディレクトリはありません。
In file included from hoge.c:1:
と、エラーが出てしまいます。
ですが、
:~/hoge $ ls -l ~/include/ncursesw/
合計 784
-rw-r--r-- 1 meso users 79973 11月 12日 06:25 curses.h
-rw-r--r-- 1 meso users 6591 11月 12日 06:25 cursesapp.h
rw-r--r-- 1 meso users 2891 11月 12日 06:25 eti.h
-rw-r--r-- 1 meso users 3947 11月 12日 06:25 nc_tparm.h
lrwxrwxr-x 1 meso users 8 11月 12日 06:25 ncurses.h -> curses.h
-rw-r--r-- 1 meso users 3898 11月 12日 06:25 ncurses_dll.h
-rw-r--r-- 1 meso users 3779 11月 12日 06:25 panel.h
-rw-r--r-- 1 meso users 3014 11月 12日 06:25 unctrl.h
とインクルードファイルは存在しています。
どのようにコンパイルオプションをかえれば
うまくコンパイルされるでしょうか ?
- 230 :デフォルトの名無しさん:2008/11/14(金) 10:01:18
- >>229
-I/home/hogehoge/include/ncuresesw/
を
-I/home/hogehoge/include
に変え、
hoge.c で
#include <ncureses.h>
を
#include <ncuresesw/ncureses.h>
以下略
- 231 :デフォルトの名無しさん:2008/11/15(土) 21:34:44
- >>230
おそくなりましたが、有り難うございます。
- 232 :デフォルトの名無しさん:2008/11/19(水) 00:23:38
- あるプロセスのCPU使用率を調べたいのですが、
C言語から呼び出すべき関数/システムコールをご存知の方がいましたら、
ポインタでもかまいませんので教えて頂けないでしょうか。
処理時間に制約の少ない、かつ、CPU100%となるようなプログラムがあり、
別プロセスに影響を与えないように実行制限をかけるため、また、発熱を
押さえるため、一定以上のCPU使用率を超えた場合に SIGSTOP, SIGCONT を
送って、数秒平均で見ると CPU 使用率を一定以下に保たせるような
プログラムを作ろうとしています。
長文すみません、どなたかヒントをおしえて頂きたくお願いします。
- 233 :232:2008/11/19(水) 00:25:10
- >>232 の開発環境を書き損ねました。
Mac OS X なので vmstat, /proc が無いのだと思います。
# 知らないパスの中に埋もれてるだけなのかも...。
- 234 :デフォルトの名無しさん:2008/11/19(水) 00:45:35
- よくしらないんですが……これかな?
http://stackoverflow.com/questions/220323/determine-process-info-programmatically-in-darwinosx
- 235 :232:2008/11/19(水) 01:07:28
- >>234
ページ上部のものは自身のプロセス情報ですね。
コメント内のlibproc.hあたりに宝の山が眠ってる予感。
調べてみます。ありがとう。
- 236 :デフォルトの名無しさん:2008/11/19(水) 08:59:31
- >>233
http://www.opensource.apple.com/darwinsource/10.5.5/
のadv_cmds-119にpsのソースがある。
それから、
$ sudo ktrace ps u
$ kdump
すると大体の流れが分かる。(ktrace.outをカレントディレクトリに作るので注意)
- 237 :232:2008/11/19(水) 23:57:42
- >>236 さんありがとう。 ktrace は OS 標準でついているものですか。
10.5.5 + Xcode ですが locate ktrace で見つかりませんでした。
- 238 :デフォルトの名無しさん:2008/11/20(木) 12:33:50
- Mac OS みたいに特殊な環境ならまず最初にそう言えと
- 239 :デフォルトの名無しさん:2008/11/20(木) 13:43:18
- Macが特殊・・・?
何言ってるんだコイツ・・・
- 240 :デフォルトの名無しさん:2008/11/20(木) 15:45:06
- 特殊だろ
- 241 :デフォルトの名無しさん:2008/11/20(木) 16:00:00
- 普通のUNIXから見て、NeXTSTEP/OpenSTEPが変態だとすると、MacOSXはド変態です
- 242 :デフォルトの名無しさん:2008/11/20(木) 16:03:37
- しかしMacOSXは正式にUNIX認定を受けているから、普通のUNIXでは?
- 243 :デフォルトの名無しさん:2008/11/20(木) 17:15:14
- 商標の問題だからね。
一定の基準を満して金払えばUNIXを名乗れる。
*BSDはUNIXを名乗れない。もちろんLinuxも。
ただ、それとUNIXプログラミング的「普通」とは、また別の話。
- 244 :デフォルトの名無しさん:2008/11/20(木) 20:30:48
- >>237
10.4だとこんな感じだが。
$ lsbom /Library/Receipts/BSD.pkg/Contents/Archive.bom | egrep /usr/bin/ktrace
./usr/bin/ktrace 100555 0/0 34740 727828848
- 245 :デフォルトの名無しさん:2008/11/21(金) 14:10:48
- 10.5だとdtrace。
man dapptraceだな。
本家FreeBSDの変更に追従。
- 246 :デフォルトの名無しさん:2008/11/21(金) 20:08:33
- >>243
>商標の問題だからね。
>一定の基準を満して金払えばUNIXを名乗れる。
どんな基準かちゃんと知ってる?
- 247 :デフォルトの名無しさん:2008/11/21(金) 21:11:03
- Wikipediaの情報で十分だろ
- 248 :デフォルトの名無しさん:2008/11/21(金) 21:45:31
- SUSって言いたいだけだろ
- 249 :デフォルトの名無しさん:2008/11/22(土) 08:29:40
- >>246
良く知らないなら http://www.unix.org/ のドキュメントを読むといいよ
- 250 :デフォルトの名無しさん:2008/11/22(土) 15:40:24
- UNIX名乗らなくても勝手に世間が仲間だと認識してくれるからおk
Linuxとか
- 251 :デフォルトの名無しさん:2008/11/23(日) 03:32:38
- *BSDとか
- 252 :デフォルトの名無しさん:2008/11/25(火) 00:19:31
- 質問です。
メモリをファイルとして扱う関数って無いでしょうか?
ファイルディスクリプタを介してメモリを読み書きしたいのですが...
- 253 :デフォルトの名無しさん:2008/11/25(火) 00:36:12
- FILE*? int?
デスクリプタの継承は必要?
- 254 :デフォルトの名無しさん:2008/11/25(火) 22:17:01
- intでもFILE *でもどちらでも良いです。
継承は必要有りません。
- 255 :デフォルトの名無しさん:2008/11/26(水) 00:58:55
- fmemopen(3)ですね
- 256 :デフォルトの名無しさん:2008/11/26(水) 04:38:44
- >>255
>fmemopen
うぉ、POSIX準拠じゃないのか...
有り難うございます!
- 257 :デフォルトの名無しさん:2008/11/26(水) 15:40:32
- glibc依存、ということはGPL縛りがもれなくついてくる
- 258 :デフォルトの名無しさん:2008/11/26(水) 17:08:50
- C1X(C99の次)に入りそうなのに。それにglibcはLGPLだよ
- 259 :デフォルトの名無しさん:2008/11/27(木) 01:29:50
- mallocのかわりにmmapすればいい(w
- 260 :デフォルトの名無しさん:2008/11/29(土) 01:04:43
- echo $$ ってどういう意味かご教授宜しくお願い致します
DOSコマンドでも同じ方法あるのでしょうか・・・
- 261 : :2008/11/29(土) 01:20:11
- echo $$ってやってみた
16937が返された
unset $$ってやってみた
bash: unset: `16937': not a valid identifier
ふむふむ、と思って
ps x | grep 16937
16937 pts/2 Ss 0:00 -/bin/bash
このbash のPIDだった
- 262 :デフォルトの名無しさん:2008/11/29(土) 05:48:51
- manって知ってる?
- 263 :デフォルトの名無しさん:2008/11/29(土) 06:35:55
- まんこ?
- 264 :デフォルトの名無しさん:2008/11/29(土) 09:49:05
- GNU echoのmanには有用な情報はありませんでしたよ?
- 265 :デフォルトの名無しさん:2008/11/29(土) 09:57:16
- >>264
何故エコーを見る。変数参照はシェルの仕事だ。
- 266 :デフォルトの名無しさん:2008/11/29(土) 13:33:54
- >>262
レスをみると判るように、
manで引くべき単語すらわからないから無理
- 267 :デフォルトの名無しさん:2008/11/29(土) 14:58:41
- プログラミング関係ないし
- 268 :デフォルトの名無しさん:2008/11/29(土) 15:25:18
- manは廃止でいいよ
ディレクトリ配下全文検索した方が早い
- 269 :デフォルトの名無しさん:2008/11/29(土) 16:47:49
- echo $$
$$
さぁ、どういう事か説明してもらおうか
- 270 :デフォルトの名無しさん:2008/11/29(土) 17:23:08
- おまえの使ってるシェルに聞け
- 271 :デフォルトの名無しさん:2008/11/29(土) 17:45:58
- C:\>
- 272 :デフォルトの名無しさん:2008/11/29(土) 18:20:21
- >>269
おまいさんはPATHを設定するのにechoコマンドを調べるのか?
- 273 :デフォルトの名無しさん:2008/11/29(土) 18:22:27
- 馬鹿は黙っててくれませんか?
- 274 :デフォルトの名無しさん:2008/11/30(日) 15:11:57
- open関数について
既存ファイルを削除して、そのファイル名で新規作成する動作指定ってあるかな?
ファイルが存在していても新規にファイルを作成するような動作をさせたい
ググってみたけど一回removeで削除するしかないと判断しましたが自信がありませぬ
- 275 :デフォルトの名無しさん:2008/11/30(日) 15:15:29
- O_TRUNC フラグ
所有者やアクセス許可フラグなんかの話だとするなら
作り直すしかない気がする
- 276 :デフォルトの名無しさん:2008/11/30(日) 15:24:11
- >>275
JMプロジェクトに普通に書いてありますね…
すんません、おかげで早く帰れそうです
- 277 :デフォルトの名無しさん:2008/12/02(火) 04:12:07
- *BSDも十分変態じゃん
- 278 :デフォルトの名無しさん:2008/12/02(火) 12:46:02
- >>275
それは既存ファイルを変更するので>>274の要求を満たさない。
- 279 :デフォルトの名無しさん:2008/12/02(火) 13:02:03
- どうしてもatomicにしたいなら、同一ディレクトリに
テンポラリファイル作っておいてからrename(2)かね。
- 280 :デフォルトの名無しさん:2008/12/03(水) 00:07:47
- >>278
満たしてるだろ
- 281 :デフォルトの名無しさん:2008/12/03(水) 00:13:21
- >>274の言葉通り解釈すると、>>275は仕様を満たさない。
誰かがファイルをオープンしたままの場合、
どういう扱いにする仕様なのか、俺もちょっと気になったけど、
>>274が何も言わないので、放置しといた。
- 282 :デフォルトの名無しさん:2008/12/03(水) 03:01:09
- 説明小出しですか。
- 283 :デフォルトの名無しさん:2008/12/03(水) 12:57:58
- 常識。
- 284 :デフォルトの名無しさん:2008/12/04(木) 12:36:13
- >>274が登場しないとその辺は不明だが、
仮に>>281のいうとおりだとしても>>279でFA。
- 285 :デフォルトの名無しさん:2008/12/23(火) 12:33:51
- scpのソースでpipeがファイルディスクリプタの0と1を返すようなことが書いてあるのですが、
0と1って標準入力と標準出力ですよね?これを返すことってあるのでしょうか??
/*
* Reserve two descriptors so that the real pipes won't get
* descriptors 0 and 1 because that will screw up dup2 below.
*/
if (pipe(reserved) < 0)
fatal("pipe: %s", strerror(errno));
/* Create a socket pair for communicating with ssh. */
if (pipe(pin) < 0)
fatal("pipe: %s", strerror(errno));
if (pipe(pout) < 0)
fatal("pipe: %s", strerror(errno));
/* Free the reserved descriptors. */
close(reserved[0]);
close(reserved[1]);
- 286 :デフォルトの名無しさん:2008/12/23(火) 12:39:58
- closeされてればありえる
- 287 :285:2008/12/23(火) 12:49:57
- >>286
そういうことですか。ありがとうございます。
- 288 :デフォルトの名無しさん:2008/12/23(火) 15:32:07
- ちげーよ。reserved[0], reserved[1]の意味。
- 289 :デフォルトの名無しさん:2008/12/23(火) 15:33:59
- すまん、>>288は嘘だ。
- 290 :デフォルトの名無しさん:2008/12/23(火) 15:51:59
- pipe作るんじゃなくて、
/dev/nullを二つオープンすればいいのにな。
- 291 :デフォルトの名無しさん:2009/01/04(日) 16:47:56
- 共有メモリでプロセス間でデータの受け渡しをするとき、どうやって同期とるべき?
- 292 :デフォルトの名無しさん:2009/01/04(日) 17:10:05
- みゅーてっくすや場合によってはせまふぉを使えばいいんじゃない?
- 293 :デフォルトの名無しさん:2009/01/04(日) 17:18:07
- スコープPTHREAD_PROCESS_SHAREDをサポートしていれば、
pthread_mutexがプロセス間で使えます。
- 294 :デフォルトの名無しさん:2009/01/05(月) 20:08:48
- VIPPERの諸君 立ち上がれ!
以前韓国を打ち破ったのは誰か知らない、小学生や、他サイトの管理人がVIPを馬鹿にしている!
全員集結せよ。そして全員で打ち倒すのだ!
もし時間がない人は、この文章をそのまま他のスレに貼ってほしい!
対策本部
http://takeshima.2ch.net/test/read.cgi/news4vip/1231149782/
今こそ Vipperの意地を見せつけるのだ!
- 295 :デフォルトの名無しさん:2009/01/05(月) 21:07:41
- とりあえず294がVIPPERを騙る馬鹿だということだけは良く解った。
- 296 :デフォルトの名無しさん:2009/01/11(日) 23:06:04
- Imlib2を使ったC言語のサンプルってネットのどこかに無いでしょうか
(Imlibはあるのですが…)
それとも、画像ファイルを表示するライブラリは、
Imlib2以外に良いものがあるのでしょうか
- 297 :デフォルトの名無しさん:2009/01/13(火) 11:15:05
- opencv
- 298 :デフォルトの名無しさん:2009/01/15(木) 18:27:46
- SIGSEGVのシグナルハンドラを変更した後で意図的にSegmentation faultを発生させて
シグナルハンドラを実行させたいのですがプログラムを実行するとシグナルハンドラが
実行されないままSegmentation faultと表示されて終了してしまいます。
どうすればいいでしょうか?
ちなみにシェルから直接そのプロセスにシグナルを送ったら変更したシグナルハンドラが
実行されました。
一応ソースがこれです。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8649.c
- 299 :デフォルトの名無しさん:2009/01/15(木) 19:07:42
- sigaction(SIGSEGV,NULL,&sa); /* get current sigaction to sa */
sa.sa_handler=your_sighandler_function_like_print_message;
sigaction(SIGSEGV,&sa,NULL); /* set current sigaction with sa */
最小コードはこんな感じかね…?
- 300 :デフォルトの名無しさん:2009/01/15(木) 20:57:15
- >>299
レスありがとうございます。
しかしシグナルハンドラが実行されないままSegmentation faultと表示されて終了してしまいます。
プログラム中のSegmentation faultは変更が適用されないんですかね・・・
- 301 :デフォルトの名無しさん:2009/01/15(木) 21:01:57
- ごめん、SIGSEGVだけは特別っぽい。
まずsigaltstackでaltstackを用意しておいて、
sigactionで設定するときにsa_flagsにSA_ONSTACKを指定しないとダメ。
SIGSTKSZが出てこなかったんだが、どこで定義されてんだろ。
/* prepare altstack */
stack_t t;
t.ss_sp = malloc(10240);
t.ss_flags = 0;
t.ss_size=10240;
sigaltstack(&t,NULL);
/* set sighandler with altstack */
int sig=SIGSEGV;
struct sigaction sa;
sigaction(sig,NULL,&sa);
sa.sa_handler=print_message;
sa.sa_flags |= SA_ONSTACK;
sigaction(sig,&sa,NULL);
- 302 :デフォルトの名無しさん:2009/01/15(木) 21:05:47
- SIGSTKSZじゃねぇ、MINSTKSZか。
SIGSTKSZとMINSIGSTKSZが新しい定義っぽい。
MINSTKSZは消えたのかな。
- 303 :デフォルトの名無しさん:2009/01/15(木) 21:22:35
- >>301-302
ありがとうございます。
望み通りの結果が出ました。
- 304 :デフォルトの名無しさん:2009/01/15(木) 22:34:45
- >>298-303
キミ達間違ってる。
a[1]=0; /* Segmentation fault */
これではセグメントフォルトが起こらず、スタックを壊しているだけ。
壊れたスタックでリターンするときにセグメントフォルトが発生し、
シグナルハンドラが呼ばれる。printfの出力はstdoutに対して行っ
ているのでバッファリングされて、すぐには出力されない。
OSが不明なので現象を完全に説明しきれていないが、sigaltstackは通常不要。
- 305 :デフォルトの名無しさん:2009/01/16(金) 06:39:41
- a[10000000]=0; /* Segmentation fault */
とかなら本当にここでセグメント範囲外になってしまうのか。
a[1]が分からないのはgccが馬鹿なだけ?
mudflapとかいうのを使ったら文句言われた。
- 306 :デフォルトの名無しさん:2009/01/16(金) 08:55:20
- どこを指してるかわからないポインタが、「確実にセグフォになるアドレス」を
指していなければならない理由はない。gccはなにも悪くない。
確実にセグフォを起こしたければ、textセグメントに書き込むとか。
main(){main=0;} でどうだろ(試してない)。
- 307 :デフォルトの名無しさん:2009/01/16(金) 10:14:42
- ツールが馬鹿だと疑う前に己の未熟さを疑った方がいい。大抵の場合はこちらだ。
確実にセグメントフォルトを起こしたければ、mmapで必要な権限を与えずに
領域を確保すればそのようなアドレスを得ることが出来る。
もっとも、大抵の場合はkill(getpid(), SIGSEGV)で事足りる。
- 308 :デフォルトの名無しさん:2009/01/16(金) 13:59:26
- >>305
普通はOSがページ単位でメモリ領域を管理しているから
1バイトはみ出したくらいではわからない(わかりようがない)。
- 309 :デフォルトの名無しさん:2009/01/16(金) 14:18:26
- aはスタック上の有効なメモリ領域を指している。そして、スタックには
少なくとも戻り番地が積まれているので、下方伸長なスタックの場合、
a[1]は確実に有効な領域を指している。
- 310 :296:2009/01/16(金) 16:50:12
- >>297
自力で解決したぞ
Imlib_Image* imlib_image;
display = XOpenDisplay( NULL );
imlib_context_set_display(display);
imlib_context_set_visual(DefaultVisual(display, 0));
imlib_context_set_colormap(DefaultColormap(display, 0));
imlib_image = imlib_load_image("画像ファイルのパス");
imlib_context_set_image(imlib_image);
window = XCreateSimpleWindow(〜);
imlib_context_set_drawable(window);
(中略)
imlib_render_image_on_drawable(0,0);
- 311 :デフォルトの名無しさん:2009/01/16(金) 19:11:54
- まぁその辺は今後はもっと賢いフロントエンドが頑張ってくれるんじゃないかな。
clangみたいな。
- 312 :デフォルトの名無しさん:2009/01/16(金) 19:19:46
- 大抵のばあい、
*(int*)0 = 0とかで無事SEGVにならない?
- 313 :デフォルトの名無しさん:2009/01/16(金) 19:28:36
- つ SIGBUS
- 314 :デフォルトの名無しさん:2009/01/16(金) 20:31:31
- 普通sigbusはalignment errorじゃないの?
- 315 :デフォルトの名無しさん:2009/01/16(金) 20:35:55
- SIGBUSはアライメントエラーだな。定説どおり「つ」は役に立たない。
- 316 :デフォルトの名無しさん:2009/01/16(金) 21:29:08
- アーキにもよるな。
テケトーにCtrl+\ タイプしてシグナルハンドラの挙動見る
んじゃ駄目なの?
- 317 :デフォルトの名無しさん:2009/01/16(金) 21:42:04
- なんでおまえら C が高級言語だっておもってんの?
C は高級アセンブラ!!!
- 318 :デフォルトの名無しさん:2009/01/16(金) 21:59:39
- >>314>>315
sigaction(2)より
The following values can be placed in si_code for a SIGBUS signal:
BUS_ADRALN invalid address alignment
BUS_ADRERR nonexistent physical address
BUS_OBJERR object-specific hardware error
- 319 :デフォルトの名無しさん:2009/01/16(金) 22:33:10
- >>318
non exisitent physical address なんてユーザプログラムからはアクセスできないでしょ?
- 320 :デフォルトの名無しさん:2009/01/17(土) 08:08:18
- >>318
「つ」で引用しろよ。BUS_ADRERRはそういう意味じゃない。w
http://en.wikipedia.org/wiki/SIGBUS
Non-existent physical address
This is equivalent to a segmentation fault, but for a physical address rather
than a virtual address.
- 321 :デフォルトの名無しさん:2009/01/17(土) 20:50:49
- Mac OS X(Darwin)で>>312やったら、
Program received signal EXC_BAD_ACCESS, Could not access memory.
Reason: KERN_PROTECTION_FAILURE at address: 0x00000000
0x00001ff5 in main () at bus.c:2
2 *(int*)0 = 0;
だとよ。EXC_BAD_ACCESSしらねー。
- 322 :デフォルトの名無しさん:2009/01/17(土) 21:16:51
- MAC OSは0番地のページを write不可でマップしてるみたいだね
(多分 read もできないと思うけど)
別の実装方法として、0番地アクセス時にTLBミスを起こして、その延長で
SIGSEGVを投げる方法がある。こっちの方が多いかと思うけど、根拠はなし
- 323 :デフォルトの名無しさん:2009/01/17(土) 21:28:39
- >>322
その通り。
Program received signal EXC_BAD_ACCESS, Could not access memory.
Reason: KERN_PROTECTION_FAILURE at address: 0x00000000
0x00001ff9 in main () at bar.c:2
2 int x = *(int*)0;
- 324 :デフォルトの名無しさん:2009/01/18(日) 23:42:24
- >>322
TLBなんてプログラムから直接手の届く領域じゃないだろ。
- 325 :デフォルトの名無しさん:2009/01/19(月) 05:24:35
- MIPSアーキなら。
むしろOSで管理すべき領域。
- 326 :デフォルトの名無しさん:2009/01/19(月) 16:11:12
- >>324
突然どうした?
- 327 :デフォルトの名無しさん:2009/01/19(月) 16:46:50
- SEGV投げるためにTLB細工するという主張かと思った。
- 328 :名無しさん@:2009/01/21(水) 01:42:50
- シェル内容 意味がわからずこまってます。
# cat /BACKUP/config-backup.sh
#!/bin/sh
TMP_DIR=/tmp
PATH=/usr/local/bin:/usr/local/sbin:/bin:/usr/bin:/usr/sbin:/sbin:.
# 環境変数
HOST=`hostname`
# メールに記載される日付
# ex) 20010101
DATE=`date +"%Y%m%d"`
CFGFILE="/BACKUP/CONFIG.lst"
BACKUPFILE="/BACKUP/CFG/${DATE}-${HOST}-config.tar.gz"
tar czvf ${BACKUPFILE} `cat ${CFGFILE}`
AREA=`echo $HOST | tr '[a-z]' '[A-Z]'`
case $AREA in
WWW) exit ;;
SC-SSS11) exit ;;
NS) exit ;;
FW) exit ;;
*) FTP_HOST="133.213.xx.xxx" ;;
esac
PUT_DIR="/tmp"
FTP_FILE="${BACKUPFILE}"
- 329 :名無しさん@:2009/01/21(水) 01:43:10
- つづき
Proc_ftp () {
echo $FTP_HOST
# FTP Command.
FILENAME=`basename $FTP_FILE`
ftp -n $FTP_HOST << EOF
user admin aj3wqump
bin
put $FTP_FILE $PUT_DIR/$FILENAME
quit
EOF
}
# サーバ名
echo ""
echo "***** FTP start *****"
echo " to ${FTP_HOST} "
echo ""
Proc_ftp
# /BACKUP/CONFIG.lst
/BACKUP/CONFIG.lst: cannot execute
- 330 :名無しさん@:2009/01/21(水) 01:44:08
- つづき
# cat /BACKUP/CONFIG.lst
/etc/default/
/etc/defaultdomain
/etc/defaultrouter
/etc/hostname.*
/etc/inetd.conf
(省略)
tar (child): Cannot exec gzip: ファイルもディレクトリもありません。
tar (child): Error is not recoverable: exiting now
etc/default/inetinit
etc/default/passwd
etc/default/tar
etc/default/utmpd
etc/default/init
etc/default/login
パイプ切断
***** FTP start *****
to 133.213.xx.xxx
133.213.xx.xxx
Login incorrect.
Login failed.
Please login with USER and PASS.
Please login with USER and PASS.
Please login with USER and PASS.
- 331 :デフォルトの名無しさん:2009/01/21(水) 02:13:20
- >>328
それシェル違うしぃ。スクリプトだろ。技術者なら用語を正しく使え。
gzipは入ってるの? PATHの通ったdirectoryに入ってる?
- 332 :デフォルトの名無しさん:2009/01/21(水) 02:22:36
- どう見てもシェルスクリプトですが。
- 333 :デフォルトの名無しさん:2009/01/21(水) 02:43:15
- シェルスクリプト != シェル
- 334 :デフォルトの名無しさん:2009/01/21(水) 04:00:11
- >>321
>EXC_BAD_ACCESSしらねー。
それは Mach レベルでの例外。Mac OS X の場合これを BSD のシグナルに翻訳するというか。
>>322
>MAC OSは0番地のページを write不可でマップしてるみたいだね
>(多分 read もできないと思うけど)
その通り。試しにそれを外してみると 0x0 からの部分にはテキストセグメントが来るみたい。
ので read はできるようになるけど write でやはり SIGBUS。
割と小さいアドレスからいろんなものをマップする傾向があるみたい > Mac OS X
>>321 みても main が 0x1ff5 とかだし。ELF な UNIX 系だと 0x800_0000 とかじゃないですか?
このでかさって何でだっけ?
>別の実装方法として、0番地アクセス時にTLBミスを起こして、その延長で
要はページをマップしないということですよね? あえてTLBミスと書く必要はあるのかと...
- 335 :デフォルトの名無しさん:2009/01/21(水) 09:14:18
- ユーザ空間のアドレスなんてCPUや実装依存だよ。
異OSや異CPUでも同じと思うな。
- 336 :デフォルトの名無しさん:2009/01/21(水) 19:35:23
- >>335
とりあえず、CPU が違うが故にユーザー空間の配置が違う例を教えてもらえますか?
まあ、必然的にマルチプラットフォームな OS の話になるかと思いますが... CPU の bit 数は
同じとして。
でそれは何故違うのかと。
- 337 :デフォルトの名無しさん:2009/01/21(水) 20:15:13
- >>336
とりあえずnetbsdの各archのldscriptをgrepしただけだが、
i386 __executable_start = 0x08048000
m68k __executable_start = 0x2000
mips __executable_start = 0x0400000
arm __executable_start = 0x00008000
ppc __executable_start = 0x01800000
superh __executable_start = 0x400000
sparc __executable_start = 0x10000
linux ならまた結果は違うだろ。
何故違うのかはベンダ推奨だったりCPUによる制限だったり、歴史的経緯によるものだったり
移植しやすさだったりコンパチビリティだったり、色々。移植した奴に聞け。
- 338 :デフォルトの名無しさん:2009/01/21(水) 20:15:15
- NetBSDのSHポートで確かあった気がする。
メモリ空間の用途がハード的に決まってるとかで32bitの4Gが素直に使えない
とかそんな理由で。
- 339 :デフォルトの名無しさん:2009/01/22(木) 09:59:01
- >>337-338
なるほどー確かにだいぶ違うんですね。
MMU の特性等で元の物理アドレスのレイアウトに対してマップしやすい仮想アドレスの
レイアウトとかがあるということでしょうか。まあありそうですね。
メモりマップドな arch かどうかでも違うんでしょうね。
適当にググると i386 & ELF に関しては 0x08048000 な OS が多いみたいですね。
>移植した奴に聞け。
とりえずリポジトリをチェックしてみますかw そういうえば NetBSD は昔 a.out だったような。
- 340 :デフォルトの名無しさん:2009/01/26(月) 17:45:50
- プロセスに関して質問です。
子プロセスAより先に親プロセスBが死ぬとinitがAの親になるけど、その後
新たにプロセスCを作ってプロセスAの親にしたいんですがどうやれば出来ますか?
具体的にはプロセスCでwaitしてプロセスAの終了を待ちたいです。
- 341 :デフォルトの名無しさん:2009/01/26(月) 17:53:59
- 無理
- 342 :デフォルトの名無しさん:2009/01/26(月) 18:11:52
- >>341
無理ですか。有り難うございます。
出来る前提で作ってたので数ヶ月かけて作ってたプログラムがお釈迦になった。
作り直すのは無理なので何か他の方法を探します。
- 343 :デフォルトの名無しさん:2009/01/26(月) 18:22:05
- 単にプロセスの終了を待ちたいだけなら親プロセスになる必要はないんじゃ
- 344 :デフォルトの名無しさん:2009/01/26(月) 18:32:29
- initが子プロセスが終了したとき、どの程度の間隔でwaitするかは不定だったきがする
PIDが存在するかしないかで判断しても終了後すぐに同一PIDが使われない保証はないので
だから親でなければ確実に子プロセスの終了を得られないと思うんだけど
- 345 :デフォルトの名無しさん:2009/01/26(月) 19:14:20
- おすすめ順で
・file (like daemon.pid)
親がuniqな名前のfileを作る。
子は終了する時fileを消す。
親にシグナルで知らせる。
・UNIXドメインソケット
getpeername(2)でENOTCONN
・named pipe
write(2)してSIGPIPE
・セマフォ
- 346 :デフォルトの名無しさん:2009/01/26(月) 19:38:25
- ptrace(2)で似たような事が出来る。
- 347 :デフォルトの名無しさん:2009/01/26(月) 20:25:33
- >>出来る前提で作ってたので数ヶ月かけて作ってたプログラムがお釈迦になった。
ってどういうシチュエーションだよwww
- 348 :デフォルトの名無しさん:2009/01/26(月) 21:22:35
- プロセスのppidを任意の値に書き換えるシステムコールをカーネルモジュールで追加するとか
- 349 :デフォルトの名無しさん:2009/01/26(月) 21:29:01
- pidファイル作って、数秒間隔でcheckするwatchdogじゃ駄目な理由plz
- 350 :デフォルトの名無しさん:2009/01/26(月) 21:31:46
- >>349
>344
処で、「pidファイル」って何?
- 351 :デフォルトの名無しさん:2009/01/26(月) 21:44:00
- ぐぐれ
- 352 :デフォルトの名無しさん:2009/01/26(月) 22:02:13
- そんなにクリティカルな要件だったら、自分でinit書き換えりゃいいじゃん
- 353 :デフォルトの名無しさん:2009/01/26(月) 22:04:10
- つーか、親が死なないようにすればいいじゃんか。
- 354 :デフォルトの名無しさん:2009/01/26(月) 22:14:09
- >>346
これで出来そうです。どうもありがとう。
- 355 :346:2009/01/26(月) 23:01:50
- >>354
ptraceはシグナルの扱いとか面倒なので、別の解決法になるかもしれないヒント
子プロセスがexecveしなけりゃいけないという決まりは無い、親プロセスがexecveしても構わない。
- 356 :デフォルトの名無しさん:2009/01/26(月) 23:36:47
- >>355
PTRACE_ATTACHでいけました。
全部理解したわけじゃないけど多分大丈夫です。
- 357 :デフォルトの名無しさん:2009/01/27(火) 14:39:43
- まあたぶんダメ。
- 358 :デフォルトの名無しさん:2009/01/27(火) 15:25:28
- うん
- 359 :デフォルトの名無しさん:2009/01/27(火) 15:58:39
- 殺伐してるのか、まったりしてるのか、天然なのかわからんスレだなwww
- 360 :デフォルトの名無しさん:2009/01/27(火) 20:23:41
- あげても何も出ないよ
- 361 :デフォルトの名無しさん:2009/01/29(木) 09:41:46
- HP-UXにて動作するプログラムで、
ハードの製造元の情報を取得したいのですが・・・
unameコマンドとかmodelコマンドではハードの製造元って表示できないですよね?
Windowsでいうと「systeminfo」コマンドで表示される「製造元」を知りたいです。
たとえば、Windowsなら「NEC」とか「TOSHIBA」とか「LENOVO」って表示されますよね。
HP-UXで何か方法があればアドバイスお願いします。
- 362 :デフォルトの名無しさん:2009/01/30(金) 05:22:25
- /etcをgrepしてみたら?
- 363 :デフォルトの名無しさん:2009/02/01(日) 22:01:48
- 別のプロセス作るのに、なんでワザワザ自分のコピーを作ってから
それを別のプロセスに変えるなんて、ヘンなことするのだ?
windowsみたいに普通に別プロセスを作れないの?
- 364 :デフォルトの名無しさん:2009/02/01(日) 22:30:33
- ハンドルの継承?
- 365 :デフォルトの名無しさん:2009/02/02(月) 01:55:19
- fork & exec のことじゃね?
- 366 :デフォルトの名無しさん:2009/02/02(月) 02:00:40
- >>363
windowsみたいにごてごてした変なAPI群にしないため。
- 367 :デフォルトの名無しさん:2009/02/02(月) 06:58:41
- あれは互換性のためだよ
UNIXの互換性なんてWindowsの足元にも及ばないよ
- 368 :デフォルトの名無しさん:2009/02/02(月) 10:02:37
- UNIXは70年代のプログラムが
コンパイルすればそのまま動くことも多いですが。
- 369 :デフォルトの名無しさん:2009/02/02(月) 14:07:17
- Windowsだって動くだろw
馬鹿かww
- 370 :デフォルトの名無しさん:2009/02/02(月) 14:43:33
- 70年代だとWindows自体なかったのに
プログラムなんてあるわけないだろ。
どこの宇宙人だよ。
- 371 :デフォルトの名無しさん:2009/02/02(月) 16:27:56
- 汎用>>>>>>(超えられない壁)>>>>>>>Unix>>>>Windows
くらいな感じか。Macは知らん。
- 372 :デフォルトの名無しさん:2009/02/02(月) 16:28:58
- 不等号逆じゃね?
- 373 :デフォルトの名無しさん:2009/02/02(月) 20:14:35
- 汎用機は60年代と機械語レベルで互換だったっけ?
- 374 :デフォルトの名無しさん:2009/02/02(月) 22:10:56
- windows の互換性って、自分ひとりしか居ないのに誰と互換性でつながるつもりなんだ?www
- 375 :デフォルトの名無しさん:2009/02/02(月) 23:16:23
- WindowsとUNIX比べるなら、DLLとかの基本ライブラリ、サブシステムまで含めないとダメ。
UNIXはシステムコール程度なら確かに比較的変更されないけど、ライブラリ周りはひどい。
互換性を気にするくらいなら古いバージョンでなんとかするって感じ。
- 376 :デフォルトの名無しさん:2009/02/02(月) 23:38:48
- いやUNIXの方が不動のAPIがずっと多いよ。
初期のDOS用のCなんて、stdio.hない独自I/Oだったし。
- 377 :デフォルトの名無しさん:2009/02/04(水) 22:23:24
- そういやprintfが、ずっとサブセットだったなぁ(遠い目
- 378 :デフォルトの名無しさん:2009/02/04(水) 22:34:14
- ライブラリの挙動が変わるのを嫌ってスタティックリンクしてた。
GPLに汚染されるから最近は避けるが。
- 379 :デフォルトの名無しさん:2009/02/05(木) 00:45:59
- >>378
static linkにしないと何が変わるんだ?
GPLのライブラリを一切使わないことしか無いと思うが
- 380 :デフォルトの名無しさん:2009/02/05(木) 01:05:09
- ダイナミックリンクならLGPLなライブラリ(glibcとか)をリンクしても汚染されない。
- 381 :デフォルトの名無しさん:2009/02/05(木) 03:33:34
- AHO?
- 382 :デフォルトの名無しさん:2009/02/05(木) 09:28:52
- >>379
(LGPL でない)GPLの使いたくなるようなライブラリって何がある?
- 383 :デフォルトの名無しさん:2009/02/05(木) 09:37:20
- >>381
お前が。
- 384 :デフォルトの名無しさん:2009/02/05(木) 10:42:10
- >>379
じゃぁお前はglibcを使うな
- 385 :デフォルトの名無しさん:2009/02/05(木) 10:46:48
- それ以上はライセンススレでやってくれ。
- 386 :デフォルトの名無しさん:2009/02/05(木) 16:12:42
- >>382
Qtかな?
4.5からLGPLになるが
- 387 :デフォルトの名無しさん:2009/02/05(木) 16:19:44
- まじか
だったら4.5でリナザウ作り直せよ#
- 388 :デフォルトの名無しさん:2009/02/05(木) 22:44:26
- Qtのライセンスはかなり複雑。
4.3.1にもGPL例外条項がある。しかもトリプルライセンス。
4.3.4はトリプルライセンス。到底書ききれない。
>>387
ぐだぐだ言うほどこだわりがあるならライセンスくらい読め。
- 389 :デフォルトの名無しさん:2009/02/06(金) 03:48:32
- Qtは嫌われ者
- 390 :デフォルトの名無しさん:2009/02/21(土) 23:24:31
- うげぇ、UbuntuのmanはC入門者にやさしくないね
Fedora, FreeBSDでみたけど、Fedoraがいいんかな
VMwareについても考慮に入れて、UNIX Cで勉強しやすいOSは、なんなんだろう
でも、Fedora, CentOSのソースの落し方をよく知らないんだよな
興味のある/binコマンドを読みたいんだけど
- 391 :デフォルトの名無しさん:2009/02/22(日) 00:21:06
- >>390 日本語でOK?
- 392 :デフォルトの名無しさん:2009/02/22(日) 00:36:41
- >>390
manpages-jaが欲しいのか?
- 393 :デフォルトの名無しさん:2009/02/22(日) 02:34:51
- >>390
Solaris が良いよ。
無料だし、オープンソースだし、マニュアルきっちりしてるし、
商用品質だし、安定してるし、日本語環境もしっかりしてるし。
ソースコードはここで読めるよ。
http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/
- 394 :デフォルトの名無しさん:2009/02/22(日) 07:52:24
- >>392
ja-manpageは、あるにことしたことないのは、確かだけど
なくてもいいよ
>>393
Open Solarisか、考えたことなかったな
Open Solarisで入門者卒業者向けのCの勉強している人いるの?
- 395 :デフォルトの名無しさん:2009/02/22(日) 11:17:17
- OpenSolaris は一部のmanが欠けてるから、
Solaris 10 のも参照できるようにしとくといいよ
- 396 :デフォルトの名無しさん:2009/02/22(日) 11:58:14
- >>394
あれこれ漁る前に、何が必要なのか具体的に書いたら?
・C言語入門
・UNIXアーキテクチャ概説
などなど。何が足りなかったの?
- 397 :デフォルトの名無しさん:2009/02/22(日) 14:46:15
- >>395
把握
>>396
・man stdlib.hとか、やって、関数が出てくる機能
Fedoraは情報が出てくる
他のOSのmanは出てこない
代替方法は、いくらでもあるだろうけど
・/binなどのソースを取り出せる
環境
エディタはemacs22
目的 CUI主体でCの勉強がしたい
と、思って、半日考えたけど、CentOS/Fedoraの環境で強制的に2年ないし、5年ぐらいやってみることにしました
UNIXアーキテクチャ概説は、おいおい考えます
昨今は、仮想OSソフトも整備されているんで、どうにかなるでしょ
とりあえず、Cの勉強の息抜きにOpen Solarisもインストールして、触ってみます
レスをくれた方、ありがとうございました
- 398 :デフォルトの名無しさん:2009/02/22(日) 17:45:37
- >>397
> ・man stdlib.hとか、やって、関数が出てくる機能
それはUbuntuだとmanpages-posix-devパッケージにある。
$ dpkg -L manpages-posix-dev | egrep stdlib.h
/usr/share/man/man7/stdlib.h.7posix.gz
> ・/binなどのソースを取り出せる
dlocateを使えばどのファイルがどのpackageに入っているか分かる。
後はapt-get source パッケージ名。
続きがあるなら、プログラミング技術の質問とは言いがたいから、
Linux板かUNIX板のくだ質スレが適切かも。
- 399 :デフォルトの名無しさん:2009/02/22(日) 19:11:18
- *BSD系なら取り出すまでもなくソース一式展開してあるのが常態だから
エラーメッセージをみてそのままgrepしてみるなどソースに当たって原因を知るという
行動様式を身につけるにはいいよ。もちろんLinuxなどで同じ状態を確保するのでもいいだろう。
- 400 :デフォルトの名無しさん:2009/02/27(金) 05:06:02
- FedoraやCentOSなど適当なLinux入れて
LFSを構築しながらいじり倒すのがシンプル
またはGentoo入れて学習用にソースをfetchして
$HOME/hogehoge などとディレクトリを掘りいじりまくるのもシンプル
- 401 :デフォルトの名無しさん:2009/02/27(金) 06:54:11
- イタタ><
- 402 :デフォルトの名無しさん:2009/02/27(金) 16:15:15
- つかBSDってまだ使ってる奴いるのか?
- 403 :デフォルトの名無しさん:2009/02/27(金) 17:14:20
- >>402
お前。
- 404 :デフォルトの名無しさん:2009/02/27(金) 18:03:29
- >>402
ひろゆき
- 405 :デフォルトの名無しさん:2009/02/27(金) 21:56:11
- ヤフーは全部FreeBSD
- 406 :デフォルトの名無しさん:2009/02/27(金) 23:28:04
- そそ従業員の端末もFreeBSD
- 407 :デフォルトの名無しさん:2009/02/27(金) 23:31:17
- GPLとBSDLでは、誰の「自由」を守るかという点で明確に違うからな。
「自由」の権利と行使するのが、利用者か開発者かの違い。
- 408 :デフォルトの名無しさん:2009/02/27(金) 23:45:21
- ここで忘れてはいけないのが、開発者は利用者でもあるという点
- 409 :デフォルトの名無しさん:2009/02/27(金) 23:50:32
- 問題は開発者が自分のコードを公開する意思があるかという点。
- 410 :デフォルトの名無しさん:2009/02/28(土) 00:03:54
- GPLは気持ち悪くて仕方がないw
↓
じゃあGCC使うなよ
↓
使ってますサーセンww
これはどう思うよ?
- 411 :デフォルトの名無しさん:2009/02/28(土) 00:40:31
- >>410
それはいいんじゃないか?
自分が書いたコードの改良が、自分にフィードバックされるかどうかが問題だから。
だから、企業としてソースを公開する側がBSDLを選ぶのは難しい。
- 412 :デフォルトの名無しさん:2009/02/28(土) 00:46:52
- 【GNU】アンチGPLなプログラマ【汚染対策】
http://pc11.2ch.net/test/read.cgi/prog/1223160289/
- 413 :デフォルトの名無しさん:2009/02/28(土) 00:49:06
- そこらじゅうでlinuxが組み込みで使われてるけどな。あのカメラとかあのプリンタとか。
ソース出してるの聞いたことないな。
- 414 :デフォルトの名無しさん:2009/02/28(土) 00:52:52
- >>413
気になるならソースくれと言ったらいいと思うんだが
まともな企業ならソース出してるよ
- 415 :デフォルトの名無しさん:2009/02/28(土) 00:56:24
- 具体的に、どのメーカーのどの製品とか言わないと。
言えない理由があるなら別だが。
- 416 :デフォルトの名無しさん:2009/02/28(土) 00:57:20
- ああいうのはNDAとかあるから
そういうのを満たせば見せてくれるよ
- 417 :デフォルトの名無しさん:2009/02/28(土) 00:58:53
- おまえらソースクレクレうるさいけど
中華や北には見せたくないだろ
いいかげんにしとけ
- 418 :デフォルトの名無しさん:2009/02/28(土) 01:00:38
- >>417
それならGPLでもBSDLでもダメじゃんw
- 419 :デフォルトの名無しさん:2009/02/28(土) 01:25:24
- >>414
「ソース出すという書面つけろ」という権利者のクレームを無視するのがまともな企業かね?
- 420 :デフォルトの名無しさん:2009/02/28(土) 01:28:22
- ゴネるよね〜♪
- 421 :デフォルトの名無しさん:2009/02/28(土) 01:29:12
- この前買ったテレビの説明書の最後にGPLについての説明書きがあって
要求があればソースコードの送付に応じる旨が書いてあったよ
>>416
NDAにサインさせるのを強要するとGPLに矛盾しちゃうよ
- 422 :デフォルトの名無しさん:2009/02/28(土) 01:46:16
- NDAだめなのか・・・
終わったな
- 423 :デフォルトの名無しさん:2009/02/28(土) 02:13:08
- GPLに感染してるという時点で、元々自前で一から開発した物じゃないんでしょ?
- 424 :デフォルトの名無しさん:2009/02/28(土) 02:21:09
- 単にlinuxの上で動いてるだけでしょ
関係するのはドライバだが
まあ大手にならって放置だろう
- 425 :デフォルトの名無しさん:2009/02/28(土) 03:08:16
- >>422
終わってるのはおまいの頭
- 426 :デフォルトの名無しさん:2009/03/01(日) 21:39:53
- mainから4つのスレッドを生成して、pstreeコマンドで見ると、
bash(3304)━thread_test(13393)━thread_test(13394)━thread_test(13395)
┗thread_test(13396)
┗thread_test(13397)
┗thread_test(13398)
と表示されます。
13393はmainで、13395〜8は生成したスレッドみたいですが、13394は何者ですか?
- 427 :デフォルトの名無しさん:2009/03/01(日) 23:40:15
- みはりばんじゃねえの
シグナルとか
- 428 :デフォルトの名無しさん:2009/03/03(火) 11:02:10
- UNIXマガジンって消えたん?
- 429 :デフォルトの名無しさん:2009/03/03(火) 11:57:38
- >>428
ググレカス
98 KB
[ 2ちゃんねる 3億PV/日をささえる レンタルサーバー \877/2TB/100Mbps]
取りに行ったけどなかった。次は一時間後に取りに行くです。新着レスの表示
掲示板に戻る
全部
前100
次100
最新50
read.cgi ver 05.0.7.8 2008/11/13 アクチョン仮面 ★
FOX ★ DSO(Dynamic Shared Object)