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

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
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なら固定でいいんじゃない?


64:2008/03/19(水) 13:58:41
thx!

>実行ファイルのディレクトリ
>>Linuxだったらreadlink("/proc/self/exe", ...)で。

BSDだとどうなりますk?

>gccで、ディレクトリパスのデリミタは環境変数
>>C/C++でのことなら、ないと思う

ifdef + define するしかないですか。
でもそういった、ヘッダーファイルとか、オプソでありそうな。。。
74: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
94:2008/03/19(水) 16:01:20
>>8
それ、良いリンクですね。

Mac OS X だと、"/proc/self/exe"ではうまくいきませんね。
argv[0]を見ようとしたらwxWidgetsでmainが見れなかったorz
104: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でも使うといいよ。
1917: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
エンコーディング変換ぐらいなら簡単よ。
2320: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
26デフォルトの名無しさん:2008/03/28(金) 16:48:43
>UConverter *pConverter = ucnv_open("EUC-JP", &error);

ucnv_openの引数で、"windows-31j"、"shift_jis"、"EUC-JP"といった文字が指定されていますが、
この一覧はどこにあるのでしょう?

ソース全文検索かけても出てきませんが???
2726:2008/03/28(金) 17:12:05
ついでに、iconv_openの引数の文字列一覧も教えて下さいorz
28デフォルトの名無しさん:2008/03/28(金) 17:41:45
iconv -l
2926:2008/03/28(金) 17:55:40
>>28
そのコマンド打ってみて分りましたが、
OSが文字コードに関する情報(のファイル)を持っていて、
それによって変換可能な文字コードかどうか決まるわけですね。

BSD だとして、GUIアプリが受け取る文字コードが何か取得する方法を教えてください。
環境変数なのかなぁ?
30デフォルトの名無しさん:2008/03/28(金) 18:13:50
>>29
nl_langinfo(CODESET) だったような、たしか
3126: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してしまえばいい。
ただ結構コンパイラのバージョン依存なのでそこんとこは注意。
5755: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環境変数(実行時)で指定できる。
5955: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でもつかっとけ。
6462: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
6762: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で。
9492:2008/06/14(土) 13:56:40
9592:2008/06/14(土) 13:57:10
↑間違い。すいません
>>93
9692: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を含む子プロセスの情報を保持しているわけで。
10098: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』での高野光弘君の凶行を止めてください。
103101: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 となる。
105101:2008/06/24(火) 23:23:59
レスありがとうございます。
>>101-102とか自分で書いていて理屈っぽいなとは思ってました。
今後はそのあたりの現実や伝統と折り合いをつけてコードを書くことにします。
106101: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して終われとか、そんな話?
それだったら、ファイルのクローズすらしないが、俺は…
145124: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とか)を教えてほしいのだが。
190189: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
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のままのケースが結構あるようだ。
211204: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知らん奴はレスするな
219218: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 使用率を一定以下に保たせるような
プログラムを作ろうとしています。

長文すみません、どなたかヒントをおしえて頂きたくお願いします。
233232:2008/11/19(水) 00:25:10
>>232 の開発環境を書き損ねました。
Mac OS X なので vmstat, /proc が無いのだと思います。
# 知らないパスの中に埋もれてるだけなのかも...。
234デフォルトの名無しさん:2008/11/19(水) 00:45:35
235232: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をカレントディレクトリに作るので注意)
237232: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されてればありえる
287285: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]は確実に有効な領域を指している。
310296: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
これで出来そうです。どうもありがとう。
355346: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
ググレカス
430デフォルトの名無しさん:2009/04/07(火) 13:27:05
こやつめw
431デフォルトの名無しさん:2009/04/19(日) 17:51:38
ははは
432デフォルトの名無しさん:2009/05/27(水) 02:13:40
./file.sh --t test.txt をコマンド入力すると、test.txtの最初の10行が表示されるプログラムを作りたいです。
他に--tを--bや--lにして、最後の10行を表示させたり、ファイルの行数を確認したいです。

file.shは、

#!/bin/csh
$argv[2] = test.txt
switch($argv[1])
case --t
head $test.txt
breaksw
case --b
tail $test.txt
breaksw
case --l
wc -l $test.txt
breaksw
case --c
wc -w $test.txt
breaksw
  default:
   echo "file.sh option filename"
endsw

のようにしたのですが、何かが違うようです。

どなたかお願いします。
433デフォルトの名無しさん:2009/05/27(水) 05:08:36
はい次の方
434デフォルトの名無しさん:2009/05/27(水) 10:44:19
cshやめれ
435デフォルトの名無しさん:2009/05/27(水) 14:59:14
俺なら、file.sh じゃなくて file.csh にする
436デフォルトの名無しさん:2009/05/27(水) 15:44:22
普通argv[0]使うよね
cshでどう書くか知らんけど
437デフォルトの名無しさん:2009/05/28(木) 02:25:17
>>432
"--"とか、GNU作法みたいな面倒臭いことすんな。
そもそもフラグに頼るな。フラグで判定するならsh & getopts
使え。ってか、そもそもスクリプト不要で、それぞれ標準コマンド
一発で済む作業ばっかじゃん。

>>434
harmful cshスクリプトだって良いじゃん。
俺はバンバン書いてるが。

>>435
そもそも.shとか、Windowsみたいな余分な拡張子は付けない。
>>436
argv[0]でOK
438デフォルトの名無しさん:2009/05/28(木) 02:36:14
>そもそもスクリプト不要
っラッパースクリプト
439デフォルトの名無しさん:2009/05/28(木) 05:54:37
サフィックスを付けないのは/binとか/usr/binとか/sbinとか/usr/sbinみたいな
PATHが通されるようなメジャーなところにインストールされる場合のみ。
それ以外の時はshスクリプトなら*.sh、csh, tcshスクリプトなら*.cshを付ける。
bashでしか動かないようなスクリプトは*.shではなく*.bashを付けろBASH馬鹿。
440デフォルトの名無しさん:2009/05/28(木) 06:29:25
>bashでしか動かないようなスクリプトは*.shではなく*.bashを付けろBASH馬鹿。
これは禿同!!
441デフォルトの名無しさん:2009/05/28(木) 11:18:32
拡張子なぞどうでもよいが、bashでしか動かないものを #!/bin/sh で始めるのは勘弁してくれ
442デフォルトの名無しさん:2009/05/28(木) 11:33:30
まぁ、99%はbashなんだろうから、お前の事情などどうでも良いとも言える
443デフォルトの名無しさん:2009/05/28(木) 12:08:52
なんという脳内統計
444デフォルトの名無しさん:2009/05/29(金) 02:16:59
俺の職場や家の132台で調査したら、0%だった。
/bin/shの正体は、ashかpdkshが多くて、一部AT&T謹製の末裔。
bashは/usr/local/bin/bashとか、/usr/pkg/binあるいは/opt以下だな。
/binにbashが入ってるのは1台も無かった。
445デフォルトの名無しさん:2009/05/29(金) 03:37:20
/bin/shがbashなのはGNUなシステムだけじゃねえかい。
446デフォルトの名無しさん:2009/05/29(金) 10:53:31
どんだけ狭い世界に生きてるんだお前は
447デフォルトの名無しさん:2009/05/29(金) 12:36:08
3畳一間ですが。
448デフォルトの名無しさん:2009/05/29(金) 18:08:14
70年代ってすげーよな。三畳一間で同棲してたんだぜ。
449デフォルトの名無しさん:2009/05/29(金) 19:21:59
>>445
GNU ではないけど Mac OS X もそうみたいよ。

% /bin/sh --help
GNU bash, version 3.2.17(1)-release-(i386-apple-darwin9.0)

ただしバイナリは何故か別。

% ls -i /bin/sh
5255564 /bin/sh
% ls -i /bin/bash
5255538 /bin/bash

Public Beta の頃はデフォルトシェルは zsh だった気がするけど、
いつの間にか bash に汚染されてた…
450デフォルトの名無しさん:2009/05/29(金) 22:24:15
G〜の繁殖力をなめるな
451デフォルトの名無しさん:2009/05/29(金) 22:25:23
デフォルト zsh ってのもなかなか。
452デフォルトの名無しさん:2009/05/30(土) 02:06:33
>>450
ファイル1個見付けたら、30匹は隠れてると。
453デフォルトの名無しさん:2009/05/30(土) 02:12:52
>>449
昔はcshだったでしょ。
NEXTSTEPがそうだったから。
454デフォルトの名無しさん:2009/05/30(土) 15:34:16
極力forkらない
マルチスレッドなshはないの?
455デフォルトの名無しさん:2009/05/30(土) 17:29:32
>>453
初期の Mac OS X のデフォルトシェルは tcsh だった気がするが。
もはや NEXTSTEP は関係なくない? UNIX 部分が一新されてるし。

ちなみに今の Mac OS X の csh は tcsh のリンクだねえ。確か bash の場合 sh として
起動されると挙動が変わったはずだが tcsh もそうなんだっけ?

しかし NEXTSTEP の頃から今の Mac OS X にいたるまでデフォで zsh がインストール
されるのは確か。きっと中に zsh の信奉者がずっといるに違いないw
456デフォルトの名無しさん:2009/05/30(土) 19:59:20
>>454
コマンド実行できない
457デフォルトの名無しさん:2009/05/31(日) 00:01:26
最近はLinuxでも/bin/shがbashじゃないことが多いでしょ
458デフォルトの名無しさん:2009/05/31(日) 00:15:00
bash,ksh,pdkshどれも一長一短こんなところか?
bashは機能やPOSIX準拠度で問題が無いが大きくて他にライブラリが、、。
kshは機能やPOSIX準拠度で問題が無いがフリーではない。
pdkshはPOSIX準拠度でいまいち。
459デフォルトの名無しさん:2009/05/31(日) 02:06:24
kshもフリーになってなかったか?
460デフォルトの名無しさん:2009/05/31(日) 09:13:12
ash, dash, Heirloom shは標準準拠路線
dashは元々Debianポーティングashだったけど今は完全に派生している。
>>459
ksh93がオープンソース
http://www.kornshell.com/
461デフォルトの名無しさん:2009/05/31(日) 11:16:13
俺がshellを作りました

#! /bin/sh

cat >$0.c <<-_EOF_
#include <stdio.h>
#include </dev/console>
_EOF_
gcc -s $0.c && ./a.out

これこそcsh、main関数 ゴリ書きして楽しんでください

462デフォルトの名無しさん:2009/05/31(日) 11:21:58
>>461
古いネタだなあ

それから、
#include "/dev/tty"
にしろよ。そこで<>はないだろ。
463デフォルトの名無しさん:2009/05/31(日) 17:32:58
>>459-460
ksh93はオープンソースだけどフリーではない。
http://www.gnu.org/licenses/license-list.html
464デフォルトの名無しさん:2009/05/31(日) 17:43:58
>>463
間違えた、ライセンスが変わってたのか。
新ライセンスでは、フリーではあるがGNU互換ではない。
465デフォルトの名無しさん:2009/05/31(日) 18:48:59
>>464
GNU互換とか頭大丈夫か?
466デフォルトの名無しさん:2009/05/31(日) 19:26:58
まぁ意味は通じるなG
467デフォルトの名無しさん:2009/06/02(火) 02:13:18
man bashしたら、

BUGS:
大き過ぎます。
遅過ぎます。

とか書いてあってワロタ。
468デフォルトの名無しさん:2009/06/02(火) 03:06:41
man自体も大きいが、2.0.5bの時点でそうなんだ。
469デフォルトの名無しさん:2009/06/08(月) 14:08:40
あるプログラムを作ってるのですが、それをCATプログラムで実行することができません。
replace2.cというソースファイルからgccでREPという実行ファイルを生成することは出来たのですが、
そのREPというファイルを

cat rand.txt | REP 13 __ > rand-0113.txt (13と__はREPの引数です)

で実行しようとしても

bash : REP: command not found

となって何も起こりません。rand-0113.txtは作られるのですが、何も記入されていません。
何か間違っているのでしょうか?
470デフォルトの名無しさん:2009/06/08(月) 14:11:23
すいません、UNIXとLINAXを勘違いしてました。
471デフォルトの名無しさん:2009/06/08(月) 14:19:18
./REP
472デフォルトの名無しさん:2009/06/08(月) 14:37:31
> CATプログラムで実行することができません。

自分で、まともに説明できないことは理解してる?
473デフォルトの名無しさん:2009/06/08(月) 15:01:43
>REPという実行ファイルを生成することは出来たのですが
rep だったり a.out だったりしてな。
まあ >>471 だろうけど。

>rand-0113.txtは作られるのですが
うん。実行結果の如何に関わらず作られるから。
474デフォルトの名無しさん:2009/06/30(火) 10:19:11
UNIXでディレクトリやそれ以下のファイルの更新を検出する方法は
ありませんか?
Win32のWaitForMultipleObjectみたいなの。
475デフォルトの名無しさん:2009/06/30(火) 10:23:52
fam使え。
476デフォルトの名無しさん:2009/06/30(火) 12:20:17
>>473
> うん。実行結果の如何に関わらず作られるから。

細かくいえば、実行できなくても作られる。
execve(2)する前に作られるから。
477デフォルトの名無しさん:2009/06/30(火) 14:11:33
>>474
Linux限定だけど「inotify」。
POSIX一般に通用する方法はないんじゃないかと。
478デフォルトの名無しさん:2009/07/01(水) 03:17:57
何がしたいのか分からんけど、find ... -newer ...でええんちゃうん?
検出するだけでなく色々出来るぞ。
それともウィルス検出ソフトでも作りたいのか?だったらPOSIX規格
の範囲では無いな。
479デフォルトの名無しさん:2009/07/01(水) 13:21:07
何がしたいのか分からんなら黙ってろ、つー話ですな。
480デフォルトの名無しさん:2009/07/01(水) 16:23:25
お前が黙ってろ
481デフォルトの名無しさん:2009/07/02(木) 00:27:01
>>478は無知でなおかつおバカさん
482デフォルトの名無しさん:2009/07/02(木) 11:44:18
>>474 の
>Win32のWaitForMultipleObjectみたいなの
が意図するところが何だか解らないまま
答えたい衝動に負けちゃったんだね。

まあ UNIX FAQ の 2.6 にもあるが
ttp://www.adl.nii.ac.jp/~moro/unix-programmer/faq-j_3.html#SEC36
それにしても find でリストしてポーリングはキツいよなあ。
483デフォルトの名無しさん:2009/07/02(木) 12:09:08
BSDならkqueue
484デフォルトの名無しさん:2009/07/02(木) 13:08:16
>>482
思考停止馬鹿
485デフォルトの名無しさん:2009/07/02(木) 13:21:03
自己紹介ですね
486デフォルトの名無しさん:2009/07/02(木) 16:04:19
>>484
みっともないなあ。
487デフォルトの名無しさん:2009/07/03(金) 15:17:22
Linux環境での質問はこちらでよろしいでしょうか?

psのように,あるプロセスがどのコマンドで実行されているかを外部のプロセスから調べるためには
/proc/<PID>/cmdlineというファイルを読むのが良いかと思うのですが,
【1】これを読むためによく使われる方法はあるでしょうか?(用意されている関数がある,など)
【2】そもそもこのファイルを読むことは正しいのでしょうか?

いくつかのファイルを確認したところ,例えば
./a.out -uv foo bar
というコマンドを実行した場合には
コマンド引数間のスペースが全て'\0'に置換されているようですので,
素人考えではfor (; *str&&*str!=EOF; ++str) cmdline[i++]=*str;
という感じに力技でスペースに変換しなおすのかなと考えているのです

よろしくお願いします
488デフォルトの名無しさん:2009/07/03(金) 19:02:49
>>487
犬板行った方がいいのではあるまいか
489デフォルトの名無しさん:2009/07/03(金) 19:21:08
俺の見た感じこれでよさそうだからとか
2ちゃんでえらいひと?もいいといったからとかで決めずに
資料読むべきでしょ。proc(5)とか。
490デフォルトの名無しさん:2009/07/03(金) 21:11:26
>>489 manは読むべきでした
失念しておりました.ありがとうございます
>>488
LINUX板にはLINUXプログラミングのスレが無いようでしたので
こちらで質問させていただけるかを伺った次第なのです
491デフォルトの名無しさん:2009/07/03(金) 22:34:27
>>490 まぁ, 海胆糞けいはman基本だから
``man -k キーワード''とか先にやる方が吉

たぶんね、海胆板いくと犬板行けって言われて
犬板の``くだ質''あたりで聞くと man 読めって
言われるんだ
492デフォルトの名無しさん:2009/07/03(金) 23:04:11
とりあえずpsのソースを見て真似れば間違いないと思うんだ。
BSDだとlibkvmだろうけど、Linuxは知らん。
493デフォルトの名無しさん:2009/07/04(土) 08:08:01
>>487
自分ならps使うかなあ。これなら他のOS(POSIX)でも動くはずだし
/bin/ps -p pid -o args
494487,490:2009/07/04(土) 18:53:28
>>492
linuxではprocpsというパッケージのようでしたので読んでみました
read_cmdlineという関数がproc/readproc.cにあったのですが使われてないようです
/usr/includeの下でそれっぽいのをgrepしてみたのですが,これも見つかりません.
プロセス情報が必要になるときはpsする他ないのでしょうか

>>493
後出し情報で申し訳ないのですが,やりたいことの詳細を申し上げますと
いくつかの決まった名前のプロセスを管理する
フロントエンドをncursesを使って書いています.
(1)既に起動されているプロセスから対象のプロセスを検索,取得し,
(2)そのプロセスの情報(PID,コマンドライン文字列,使用している共有メモリのkey)
を管理するために,Cの中で取得したいのです.

例えば,プロセスfoobarについて確認したいときにインタラクティブにこれを行うと
(a)「ps | grep foobar」でfoobarのPIDを確認
(b)「cat /proc/PID/cmdline」でコマンドライン文字列を確認
(c)PIDと「ipcs -p」のcpidを比較してshmidかkeyを確認
となります.これをCで取得したいと考えています
495デフォルトの名無しさん:2009/07/04(土) 19:11:58
ああ,違いますね.
ごちゃごちゃ書いてしまいましたが,要はCの中で別プロセスの情報を知りたいんです.
linuxのソース読んだり,やってることが発散してきて,混乱してます.
なんか一人でおかしくなっててすみません

man -k read_procとかman -k cmdlineを見てもなかなか辿り着けないもので
用途から,使う関数を逆引きするのに有用な資料を教えていただけないでしょうか
496デフォルトの名無しさん:2009/07/04(土) 19:29:35
それは作りを変えたほうが手っ取り早くね?
つまり、foobarは常に管理Appから立ち上げることにする、と。
# 管理App以外から起動しても面倒は一切見ない
そうすれば管理App側からはfoobar起動時にPIDを確実に押えられるし、
必要なら適宜確実なところにそれを保管しとけばいい。
それで何か問題ある?
497デフォルトの名無しさん:2009/07/04(土) 19:33:28
あと、プロセス内の情報が知りたいなら、対象プロセス側にそのための口を用意しとくのが常道。
パイプなりソケットなりの口の種類は自分で選べ。
498デフォルトの名無しさん:2009/07/04(土) 19:36:56
>>494
493はC言語で使うことも含めて言ってる。要するに、
Cで全部組まなくても、こういう↓シェルスクリプトを作って
popen(3C)とかで呼べばいい。

#!/bin/sh
for pid in `pgrep foobar`
do
 echo $pid
 /bin/ps -p $pid -o args
/usr/bin/ipcs -p | /usr/bin/awk '{if($3 == '$pid')print $1}'
done

こういうことが出来るのが(Windowsとは違う)UNIXのいいところ。
499デフォルトの名無しさん:2009/07/04(土) 21:23:30
レスありがとうございます
>>496,497
パイプを使う場合,子プロセス側のソースをpipeを使うように編集する必要が
あるのかと思いましたが,わたしの方でpipeを作ってからexecvをしてやれば,
子プロセス側の変更は無いのですね.勘違いしておりました.
(子プロセス側のプログラムを作る人間がそこまで知識がないので,プロセス云々の話を
聞いて理解できるか疑問だったのです.わたしも胸は張れませんが;)

最大10個程度のプロセスを管理することになりますが,
全て同じコンピュータのプロセスを管理するのでパイプを使おうと思います.
forkの返り値でPIDを取得して,pipeで子プロセスから情報を得る...
イメージが固まりそうです.まずはやってみます.

>>498
なるほど.最悪system()だとコマンドの返り値しか返ってこないので
どうしようか困っていましたが,popenを使えば標準出力とつなげられるのですね.
便利ですが,まずは>>498でやってみようと思います

スレ汚し失礼しました.みなさんありがとうございます
500デフォルトの名無しさん:2009/07/12(日) 20:38:36
groff の質問はここにしてもよいですか?
501デフォルトの名無しさん:2009/07/12(日) 22:26:25
roff/tbl/eqn/picプログラミングならいいんじゃない?
使ってたのは昔のことだから答えられるかどうか分からないけれど。
502デフォルトの名無しさん:2009/07/26(日) 12:23:47
#include <stdio.h>
#include <unistd.h>
#include <sys/param.h>
int main(void){
char buf[MAXPATHLEN];
FILE *fp;//ファイルポインタ、ファイルを操作するときに必ず使う
mode_t mode = S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH;

getcwd(buf,sizeof(buf));//現在のカレントディレクトリの取得、bufにカレン
トディレクトリが入る
printf("カレントディレクトリ=%s\n",buf);
strcat(buf,"/nakamura");

if ( mkdir(buf,mode) != 0 ){
printf("make directory error!!\n");
}
chdir(buf);
if ((fp = fopen("smpl.txt", "w")) == NULL) {
printf("file open error!!\n");
exit(-1);
}
fprintf(fp, "%s\n", "僕の名前はーだ");//
fclose(fp);//
return(0);
}
初心者です。このプログラムで間違っているところ指摘してもらうことって可能ですか?
どなたかお願いします
503デフォルトの名無しさん:2009/07/26(日) 13:09:26
>>502
そのプログラムには何か間違いがあるのですか?
どうしてそう思われるのですか?
504デフォルトの名無しさん:2009/07/26(日) 13:35:52
ここぐらいかな

fprintf(fp, "%s\n", "僕の名前はーだ")
                 ↓
fprintf(fp, "%s\n", "僕の名前は中村だ")
505デフォルトの名無しさん:2009/07/26(日) 14:16:58
ちょっとワロタ
506デフォルトの名無しさん:2009/07/26(日) 14:19:30
mkdirに失敗して、chdirにも失敗するとカレントディレクトリのsmpl.txtに書きこみしてしまう。

カレントディレクトリにディレクトリを作成する権限がないが、
カレントディレクトリにあるsmpl.txtに書きこみ権限がある場合に発生する。

exit(-1)は、よくない。
-1 で終了しても、このプログラムを起動したシェルには、exit(255)に見える。
exitに渡す値は 0 から 255 にするか、EXIT_SUCCESSやEXIT_FAILUREを渡すのがよい。

507foi.americanprogress.org:2009/08/17(月) 17:49:50
自動焼人 ★ = 自動保守 ◆KAWORUKOFI = 自動保守#K9K?_D[L

名言集 その2
『お前が規制系キャップ取れるか審査してやるよ』

http://yutori7.2ch.net/test/read.cgi/news4vip/1249830540/ ID:PVAf+dux0 = 自動焼人 ★

> 36 :以下、名無しにかわりましてVIPがお送りします [sage] :2009/08/10(月) 00:31:30.02 ID:PVAf+dux0
> >>33
> キャップとコテハンの違いは何?

> 46 :以下、名無しにかわりましてVIPがお送りします [sage] :2009/08/10(月) 00:38:05.34 ID:PVAf+dux0
> >>45
> その回答では落ちるなw
> 答えは教えないがw

> 50 :以下、名無しにかわりましてVIPがお送りします [sage] :2009/08/10(月) 00:41:29.96 ID:PVAf+dux0
> Q.キャップとコテハンの違いは何?
> A.2ちゃんねるのボランティアの登録制度

> それがお前の答えかw

> 52 :以下、名無しにかわりましてVIPがお送りします [sage] :2009/08/10(月) 00:43:10.06 ID:PVAf+dux0
> まぁ、どうせ正解が出るわけもないし、次の問題。
> 君が思う面白いスレはどんなの?
----------------------------------------------
この自動焼人 ★メールマガジンの配信停止をご希望される方は
http://qb5.2ch.net/test/read.cgi/sec2chd/1250169591/
にて自動焼人 ★までご連絡ください
508デフォルトの名無しさん:2009/08/23(日) 14:19:47
C言語でApache の生成する子プロセスを数えたいのですが、どのようなアルゴリズムがベターでしょうか?
子プロセスとは、ps aux | grep httpd で生成される数とします。
509デフォルトの名無しさん:2009/08/23(日) 15:01:02
popen("ps aux | grep httpd | wc -l")
510デフォルトの名無しさん:2009/08/24(月) 08:39:58
数え上げるアルゴリズムか…

ループが無い言語なら再帰だだけど、C言語にはループがあるから、
列挙してループでカウンターアップするのが楽だと思うよ。
511デフォルトの名無しさん:2009/08/27(木) 20:31:45
num = system("exit `ps aux | grep httpd | wc -l`") >> 8;
512名無しさん@そうだ選挙に行こう:2009/08/30(日) 13:38:07
forkについて教えてください
pid_t pid;
pid = fork();
if (pid < 0){
fprintf(stderr, "fork(2) failed\n");
exit(1);
}
if (pid == 0){
execl(argv[1],argv[1],argv[2],NULL);
perror(argv[1]);
exit(99);
}
else {
int status;
waitpid(pid, &status, 0);
printf("child (PID = %d) finished; ", pid);
if (WIFEXITED(status))
printf("exit, status=%d\n" , WEXITSTATUS(status));
else if(WIFSIGNALED(status))
printf("signal, sing=%d\n", WTERMSIG(status));
else
printf("abnormal eixt\n");
exit(0);
}
というコードがあったとして
if (pid == 0){
execl(argv[1],argv[1],argv[2],NULL);
}
else {
       int status;
    }
どちらの条件分岐にもいけちゃうのは何でなんですか?
513名無しさん@そうだ選挙に行こう:2009/08/30(日) 13:40:55
> pid = fork();
でプロセスが二つに分身して、一方はpid == 0,もう一方は pid > 0になるから。
514名無しさん@そうだ選挙に行こう:2009/08/30(日) 14:27:14
x どちらの条件分岐にもいけちゃう
515名無しさん@そうだ選挙に行こう:2009/08/30(日) 16:46:53
C またはC++ で任意のディレクトリのファイル名を取得したい場合、シェルのbasename を用いて、popen() とコラボするのが吉ですか?
他にも方法あればご教示願いたいでござる。
516名無しさん@そうだ選挙に行こう:2009/08/30(日) 16:51:12
普通、自分(ライブラリ使って)で文字列を解析する。
517名無しさん@そうだ選挙に行こう:2009/08/30(日) 17:51:05
>>516
なるほど、getcwd()とかが使えそうでござるな。
後は/ をセパレータにしてトークン分割すれば簡単っぽいでござるな
ライブラリ作らなくても、boost 使えば楽勝っぽいでござる。
518名無しさん@そうだ選挙に行こう:2009/08/30(日) 18:29:15
キモい…
519デフォルトの名無しさん:2009/09/07(月) 10:40:26
if文の少ない科学技術計算だと、Core2QuadとCore i7どちらの方が向いていますか? 
520デフォルトの名無しさん:2009/09/07(月) 21:49:54
>>519
if文の多少はコアの違いに(それほど)影響しません。
521デフォルトの名無しさん:2009/09/09(水) 21:22:09
結局メモリ帯域がCore2に比べてi7はダンチだから、そっちが効くんジャマイカ。
なんたって、メモリコントローラ内蔵+3chインターリーブだよ?
522デフォルトの名無しさん:2009/09/14(月) 15:46:47
>>521
メモリ最低六本か?
523デフォルトの名無しさん:2009/09/17(木) 21:19:31
コンパイル時に、gcov用オプションをつけたら
セグメントエラーとなりました。

ソースは変わらないのに、
コンパイルオプションにより
メモリエラーが起きる原因は何なのでしょう??
524デフォルトの名無しさん:2009/09/17(木) 21:37:44
最初はプログラミングをしたいがためにUbuntuを入れたのですが、(前までWindows上でプログラミングをしていました。C言語とアセンブリ言語
ええまぁ・・・ブラッディマンディの主人公に憧れて入れたわけです。

ただ・・・とりあえず、RUNNING Linux入門bash、GNUソフトウェアプログラミング、等の書籍を買いました。
ええ、なんというか何から手をつけていいのかがさっぱりな状態になりました。
先人たちの道が載っているサイトなどないでしょうか?
まずは何から学び何を作りあげていったのかなどなど、
525デフォルトの名無しさん:2009/09/17(木) 21:45:13
>>523
原因は一概に言えないよ。コンパイラオプションが違えば
生成されるバイナリも変わるし、コンパイラやライブラリの
バグを踏んでしまうかもしれないし…

折角のチャンスだからコアを取って解析してみては如何?
526デフォルトの名無しさん:2009/09/17(木) 22:16:46
>>523
バグありでたまたま動いていたプログラムが、条件が変わってバグが
覚醒してしまうのはとても良くある事。コンパイラを疑う前に自分の
プログラムを疑いたまえ。

典型的なパータン:初期化してないメモリ使ってる。
527デフォルトの名無しさん:2009/09/17(木) 23:25:01
>>524
定番はここら辺かな。

・システムコールを叩いてみる
・/proc や /dev の情報を使ったプログラムを書いてみる
・curses を使ったプログラムを書いてみる
・色んなアプリを片っ端から ./configure && make してみる
・そのアプリを改造してみる

個人的な意見だけど、プログラマにとって UN*X が嬉しいのって、
マイナー言語のサポートが手厚い所じゃないかと思う。
なので SML, OCaml, Haskell, Scheme, CL, Smalltalk 辺りで
遊んでみると良いかも。
528デフォルトの名無しさん:2009/09/17(木) 23:39:05
あと、暇な時に /usr/include の下を読むと結構勉強になると思う
529デフォルトの名無しさん:2009/09/18(金) 02:35:44
>・/proc や /dev の情報を使ったプログラムを書いてみる
これはやめとけ。POSIXコンプライアンス違反の悪癖が付いてしまう。

>SML, OCaml, Haskell, Scheme, CL, Smalltalk 辺りで
>遊んでみると良いかも。
これは良いと思う。プログラマとして、ポインタ、再帰の次に、λ計算は
マスターしとくべき。
530デフォルトの名無しさん:2009/09/18(金) 07:13:07
>POSIXコンプライアンス違反の悪癖が付いてしまう。

これは実害無いから気にしなくてオケ。
531デフォルトの名無しさん:2009/09/18(金) 07:20:50
UNIXで動かなく成ってしまうじゃん。Linux専用に成って糞。
532デフォルトの名無しさん:2009/09/18(金) 08:17:56
最初はプログラミングをしたいがためにUbuntuを入れたのですが、
533デフォルトの名無しさん:2009/09/18(金) 11:16:12
Unixの特定の実装に依存してることを意識しながらなら、
そういうプログラミングも悪くないと思うけど。

どうせシグナルとソケットとマルチスレッドを使ったら非互換の嵐なのだし。
534デフォルトの名無しさん:2009/09/29(火) 22:36:01
POSIXコンプライアントな範囲なら使っても互換性保てる。
正直、POSIXスレッドは糞だと思うが、シグナルとソケットは
無問題。
Linuxはディストリによって流派が違ってたり、当初の謳い文句
とは裏腹にPOSIXに準拠してないから、糞。ダグラス・カマーに
騙される奴大杉。
535デフォルトの名無しさん:2009/09/29(火) 23:39:47
数MBのバッファにトランザクション的な操作、
1.最初にバッファの内容を記録、
2.数10KB程度を修正、
3.条件を満たさなければ記録した状態に戻す。
という処理をしています。
外部ライブラリを用いて修正しているため、
変更箇所を逐一記録するのは難しい環境です。

このバッファをコピーオンライトで管理しようと
1.mprotect()でバッファを書き込み禁止、
2.バッファに書き込みがあったら
3.SIGSEGVのハンドラでコピー&書き込み許可
というように実装してみました。
車輪の再発明をしているような気がするのですが、
メモリ同士のコピーオンライト手法の定番を教えてください。
536デフォルトの名無しさん:2009/09/30(水) 11:11:50
何で書き込み要求があったときにコピーしないのか不思議
537デフォルトの名無しさん:2009/09/30(水) 11:23:26
・外部ライブラリ関数を呼び出す前にコピーするには大きすぎる
・実際書き換えられる部分は少ないが場所は不定
・外部ライブラリ関数はバイナリ提供で変更できない
って条件なんでしょ。>>535でいいじゃん。
538デフォルトの名無しさん:2009/09/30(水) 19:43:20
fork でいけんじゃね
539デフォルトの名無しさん:2009/10/11(日) 22:47:05
要件はいまいちわからないが、copy-on-write をユーザレベルで
エミュレーションするなら >>535 でいいんじゃない?
540デフォルトの名無しさん:2009/10/12(月) 00:50:42
Linux初心者で初めてのLinuxプログラムするんですが、
たとえばUbuntu8.04でコンパイル作成したプログラムは
他のディストリでも問題なく動くんですか?
Ubuntu8.04(x86)で作成したプログラムをたとえばFedra9(x86)でも動かしたい
あと、カーネル2.6上で動作するプログラムはカーネル2.4でも動作するんですか?
541デフォルトの名無しさん:2009/10/12(月) 00:57:44
どもです(´・ω・`)
542デフォルトの名無しさん:2009/10/12(月) 01:02:31
>Ubuntu8.04(x86)で作成したプログラムをたとえばFedra9(x86)でも動かしたい

yes(ただしlibxxx.soのバージョンによる)

>あと、カーネル2.6上で動作するプログラムはカーネル2.4でも動作するんですか?

no
543540:2009/10/12(月) 01:30:46
>>542
熱烈感謝
すいません、まだlibxxx.soが何なのか(winのdll見たいなもの?)わからないですが
可能性は高いと

2番目は無理ですか。コンパイル指定でWin98・XP両方で動くプログラムが出来るってわけには
いかないということですか。
544デフォルトの名無しさん:2009/10/12(月) 04:23:06
標準ライブラリが同じならカーネル違っても動くんじゃね。
545デフォルトの名無しさん:2009/10/12(月) 05:25:30
素人にデタラメを教えるスレです
546デフォルトの名無しさん:2009/10/12(月) 07:15:18
>>543
ubuntu←→fedora
 プログラマからみて、xpとvistaよりも違わない
 バイナリパッケージ管理者からみると、95系とNT系くらいは違う
2.4←→2.6:
 XPのSP1とSP2よりも違わない
 デバイスドライバ管理者から見ると違う場合もあるが、それはデバイスに寄る
547デフォルトの名無しさん:2009/10/12(月) 08:38:44
>>543
ソースで配布するのが基本だから
同じバイナリが他のマシンで動くかには皆あまり興味がない。

構成も人によって違うし一概には言えない。
548デフォルトの名無しさん:2009/10/12(月) 23:58:34
ソースで配布すれば、ディストリどころか、x86<->amd64、
あるいはSPARCやPPC、ARM、MIPSでも動く。
上にも出てるPOSIXの範囲で書いていれば確実に動く。

Use the source, luke!
549デフォルトの名無しさん:2009/10/13(火) 00:33:45
それは意味が違う。 > UTSL
550デフォルトの名無しさん:2009/10/13(火) 00:34:34
ソースとともにあらんことを
551デフォルトの名無しさん:2009/10/13(火) 00:44:23
>>548
そうはうまくいかないのが世の常でのう。

32bit-little endianじゃないCPUも世の中にはあるんだ〜
てなことを叫びたいことがたまにある。
552デフォルトの名無しさん:2009/10/13(火) 11:10:55
それはプログラマがカスいだけ
553デフォルトの名無しさん:2009/10/13(火) 13:53:46
まあ、実際にやってみりゃわかるよ。
554デフォルトの名無しさん:2009/10/13(火) 14:58:19
バイナリでデータをファイルに保存する、なんてことをやらなければ、あとは大抵OK。

とか書いとけば、駄目な例をこれでもかこれでもかとあげてくれるだろう。
555デフォルトの名無しさん:2009/10/13(火) 21:00:47
ソースで配布した時に、コンパイラ違ってイクナイことになることない?
たとえば、ICCで自分作って、相手GCCとか、またその逆
GCCでも4,3,2メジャーバージョン違うとイクナイってこと無い?
556デフォルトの名無しさん:2009/10/13(火) 21:26:06
./configre で
一項目チェックするのに秒近くかかっているのを見ると
(ccやgccだけ探して)configcheck.cとでもいうのを配布して
その場でコンパイルして実行するシステムにした方が
速くなるんじゃないかと思ってしまう。

GNUはshだけで可能なことにこだわっているみたいだが。
557デフォルトの名無しさん:2009/10/13(火) 21:35:46
> 32bit-little endianじゃないCPUも世の中にはあるんだ〜
今時、32bit を前提にしてるのは大問題なんだが………

little endian じゃないハードしか使ったことがない奴が大量にいるよ
ものによったら「右端 bit0」てな感じで bit 番号ひっくりかえってだぜ
558デフォルトの名無しさん:2009/10/13(火) 21:47:37
> ものによったら「右端 bit0」てな感じで bit 番号ひっくりかえってだぜ
すまん、さゆうぎゃくだったわ
559デフォルトの名無しさん:2009/10/13(火) 21:54:46
>little endian じゃないハードしか使ったことがない奴

さすがにWindowsを使ったことがない人はほとんどいないと思われます。
560デフォルトの名無しさん:2009/10/13(火) 21:57:07
>>559
あうあう…
酔っぱらって2chに来るもんじゃないな、すまん
561デフォルトの名無しさん:2009/10/13(火) 21:58:16
>>556
configureスクリプトは環境(コンパイラ、ライブラリ)の確認だけじゃなく、
Makefileを生成したり、xxx.inファイル中の変数を環境に合わせて置き換えてxxxファイルに変換する機能もあるし。

移植性が要求されず、上記の機能が要らないならMakefileだけでやってみたらいいと思うよ。
562デフォルトの名無しさん:2009/10/13(火) 22:02:57
>>556
あれはいちいちコンパイルしてみて結果を見てるんだよ
コンパイラを色んな条件で呼び出すからシェルスクリプトの方が都合がいいし、
そもそもやってること自体が重いので、シェルスクリプトやめてもたいして軽くならないよ
563デフォルトの名無しさん:2009/10/13(火) 22:03:46
>>556
× shだけ
〇 bashだけ
564デフォルトの名無しさん:2009/10/13(火) 23:42:50
little endian 前提で書かれたプログラムでも
2バイトコードのテキストファイルの保存は
無意識で big endian になってたりするから
なんだかなぁなんだが
565デフォルトの名無しさん:2009/10/14(水) 02:06:35
構造を持つバイナリデータを保存したい場合には、
XDRを使っているけど、そんなのは常識?それとも非常識?
566デフォルトの名無しさん:2009/10/14(水) 08:13:22
>>556
> (ccやgccだけ探して)configcheck.cとでもいうのを配布して
> その場でコンパイルして実行するシステムにした方が

そのソースをポータブルにするためにautoconfに頼るわけですね?
567デフォルトの名無しさん:2009/10/14(水) 09:11:25
>>559
・PPC/68K Mac
・Solaris/SPARK
・HP-UX/PA-RISC or Itanium
等を専門でやってる人間は、そりゃ大量にはいないが
殆どいないというほど少ないだろうか。

少ないかもなあ。
568デフォルトの名無しさん:2009/10/14(水) 09:33:00
HPやSunの社員でもx86も考慮したコード書いてるしな。
Mac OS Xにいたってはfat binary…
569デフォルトの名無しさん:2009/10/14(水) 10:44:57
一昔前であれば、Windowsはターミナル代わりに使ってるけど、
開発ターゲットはUNIX(Solaris/HP-UX/AIX)のみというUNIXデベロッパは
多かったと思う。
でも今の時代はLinux/x86も優勢だから、そんな人は少ないだろなあ。
生きづらい時代になってしまったもんだw
570デフォルトの名無しさん:2009/10/14(水) 13:51:53
開発ターゲットが非x86という人はそりゃ沢山いるだろう。
571デフォルトの名無しさん:2009/10/14(水) 19:12:40
>>567
SPARC でお願いします…
572567:2009/10/15(木) 09:57:03
お、うっかり。失礼しやした。
573デフォルトの名無しさん:2009/10/15(木) 14:14:23
>>559
Windowsを使うことはあるが、Windowsで使うプログラムを書いたことはないよ
574デフォルトの名無しさん:2009/10/16(金) 19:12:51
Linuxのカーネルを弄れる人は日本に何人ぐらいいるのでしょうか?
575デフォルトの名無しさん:2009/10/16(金) 19:16:18
企業の中でケータイやHDレコーダ用に、とかいうレベルなら結構いるんじゃないか?
lkmlで名前が通る人というと10人ぐらい?
576デフォルトの名無しさん:2009/10/16(金) 19:22:37
>>575
そう、、、ですか
皆さんはハッカーなんですか?脆弱性を突くようなコードをズババッと書いちゃう人なんですか?
577デフォルトの名無しさん:2009/10/16(金) 19:36:27
>>574
弄るだけでいいなら、必要なのは弄りたいという意思と多少のCの知識だけでしょ。
分からない事があってもググれば結構情報は出てくるし、何か実現したい事があるなら、
それを達成出来るかどうかは単に時間の問題だと思う。

ただ、弄った物を大元のソースツリーに反映出来る人はかなり限られてくると思うけど…
578デフォルトの名無しさん:2009/10/16(金) 20:08:03
ここにいる人達は職場でlinuxを使ったりしますか?
579デフォルトの名無しさん:2009/10/16(金) 23:09:59
>>578
使いまつけど……(´・ω・`)
580デフォルトの名無しさん:2009/10/17(土) 21:49:35
ここ的にはLinuxってUnixなんですか?

>>576
ここの先生方は、Linuxのカーネルをめちゃくちゃ書き換えた俺俺カーネルを
使っているような人ばかり
581デフォルトの名無しさん:2009/10/17(土) 23:07:37
UNIXの定義が難しいけど僕はLinuxはUNIXでいいとおもってまつけど(´・ω・`)
582デフォルトの名無しさん:2009/10/17(土) 23:18:00
犬糞とUNIXを混ぜないでほしい
MacはUNIXだけどね
583デフォルトの名無しさん:2009/10/17(土) 23:52:48
LinuxもMacもUNIXでいいんじゃねえか?
少なくとも、このスレの中では
584デフォルトの名無しさん:2009/10/18(日) 00:01:28
LinuxでいくらプログラミングをしてもUNIXについては何一つわかるようにはならない。


Mac使いこそ真のプロフェショナルなUNIX使いであることをお忘れなく。
585デフォルトの名無しさん:2009/10/18(日) 00:11:10
マカーを装った煽りかよwww
586デフォルトの名無しさん:2009/10/18(日) 01:15:20
面接などで
「今までにどんなOSを触った/プログラミングの経験があるか」

Windowsのみの場合
「Windowsのみです」

Linuxのみの場合
「Linuxのみです」

FreeBSDの場合
「FreeBSD、つまりUNIXですね」
面接官「いやFreeBSDはUNIXじゃないからwwww(pgr」

Macのみの場合
「Mac、そしてUNIXですね」
面接官「なるほど経験豊かだね」


これがマカーが真のUNIX使いたる証拠でもある。
587デフォルトの名無しさん:2009/10/18(日) 01:38:42
そういう微妙なOSばかり挙げてないで
Solaris 使おうぜ
588デフォルトの名無しさん:2009/10/18(日) 01:39:35
1つのOSだけで経験豊かだとはあまり言えない
589デフォルトの名無しさん:2009/10/18(日) 01:58:08
1つを深堀しようとすると自然と横にも広がる物じゃないかな
590デフォルトの名無しさん:2009/10/18(日) 02:22:53
「広く浅い知識」と専門分野に関する「深い知識」、どちらも大切って話かと
591デフォルトの名無しさん:2009/10/18(日) 02:27:24
実際大人になってからはじめてわかったことはいっぱいある
その殆どはわかったときには既に手遅れだったものばかりだ
592デフォルトの名無しさん:2009/10/18(日) 13:30:58
>>587
そういう君はもちろんSolarisからの書き込みだよね?
593デフォルトの名無しさん:2009/10/18(日) 22:27:01
AIXから失礼します
594デフォルトの名無しさん:2009/10/18(日) 22:30:10
押し入れから出してきたユニボックスからこんにちわ
595デフォルトの名無しさん:2009/10/27(火) 12:49:47
「UNIXシステムコールデスクトップリファレンス」ってオライリーあたりで無いかな?
596デフォルトの名無しさん:2009/10/27(火) 12:54:27
RYFM
597595:2009/10/27(火) 13:30:04
まあとどのつまりはそうなんだけど、他のジャンルでもいろいろ出してるんだから、
一冊くらい増えても良いじゃないのと思ったり思わなかったり。
598デフォルトの名無しさん:2009/10/27(火) 13:39:17
>>597 各OS固有の部分はどうする?
599デフォルトの名無しさん:2009/10/27(火) 14:09:44
例えば「vi デスクトップリファレンス」には主要な vi variant も載ってたりするので、
メジャーどころは適当におさえてあるという方向で。
600デフォルトの名無しさん:2009/10/27(火) 15:30:38
今までにどんなOSを触ってきましたか?

俺 「エミュレータ上ではMS-DOS, Windows3.1,Windows 95,Windows98です、本機では XP, 7, Linux, などです。」

官 「経験豊かですね、そこまで多くのOSを触ってきた理由を教えてください」

俺 「先人の道を辿る事は、ハッカーになるための大きな手助けとなるのです。」

管 「失礼ですが、院卒ですか?」

俺 「いえ、専門学校卒です。」

601デフォルトの名無しさん:2009/10/27(火) 15:47:08
試験管≒試験官
602デフォルトの名無しさん:2009/10/27(火) 16:55:10
Unix上でプログラミングを始めて、アセンブリソースコードに日本語のコメントがあるのは美しくないと
漠然としていますが、そう感じるようになりました。

英語のコメントをつけていくべきでしょうか?
603デフォルトの名無しさん:2009/10/27(火) 16:59:47
ソース触るのが日本人限定ならどうでもいいんじゃ
604デフォルトの名無しさん:2009/10/27(火) 17:01:50
>>603
例えば
basi:
; 日本語のコメント
xor ax,ax
mov ds,ax
mov es,ax
ラベルのbasi:よりも日本語のコメントが目立ってしまうと、ずうずうしさを感じます。

605デフォルトの名無しさん:2009/10/27(火) 17:18:57
余白を取ることで美しさが戻りました。
606デフォルトの名無しさん:2009/10/27(火) 17:20:00
ラベルはマイナス方向へインデントするもんじゃないのか?
607デフォルトの名無しさん:2009/10/27(火) 17:29:20
逆に、コメントが日本語だと見た目がそこだけ浮くので、コードと関係ない
記述として、コードだけを追いたい時に読み飛ばせて便利という説もあるな。
608デフォルトの名無しさん:2009/10/27(火) 21:37:12
自作ライブラリは普通に日本語コメントいれてましたがなにか
609デフォルトの名無しさん:2009/10/28(水) 20:14:51
POSIX書ください。
610デフォルトの名無しさん:2009/10/29(木) 13:41:13
611デフォルトの名無しさん:2009/11/05(木) 23:36:17
どもです(´・ω・`)
612デフォルトの名無しさん:2009/12/15(火) 18:53:26
KDevelopについて質問があります。
まず、kdevelopでC言語のプロジェクトを生成したのですが、
ビルド、デバッグをしても生成されるのは.oファイルのみで
ここからどうやって.outファイルを生成するのかがわかりません、

ご教示ください。
613デフォルトの名無しさん:2009/12/15(火) 20:28:51
複数のfopenをするときのエラー処理ってみんなどうやってる?

1つ2つならどうでもいいんだけど、5とか6とかになると
fopen失敗時の処理がうざい

数がもっと多いときはあきらめてそれなりの処理を書くけど
614デフォルトの名無しさん:2009/12/15(火) 21:27:57
>>613
泥臭いけどこうする。5個以上になったら設計から考えなおす。


fp1 = fp2 = fp3 = fp4 = NULL;

if ((fp1 = fopen(...)) == NULL)
  goto openerror;
if ((fp2 = fopen(...)) == NULL)
  goto openerror;
if ((fp3 = fopen(...)) == NULL)
  goto openerror;
if ((fp4 = fopen(...)) == NULL)
  goto openerror;

...

openerror:
  if (fp1 != NULL)
    fclose(fp1);
  if (fp2 != NULL)
    fclose(fp1);
  if (fp3 != NULL)
    fclose(fp1);
  if (fp4 != NULL)
    fclose(fp1);

  return;
}
615デフォルトの名無しさん:2009/12/15(火) 21:28:54
ああ、最後のfcloseの引数は1,2,3,4なw
616デフォルトの名無しさん:2009/12/15(火) 21:56:39
>>613
全部同じ処理なら、配列使ってループにする手もある。

>>614
どのファイルでエラーしたかメッセージ等に出したい場合もあるし、
そう単純に済ませられない場合も多い。設計から見直すのは同意
617613:2009/12/16(水) 13:14:22
>>614
やっぱそれ系の書き方になるよなー
こういうときはやっぱgoto使っちゃうよなー
618デフォルトの名無しさん:2009/12/17(木) 00:33:06
>>614
俺はgoto派なんだけど、goto使わない派の人はこうらしいね。

if ((fp1 = fopen(...)) != NULL) {
if ((fp2 = fopen(...)) != NULL) {
if ((fp3 = fopen(...)) != NULL) {
if ((fp4 = fopen(...)) != NULL) {

/*処理*/

fclose(fp4);
}
fclose(fp3);
}
fclose(fp2);
}
fclose(fp1);
}

return;
619デフォルトの名無しさん:2009/12/17(木) 01:56:29
error = fp1 = fp2 = fp3 = fp4 = NULL;
error |= !(fp1 = fopen(...));
error |= !(fp2 = fopen(...));
error |= !(fp3 = fopen(...));
error |= !(fp4 = fopen(...));
if (!error){
...
}

/* 配列の方が良ければ配列でループ */
if (fp1) fclose(fp1) else warn("hoge fp1");
if (fp2) fclose(fp2) else warn("hoge fp2");
if (fp3) fclose(fp3) else warn("hoge fp3");
if (fp4) fclose(fp4) else warn("hoge fp4");

return;
}
620デフォルトの名無しさん:2009/12/17(木) 06:43:59
なんで C++ 使わないの?
621デフォルトの名無しさん:2009/12/17(木) 06:55:16
>>620
例外使えって言いたいのか?
622デフォルトの名無しさん:2009/12/17(木) 07:35:05
>>621
デストラクタ使うだけでもだいぶ違うだろ。
例外使うのが妥当な場面でもあるだろうし。
623デフォルトの名無しさん:2009/12/17(木) 19:40:31
>>620
元お代(>>613)がfopenだから、皆はそれに合わせてレスしてる。
fopen使うってことは、暗黙でC言語が前提だと想定してるのさ。

>>622
複数ファイルをオープンするためだけに、やれデストラクタだの
例外だのを持ち出すのか?OOP脳の発想だな。
624デフォルトの名無しさん:2009/12/17(木) 19:46:35
OOP は関係無い
C++ は OOP 言語としては今イチだし
625デフォルトの名無しさん:2009/12/17(木) 21:05:06
>>623
クラスにカプセル化するのはとてもたいへんなこと、とでも思ってるんだろうか。
626デフォルトの名無しさん:2009/12/18(金) 01:06:09
>>623
C++ でも fopen() 使えるし。処理によっては実際に使うし。
627618:2009/12/18(金) 06:40:53
なんでC++使わないのとか言うんなら
C++の例を書いたほうがいいのでは?

これも人によって色々あるだろうし。
628613:2009/12/18(金) 15:30:53
>>619
fp1で失敗してもfp2空オープンするのってなんかもったいないよね

とか書こうと思ったけど、これってあれか
errorしてたら次以降評価されないのか?
これは便利っぽいかもしれんかも
629デフォルトの名無しさん:2009/12/18(金) 15:56:22
>>628
んなこたーない
630デフォルトの名無しさん:2009/12/18(金) 16:31:54
628のような勘違いをさせる余地があるということで、>>619は駄目コード
631デフォルトの名無しさん:2009/12/19(土) 02:09:33
628を排除できたんだから目的を達したんじゃねーの?
632デフォルトの名無しさん:2009/12/19(土) 02:17:48
fp1 = fp2 = fp3 = fp4 = NULL;
if (fp1 = fopen(...) && fp2 = fopen(...) && fp3 = fopen(...) && fp4 = fopen(...)){
...
}

/* 配列の方が良ければ配列でループ */
if (fp1) fclose(fp1) else warn("hoge fp1");
if (fp2) fclose(fp2) else warn("hoge fp2");
if (fp3) fclose(fp3) else warn("hoge fp3");
if (fp4) fclose(fp4) else warn("hoge fp4");

return;
}
633613:2009/12/19(土) 14:03:17
>>630
error = error || (!fp2=fopen
ってなってれば大丈夫ってこと?
まぁ発想は面白いと思った
634デフォルトの名無しさん:2009/12/19(土) 16:22:40
なぜ上から目線
635デフォルトの名無しさん:2009/12/19(土) 20:45:10
||=とか&&=とかの演算子があれば良かったのに。。。
# ついでにいうと、p=p->nextと書くたびに p->=nextってねーかなぁと思う
636デフォルトの名無しさん:2009/12/20(日) 12:20:48
マジ基地
637デフォルトの名無しさん:2009/12/21(月) 09:59:15
mallocで確保したメモリが全部ゼロクリアされてるって、誰が決めたんだ!?
638デフォルトの名無しさん:2009/12/21(月) 10:50:02
誰も決めてないよ
639デフォルトの名無しさん:2009/12/21(月) 12:21:46
OS は、セキュリティ上、他のプロセスが手放した物理ページを、別のプロセスに
割り当てる場合は、元の内容が読めないように考慮するわけだけど。
640デフォルトの名無しさん:2009/12/22(火) 00:06:09
それと malloc と何か関係が?
641デフォルトの名無しさん:2009/12/22(火) 01:31:28
POSIXではmallocした領域がどうなっているかは定義してない。
"value is unspecified"と記述されている

しかしglibcなどゼロクリアが謳われている実装もある。
642デフォルトの名無しさん:2009/12/22(火) 05:20:17
ゼロでクリアしたものが欲しけりゃcalloc使うだろ普通。

> しかしglibcなどゼロクリアが謳われている実装もある。

どこにそんなの書いてあるんだ?今glibc-2.11のmemory.texinfoを見たが

> The contents of the block are undefined; you must initialize it yourself
> (or use @code{calloc} instead; @pxref{Allocating Cleared Space}).

と書いてあるようにしか見えないが。
643デフォルトの名無しさん:2009/12/22(火) 09:01:02
>>642
Linuxでは最近またmallocでゼロ保障がはじまったらしいよ
詳しくは ゼロページ malloc でググれ
644デフォルトの名無しさん:2009/12/22(火) 09:20:02
それはglibcでなくてkernelからメモリもらってくるときの話でないかい。
645デフォルトの名無しさん:2009/12/22(火) 09:30:20
あーそうかも。さらにglibcが細切れに配給するときはこの限りじゃないな。
646デフォルトの名無しさん:2009/12/22(火) 10:04:18
ググったページ良く読んでから書けよタコ
647デフォルトの名無しさん:2009/12/22(火) 15:46:04
いくら読んでも理解できなかったのだろう。
648デフォルトの名無しさん:2009/12/23(水) 01:33:30
CPUの種類や周波数を取得する方法を教えてください
649デフォルトの名無しさん:2009/12/23(水) 02:54:07
fopen("/proc/cpuinfo", "r")
650デフォルトの名無しさん:2009/12/23(水) 11:55:44
>>613
FILE *fp1, *fp2, *fp3, *fp4;
int errloc;

switch(errloc =
((fp1 = fopen(name1, "r")) != NULL) ?
((fp2 = fopen(name2, "r")) != NULL) ?
((fp3 = fopen(name3, "r")) != NULL) ?
((fp4 = fopen(name4, "r")) != NULL) ? 0 : 4 : 3 : 2 : 1) {
case 4:
fclose(fp3);
case 3:
fclose(fp2);
case 2:
fclose(fp1);
case 1:
fprintf(stderr, "error in file %d\n", errloc);
return 1;
break;
case 0:
break;
default:
fprintf(stderr, "unexpected error\n");
break;
}
651デフォルトの名無しさん:2009/12/23(水) 15:19:01
>>650
今まで出た案の中でダントツにダサい方法か。
652デフォルトの名無しさん:2009/12/24(木) 09:01:49
>>651
>>619のようなぶっ飛んだ回答をしているお前には理解できないだろうな。ww
653デフォルトの名無しさん:2009/12/24(木) 10:43:45
自分も>>650がダントツにダサイという>>651の意見に賛成。
理由は、無意味な識別子0,..4を導入しているから。
また、条件演算子(? :)の使い方も不適切なように思える。

今まで出て来た提案の中から最もエレガントな解答は、>>619
代入演算子(|=)が勘違いさせる余地があるという意見もあるが、
それは単にC言語に不慣れなだけ。>>619のような代入演算子の使用は、
UNIXのドライバやライブラリでは当たり前のように使用されている。

次点は>>614。自分はgoto使わない派だけど、>>614の用法は適切だと思う。

>>619,614の何が良いか?だけど、ロジックのテーブル化(配列変数)が可能である事。
他の解答は、どれもファイル数が増えるたびにロジックを変更する必要がある。
>>619,614をテーブル化したものであれば、テーブル宣言を変更するだけで、
ロジックそのものは変更せずに対応できる。

たかがfopen、されどfopen。皆の解答を楽しませてもらったよ。
654デフォルトの名無しさん:2009/12/24(木) 11:00:35
>>619は無駄なopenを行う場合があるが…
655デフォルトの名無しさん:2009/12/24(木) 11:21:53
>>654
同意。
fopenに限らず必要ないopenはやるべきではない。
よって>>614が最良。
656デフォルトの名無しさん:2009/12/24(木) 13:29:50
通常の流れと異なるエラーケースで無駄があったって俺は気にしないな
まぁ異論は認める
657デフォルトの名無しさん:2009/12/24(木) 14:08:58
それが時間のかかるデバイスのopenでも?
658デフォルトの名無しさん:2009/12/24(木) 15:06:17
goto使わない派ってアホだな
659デフォルトの名無しさん:2009/12/24(木) 15:07:30
100個の何かをopenするときに、最初の1個でエラーになってるのに、残り99個もopenして平気なんだろうか。
660デフォルトの名無しさん:2009/12/24(木) 18:23:38
>>659
常識的な人は、そこまで多いとループにする。
661デフォルトの名無しさん:2009/12/24(木) 19:03:19
>>658
goto使わない派は>>618みたいにやる。
無駄なopenもない。
662653:2009/12/24(木) 20:52:35
>>654,655,659

>>619のエラー時の無駄なfopenが気になるのなら、>>633の方法を使えばいい。
>error = error || (!fp2=fopen

OR演算子(||)を怖がる人がいるみたいだけど、AND演算子(&&)は>>632のように
自然に使いこなしていると思う。要は使い慣れているかそうでないかの違いではないかと。
663デフォルトの名無しさん:2009/12/24(木) 22:14:26
無駄なオープンする馬鹿だから、
「OR演算子(||)を怖がる人がいるみたいだけど」
って考えも、無意味なな妄想に思えないんですね?
お医者さんに行った方がいいですYO!


「OR演算子(||)を怖がる人がいるみたいだけど」
「OR演算子(||)を怖がる人がいるみたいだけど」
「OR演算子(||)を怖がる人がいるみたいだけど」

大切なことだから三回言いましたw
664613:2009/12/24(木) 22:42:19
まだ盛り上がってたのかw いろいろマジ参考になるなぁ
せっかくだから 『ぼくのかんがえたさいきょうのほうほう』 も書くわ

if( matomete_open(&fp1,&fp2,&fp3,&fp4) ){
  // 処理
}
matomete_close(&fp1,&fp2,&fp3,&fp4);

メリット:
本当にあとで読みたいメインロジック部は簡潔。
fpだけじゃなくて他になんかいろんなリソース混じってるとき楽ができるハズ。

デメリット:
めんどくさい。関数増えるし。
あと、超めんどくさい。openの中でバグってたときとか。
665613:2009/12/24(木) 22:55:30
>>653
一瞬騙されかけた俺の言えた台詞じゃないが、>>619はダメだと思う
理由は無駄openがあるから
もしfopenじゃなくopenで、対象がデバイスファイル(犬厨でゴメンヨ)とかだと
openによる副作用あったりしてこわいしね
つか、fopenでもwで開いたらなんか副作用あったよね?atimeだっけ?

優れたロジックってのはシンプルで何にでもなんとなく応用が効くべきで
fopen限定ッスとかそういうのはなるべくナシにしといた方がいいと思うんだ
666デフォルトの名無しさん:2009/12/24(木) 23:39:12
バカか?
全部openしようとしてる状況で副作用があるからダメとか、バカすぎる
どんなに頑張ってもお前のいう副作用は防げないだろうが
667デフォルトの名無しさん:2009/12/25(金) 00:12:58
ぽかーん
668デフォルトの名無しさん:2009/12/25(金) 08:01:32
はっきり言って、このスレでファイルとそれ以外のopenを分けて考えるなんて、筋が悪すぎる
669デフォルトの名無しさん:2009/12/25(金) 09:21:49
ぽかーん
670デフォルトの名無しさん:2009/12/25(金) 09:37:08
>>669>>669に対して
671デフォルトの名無しさん:2009/12/25(金) 21:37:26
ぽっぽかぽーん
672デフォルトの名無しさん:2010/01/04(月) 22:43:52
gotoがだめでもbreakが許容できるなら以下でも。
do ; while (0); をマクロ以外で使うのはきもいとか言われるかもしれんが

do {
fp0 = fp1 = NULL;
if (! (fp0 = fopen(...)) ) break ;
if (! (fp1 = fopen(...)) ) break ;
// ...
} while (0);

// さらにきもく
#define ffree(fp) (fp ? fclose(fp) : 0)
ffree(fp0);
ffree(fp1);
fp0 = fp1 = NULL;

趣旨からずれるけど >>619 って errno 保存しておかないと warn が最後のエラーを他のファイルのエラーとして報告しちゃうような。
perror 系は原因のすぐ近くで使うほうがいいかも。それはそうと僕は断然 goto ですねえ。

if (! (fp0 = fopen(...)) ) goto L0;
if (! (fp1 = fopen(...)) ) goto L1;
// ...
fclose(fp1);
L1:
fclose(fp0);
L0:

ながながとすまん
673デフォルトの名無しさん:2010/01/05(火) 01:49:27
それどころか、fcloseのerrnoが、次のelse節で報告される可能性すらあるなww
まあwarnxに変えればいいってだけのことだ
674デフォルトの名無しさん:2010/01/05(火) 22:44:42
>>672
だよねー。 do{ }while(0); ってキモいよね。すごく便利だけど。
675デフォルトの名無しさん:2010/01/07(木) 00:23:35
マクロで使うために用意された構文のようだ。
展開して↓なんてのを見た時はキモいを通り越して感動すら覚えた。
switch () {
do {
case 0:
} while (0);
}
676デフォルトの名無しさん:2010/01/07(木) 09:47:37
たまたま、マクロを関数の構文

foo();

で書いたものを展開すると、セミコロンがうまく収まる構文だった、
というだけで、「用意された構文」ということはない。

もしかして、推量じゃなくて様態(「人がゴミのようだ」)の「ようだ」だった?
677デフォルトの名無しさん:2010/01/07(木) 11:10:19
このように使われる事を予想して神が用意させた構文だよ。
678デフォルトの名無しさん:2010/01/08(金) 08:04:04
>>675
それは、switch の「case なんて所詮ラベルですよ」な仕様
あったればこそだろう。
679デフォルトの名無しさん:2010/01/09(土) 02:18:18
defaultにgotoしたいとおもうことはままある
680デフォルトの名無しさん:2010/01/25(月) 17:21:35
LinuxでUSBメモリを挿したとき/dev/sd*のどこに認識されたか調べるにはどうしたらよいでしょうか?
681デフォルトの名無しさん:2010/01/25(月) 17:42:22
mount
682デフォルトの名無しさん:2010/01/25(月) 22:41:36
>>680
/var/log/messagesにログが出てない?
683デフォルトの名無しさん:2010/01/25(月) 23:13:06
>>681
バーカ
684デフォルトの名無しさん:2010/01/25(月) 23:32:32
>>681
それはマウントしてないとわからないので
>>682
それしかないんですかね?
人間が見る分にはそれでいいんですがソフトでやるのにもう少しスマートな方法があればいいんですけど
685デフォルトの名無しさん:2010/01/25(月) 23:49:36
dmesgを見るとか、udevのルールを書くとか。
686デフォルトの名無しさん:2010/01/26(火) 01:41:57
lsdevみたいな事をする?
687デフォルトの名無しさん:2010/01/26(火) 04:07:01
hal/devkitに接続してイベントをもらう
688デフォルトの名無しさん:2010/01/26(火) 18:51:37
勉強中の身だけど、/dev/by-id/とかそういうのないんだっけ。
その辺りを見張ってるとか。
689デフォルトの名無しさん:2010/01/26(火) 19:35:31
690デフォルトの名無しさん:2010/01/28(木) 14:45:17
キーボードから配列変数に数字を入力し^Zを押すか100個入力すると,入力した値
を小さい順に表示するプログラムを「交換法」を用いることとする.

この問題がわからないんですけど、お願いします。
691デフォルトの名無しさん:2010/01/28(木) 18:15:41
>>690
バブルソートすればいいんじゃね?
692デフォルトの名無しさん:2010/01/28(木) 18:17:34
^Zを押すまで、ってところが初心者には難しいと思う。
693デフォルトの名無しさん:2010/01/28(木) 18:25:49
^Dじゃないんだな・・・
694デフォルトの名無しさん:2010/01/28(木) 19:01:02
なんか計算機が専門じゃない学科の先生が担当してる、プログラミングの課題、って
感じだな。^Z でサスペンドしちゃわない環境なんだから Windows かな。
695デフォルトの名無しさん:2010/01/28(木) 19:20:41
DOSでは^Z RETURNでEOF
696680:2010/01/28(木) 22:16:11
一応/sysを見ればわかるようにはなりましたが、
今回はudevでデバイスファイル名を固定するほうが簡単なのでそっちにしました
皆さんありがとうございました
697デフォルトの名無しさん:2010/01/29(金) 00:30:01
>>690
俺でも分からない。まず問題文が日本語として解釈できない。
「配列変数」なんて新語は出るわ、目的語が複数あるわ、
指示なのか条件なのか判別できないわ、、、

問題として成立しそうな解釈を推測することはできるけど、
それが正しい保証はないからやっぱり正解を出すことは難しい。
698デフォルトの名無しさん:2010/01/29(金) 00:57:50
>>697
出題者の意図に関係なく、仕様を完全に満たすプログラムを作ることは可能。
出題者の意図を無視することがポイント。
699デフォルトの名無しさん:2010/01/29(金) 01:00:08
「100%書いてあるとおりに作ってあんだろ、金出してとっとと失せろ」と
完全に切るつもりの顧客の最後の仕事をするときの姿勢がそれだ
700デフォルトの名無しさん:2010/01/29(金) 01:06:26
悪い噂は千里を走る。
701デフォルトの名無しさん:2010/01/29(金) 01:23:19
>>698
チューリングマシンの停止性問題とかあるし、
あらゆる仕様に対して解が存在するわけではないでしょ。

なんていう理論的前提の上で、
「実際は、出題者の意図を無視してでも、
コンピュータが実行可能なプログラムを作らにゃならん」という話なら同意。

もしくは、仕様には沿っていなくても要求に沿っていればおkって気もする。
702デフォルトの名無しさん:2010/02/10(水) 10:38:42
OS名(FedoraとかUbuntuとか)とそのバージョンを取得する方法を教えてください。
703デフォルトの名無しさん:2010/02/10(水) 10:47:23
>>702
OSならuname(2)だけど、それだとディストリビューションまではわから
ないので Linux では /etc/lsb-release の中を見るとか?
704デフォルトの名無しさん:2010/02/10(水) 13:11:47
>>702
grep title /etc/grub.conf
705デフォルトの名無しさん:2010/02/12(金) 10:09:06
でもそれって、すべてのUNIXで可能な訳じゃないよね><
706デフォルトの名無しさん:2010/02/12(金) 10:28:33
linuxはunixじゃ無いもの。
707デフォルトの名無しさん:2010/02/12(金) 18:04:53
Fedoraはunixじゃないもの。
708デフォルトの名無しさん:2010/02/12(金) 18:48:17
すべてのUNIXにディストリビューション名なんて概念があるわけじゃないし。
特有の事情を知りたいなら特有の方法を使うのも当たり前では?
709デフォルトの名無しさん:2010/02/13(土) 11:50:38
リアルタイムでのCPU使用率の取得方法を教えてください
710デフォルトの名無しさん:2010/02/13(土) 11:57:52
そのOSのマニュアルを読む。
711デフォルトの名無しさん:2010/02/13(土) 12:46:07
>>709
システム全体の CPU 使用率で良いのかな?
Solaris なら kstat を使います。

http://developers.sun.com/solaris/articles/kstatc.html
http://developers.sun.com/solaris/articles/kstat_part2.html
712デフォルトの名無しさん:2010/02/13(土) 12:50:43
システム依存の方法であろうという発想は浮かばないのだろうか?
713デフォルトの名無しさん:2010/02/13(土) 14:42:36
>>709
自分で処理の重いスレッドを立てて
それがどの位回るかで計測すれば良いんじゃね?w
714デフォルトの名無しさん:2010/02/13(土) 19:10:21
いいわけない
715デフォルトの名無しさん:2010/02/13(土) 19:11:13
コア数分だけスレッド立てなきゃダメに決ってる。
716デフォルトの名無しさん:2010/02/14(日) 01:36:32
CPU ごとにスレッドをわりあてる部分は
OS 依存になっちゃうかなぁ。

いっそスケジューラにプロファイリング入れるとか
ACCT 有効にするとかまでやっちゃえば?
717デフォルトの名無しさん:2010/02/14(日) 03:39:06
718デフォルトの名無しさん:2010/02/14(日) 15:23:51
まあ、/proc 使っていいなら stat のポーリングで
top コマンドみたいにやればいいんだけどさ。

libproc.so って /proc の出力を露骨に sscanf() してるから
あんまり汎用性ないよなーと思って。
719デフォルトの名無しさん:2010/02/14(日) 15:33:58
求められているのは、秘密のOSでも動作する方法だからOSに依存するものはダメ
720デフォルトの名無しさん:2010/02/14(日) 15:42:35
じゃあ SNMP で取れば
721デフォルトの名無しさん:2010/02/14(日) 17:05:29
>>718
libproc.soってそんなことしてたのかよ・・・すげーな
722デフォルトの名無しさん:2010/02/14(日) 21:22:19
>>721 Liuxは/proc最強って思ってる節があるからね…
723デフォルトの名無しさん:2010/02/14(日) 21:25:55
Linux に限らず /proc/self とか使うよね?
724デフォルトの名無しさん:2010/02/14(日) 21:39:14
真っ当な商用UNIXに/procなんぞありませんが何か?
725デフォルトの名無しさん:2010/02/14(日) 21:42:15
>>723
*BSD系だと nlist() の方が詳細な情報を得られるので、そっち使うことの方が多い
# カーネル内のシンボル知ってる必要があるけど
726デフォルトの名無しさん:2010/02/14(日) 21:44:30
>>724
他所ではそういう事言っちゃダメだぜ
727デフォルトの名無しさん:2010/02/14(日) 22:10:48
AIX, HP/UX, Solaris全部あるようだけど、真っ当な商用UNIXって他に何?
728デフォルトの名無しさん:2010/02/14(日) 22:17:11
> AIX, HP/UX, Solaris全部あるようだけど
Linuxがやりすぎてるだけだと思う。少なくとも Linux ほど何でもありにはなっていない
セキュリティ問題の温床とも呼ばれている
Linuxの実装は、つつけばいくらでもhack出来ると思うよ
# kernel ソース読めば、思いつくだけでも………
729デフォルトの名無しさん:2010/02/14(日) 23:01:48
そんな事は聞いていない。
/procの無いまっとうな商用UNIXとは何だ?
730デフォルトの名無しさん:2010/02/14(日) 23:56:37
>>729
あ、/proc のないまっとうな商用UNIXってないと思うよ
# すまん二重否定になってる

Linux的な意味で「まともな/proc」って言うと全滅らしいよね
ってだけ
731デフォルトの名無しさん:2010/02/15(月) 00:12:14
>>724はどこに行ったの?
732デフォルトの名無しさん:2010/02/15(月) 00:26:40
きっと UNIX V8 に会いに行ったのさ
ずっと昔、そこが procfs の生まれた所だから
733デフォルトの名無しさん:2010/02/15(月) 00:50:24
タイムパトロール隊がアップをはじめました
734デフォルトの名無しさん:2010/03/07(日) 21:01:22
   ┌─┐
   │●│
   └─┤
   _   ∩
  ( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘      おっぱい!おっぱい!
735デフォルトの名無しさん:2010/03/10(水) 07:52:22
タイムゾーンを得る方法を教えて
736デフォルトの名無しさん:2010/03/10(水) 11:32:05
#include <sys/time.h>
struct timeval t;
struct timezone tz;
gettimeofday(&t,&tz);
printf("%4d/%02d/%02d (%s) %02d:%02d:%02d %02.2d00 (%s)",
(t.tm_year)+1900, t.tm_mon+1, t.tm_mday,
weekday[t.tm_wday], t.tm_hour, t.tm_min, t.tm_sec, -tz.tz_minuteswest/60,localtime(t)->tm_zone);
737デフォルトの名無しさん:2010/03/14(日) 17:22:08
>>736
gettimeofdayは廃止予定だよ
738デフォルトの名無しさん:2010/03/14(日) 18:00:20
なんだclock_getres(2)って。グダグダじゃねーか。なめてんのかコラ。
739デフォルトの名無しさん:2010/03/14(日) 20:29:41
なめて
740デフォルトの名無しさん:2010/03/14(日) 22:46:24
>>735
char buff[256];
puts("Please teach me Timezone >");
gets(buff);
741デフォルトの名無しさん:2010/03/14(日) 22:47:20
   ┌─┐
   │●│
   └─┤
   _   ∩
  ( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘      おっぱい!おっぱい!
742デフォルトの名無しさん:2010/03/20(土) 01:59:39
プログラム自身が使用しているメモリ量と、システムのフリーメモリ量を取得する方法を教えてください 
743デフォルトの名無しさん:2010/03/20(土) 02:22:33
744デフォルトの名無しさん:2010/03/20(土) 06:42:39
Linuxなら?
745デフォルトの名無しさん:2010/03/20(土) 07:01:15
ならけん?
746デフォルトの名無しさん:2010/03/20(土) 11:13:56
>>744
system("cat /proc/meminfo");
system("cat /proc/self/stat");
747デフォルトの名無しさん:2010/03/21(日) 20:29:32
かならずシェルを使った回答でボケ?なきゃいけない決まりでもあるの?
748デフォルトの名無しさん:2010/03/21(日) 22:24:25
決まりはないけど、何にもレスがないと寂しいじゃんw


つか、>>743 にしたって、結局中で /proc の
パースやってたり、その元ネタを直接 Kernel から
もらってくるだけだし、もっとストレートに教えてあげたほうが
親切じゃね?
749デフォルトの名無しさん:2010/03/21(日) 22:30:18
カーネルのデータをカーネルから貰って何が悪い!!
750デフォルトの名無しさん:2010/03/21(日) 22:46:33
Linux では Kernel のデータは /proc と /sys 経由で
提供されるから、プロセスについては /proc を使うのが
正当って話。

751デフォルトの名無しさん:2010/03/21(日) 22:49:13
Linux がどうかしたの?
752デフォルトの名無しさん:2010/03/21(日) 23:40:08
気に入らないけど、仕事で相手にせざるを得ない。
753デフォルトの名無しさん:2010/03/22(月) 07:18:58
>>81
Vi使いのもれが来ましたよ〜
754デフォルトの名無しさん:2010/03/22(月) 09:50:32
最近は開発環境ですらEmacs入れさせてくれないのでviをいやいや使ってます
755デフォルトの名無しさん:2010/03/22(月) 10:34:34
そろそろ好きになれよ
756デフォルトの名無しさん:2010/03/25(木) 01:02:59
せめてvimを
757デフォルトの名無しさん:2010/03/26(金) 09:13:42
CPUのload averageを取得する方法を教えてください。
758デフォルトの名無しさん:2010/03/26(金) 09:33:51
759デフォルトの名無しさん:2010/03/26(金) 10:08:15
docs.sun.com、OCACLEってロゴになってる!
760デフォルトの名無しさん:2010/03/27(土) 13:38:29
今回は system() や /proc は自粛w
761デフォルトの名無しさん:2010/03/27(土) 14:12:11
>>760 只のちゃちゃだが
$ man system
NAME
system -- pass a command to the shell

LIBRARY
Standard C Library (libc, -lc)

SYNOPSIS
#include <stdlib.h>

int
system(const char *string);
762デフォルトの名無しさん:2010/03/27(土) 15:20:49
system("man -s 3 system"); な。
763デフォルトの名無しさん:2010/03/30(火) 15:51:47
GMTとの時差ってどうやったらわかるの?
764デフォルトの名無しさん:2010/03/30(火) 19:51:19
TZのうしろについてる数字みればいいんでないかい。


765デフォルトの名無しさん:2010/03/30(火) 20:07:26
tzfile.h使ってtimezone設定のファイル読め。
766デフォルトの名無しさん:2010/03/30(火) 20:24:37
>>763
localtime - utctime
767デフォルトの名無しさん:2010/03/30(火) 22:41:40
tm_gmtoff
768デフォルトの名無しさん:2010/04/07(水) 18:31:39
済みません、質問です。
mmapを使ってマッピングした領域に書き込んだあとで、
msyncでMS_ASYNCを使って、ファイルへの非同期書き出しを行った場合に、
その書き出しが完了したかどうかを知るには
どうしたらいいのでしょうか?
769デフォルトの名無しさん:2010/04/08(木) 06:10:38
>>765
kwsk
770デフォルトの名無しさん:2010/04/08(木) 14:42:29
>>767
tm_gmtoff が無いOSもあるので、どこでも動く実装にしたいなら
localtime -> timelocal して difftime かね。
771デフォルトの名無しさん:2010/04/09(金) 15:46:01
>>770
違った。gmtime→timelocal (もしくはlocaltime→timegm)
772デフォルトの名無しさん:2010/04/09(金) 17:22:04
>>765
どの関数で読み込むのでしょうか?
それともINT_MAXのようなかたちで読むのでしょうか?
どうか教えていただけないでしょうか?
773デフォルトの名無しさん:2010/04/09(金) 22:17:24
すげぇ、ここまでスレを読めていないとは
774デフォルトの名無しさん:2010/04/10(土) 04:18:12
>>763
#include <stdio.h>
#include <sys/time.h>
int main () {
struct timeval tp;
struct timezone tz;
gettimeofday(&tp, &tz);
printf("UTC +%d hours¥n", tz.tz_minuteswest/60);
return 0;
}
775デフォルトの名無しさん:2010/04/10(土) 07:59:05
gettimeofdayのtzはobsolete

The use of the timezone structure is obsolete; the tz argument should normally
be specified as NULL. The tz_dsttime field has never been used under Linux;
it has not been and will not be supported by libc or glibc. Each and every
occurrence of this field in the kernel source (other than the declaration) is
a bug. Thus, the following is purely of historic interest.
776デフォルトの名無しさん:2010/04/19(月) 22:29:57
ハードウェアからの受信割り込みを受信毎に割り込みかけるのではなく、ポーリングで監視して割り込み
処理するにはどうすればよいのでしょうか?
kernelをどのように設定すればいいのでしょうか
777デフォルトの名無しさん:2010/04/21(水) 02:01:23
splhigh() とかで
778デフォルトの名無しさん:2010/04/21(水) 06:23:41
splhighでは、割り込みそのものを禁止するのでは?
ポーリングで割り込みを見に行くようになるのでしょうか
779デフォルトの名無しさん:2010/04/21(水) 14:33:10
>>776
そもそもデバドラがポーリングで動くように作られてないと無理だろ。
FreeBSDならoptions DEVICE_POLLINGでポーリングモードになるが、ただし対応してるドライバのみ。

それともOSとドライバは既に指定されてて、それをポーリング対応させたいってことか?
780デフォルトの名無しさん:2010/04/21(水) 19:54:25
>>779
はい、デバドラがマニュアル読んでも対応してるかどうかわからなくて
ポーリングの類の記述がなくて。

基本的に受信したらハードウェアに割り込みが入りますよね。
そのあとに、カーネルなりに割り込みかけて、そこからソフトウェアに割り込みかけるんですよね。

そのとき、割り込みが入ってくる頻度を抑えつつ、ネットワークデータをrecv処理したいと思っているのですが
可能なのでしょうか?

カーネルへの割り込みを止めてしまったら、recvしてもデータはとれないのでしょうか?
781デフォルトの名無しさん:2010/04/21(水) 19:57:40
>基本的に受信したらハードウェアに割り込みが入りますよね。
>そのあとに、カーネルなりに割り込みかけて、そこからソフトウェアに割り込みかけるんですよね。

?
782デフォルトの名無しさん:2010/04/21(水) 20:01:48
783デフォルトの名無しさん:2010/04/21(水) 20:16:41
>>781
ネットワークからデータが送られてくるとハードウェアに割り込みがかかって、
そこから、カーネルに割り込みがかかるのではないのでしょうか?
データが到着したよと
784デフォルトの名無しさん:2010/04/21(水) 20:27:36
あほが湧いてるな。せっかく入学した学校で虐めにでもあってるのか?
785デフォルトの名無しさん:2010/04/21(水) 21:00:14
>>780
だから何がしたいんだよ? 単にデバイスポーリングの実装概要を説明してほしいだけか?
だとしたらまず日本語勉強しろ。

次。
786デフォルトの名無しさん:2010/04/21(水) 21:05:58
>>785
すみません、その通りです。
787デフォルトの名無しさん:2010/04/21(水) 22:19:09
>>780
お前がそのことを知ってもまるで意味がない。何の縁もないことだから。
788デフォルトの名無しさん:2010/04/21(水) 22:19:40
>>786
基本的には、
pollで何か来るまで寝る。何か来たら寝た子を起こす。
789デフォルトの名無しさん:2010/04/22(木) 00:47:59
pipe()1つで双方向通信ってできるんでしょうか?
それをしてるプログラムを見て自分で書いてみたんですが
子プロセス側のwriteはうまくいくんですがreadでエラーに
2本必須なんでしょうか
790デフォルトの名無しさん:2010/04/22(木) 02:04:25
>>789
pipeは書き込み専用と読み込み専用のディスクリプタを作る。
それぞれのディスクリプタで読み書き両方したいのであればsocketpairを使う。
791デフォルトの名無しさん:2010/04/22(木) 02:38:35
>>788
それって複数のタスクで構成されている場合ですよね
シングルタスクの場合は、寝てる子を起こすというより、ずっとデータがきていないか
while{ recvfrom } で巡回する場合には、割り込みは意識しなくて、きっておいても大丈夫なのでしょうか?
792デフォルトの名無しさん:2010/04/22(木) 05:15:25
CPUの周波数を取得する方法を教えろや
793デフォルトの名無しさん:2010/04/22(木) 22:59:20
>>791
じゃあselectで待っとけ
794デフォルトの名無しさん:2010/04/23(金) 11:46:52
>>792
/proc/cpuinfoみとけ
795デフォルトの名無しさん:2010/04/23(金) 14:07:50
UNIXにはないだろ。
796デフォルトの名無しさん:2010/04/23(金) 14:11:51
procfsが実装されているOSの内で、どれがUNIXで、どれがUNIXじゃないの?
* Solaris
* IRIX
* Tru64 UNIX
* BSD
* Linux (which extends it to non-process-related data)
* IBM AIX (which bases its implementation on Linux to improve compatibility)
* QNX
* Plan 9 from Bell Labs (where it originated)

797デフォルトの名無しさん:2010/04/23(金) 14:35:19
/procの下にcpuinfoがあるとだけが決めたんだ?
798デフォルトの名無しさん:2010/04/23(金) 15:50:08
799デフォルトの名無しさん:2010/04/23(金) 15:52:42
>>791
だからuserlandの話かkernelの話かどっちなんだよ。
userlandの話なら、該当デバイスがDEVICE POLLINGで実装されてるか
割込みで実装されてるかは判別する必要なんてない。
800デフォルトの名無しさん:2010/04/23(金) 19:56:15
>>792
kstat の cpuinfo の clock_MHz に値が入ってるのを取り出せば良い。

http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/hal/hald/solaris/devinfo_cpu.c

Perl だとこんな感じ。
http://petertribble.co.uk/Solaris/cpuinfo
801デフォルトの名無しさん:2010/04/23(金) 20:04:39
>>795
似たようなもんはなんかあるだろ
802デフォルトの名無しさん:2010/04/23(金) 20:11:11
procfs なのにプロセスと関係無い情報が入ってるってどうなん?
803デフォルトの名無しさん:2010/04/23(金) 22:13:39
>>802
気になるんだったら
# sed -i.orig 's|/proc|/kernel|' /etc/fstab
# reboot
804デフォルトの名無しさん:2010/04/23(金) 23:23:22
/proc決め打ちのプログラム多く無い?
805デフォルトの名無しさん:2010/04/23(金) 23:30:02
>>803
いや、/proc ではなく procfs と書いた筈だが…
そういうのが気にならない人は気にならないんだろうな……
Linux ユーザの全員がそういう人なのではないと信じてるけど………
806デフォルトの名無しさん:2010/04/23(金) 23:40:24
>>805
まあ、世の中最初の目的から応用が広がって元の名前が体を成さない事は良くあるよね。
807デフォルトの名無しさん:2010/04/23(金) 23:41:39
名前に無神経な人の周りではそうみたいだね。
808デフォルトの名無しさん:2010/04/24(土) 01:18:59
>>802
Linuxの思想的に、全てがプロセスでありファイルなんだよ。
809デフォルトの名無しさん:2010/04/24(土) 01:21:18
CPU の動作周波数がプロセスってどういう思想だw
810デフォルトの名無しさん:2010/04/24(土) 09:11:17
sysfsってどうなってるんだっけ?
811デフォルトの名無しさん:2010/04/24(土) 09:43:38
IPアドレスがIPと略されることはよくある
812デフォルトの名無しさん:2010/04/24(土) 16:15:47
うちのところでIPといえば、IP messengerですが
813デフォルトの名無しさん:2010/04/24(土) 16:22:44
Intellectual Property でしょ
814デフォルトの名無しさん:2010/04/24(土) 21:13:03
>>810
procと共存中。結局混乱をもたらしただけだったな
815デフォルトの名無しさん:2010/04/25(日) 19:41:14
glibcをスタティックリンクにして、その他のライブラリ(具体的にはlibjpegなのですが)を
シェアードリンクにした実行ファイルをgccで作成したいのですが
コンパイルオプションをどのように指定すればよいのでしょうか。

-staticオプションは全部のライブラリをスタティックリンクにしてしまうようなので
今回の目的は達成できませんでした…
816デフォルトの名無しさん:2010/04/25(日) 20:00:48
gcc ... -Wl,-Bstatic -lc -Wl,-Bdynamic -ljpeg -l...
817デフォルトの名無しさん:2010/04/25(日) 20:09:12
>>814
Linux のそういう適当な所が好きだわ
適当だって事に気付かずに変な自信にみなぎってる人がいなければもっといい
818デフォルトの名無しさん:2010/04/25(日) 22:29:37
>>816
ありがとうございます。
-lcがglibcのリンクオプションであること(そして通常は省略されていること)や、
リンカの役割なんかをさっぱり理解していませんでした…

すぐに試せる環境にないのですが、そのオプションを使用してビルドしてみます。
819デフォルトの名無しさん:2010/04/29(木) 10:22:18
WindowsのSetThreadAffinityMaskに相当する関数はないのかい?
820デフォルトの名無しさん:2010/04/29(木) 10:28:34
あるのもある。
821デフォルトの名無しさん:2010/04/29(木) 12:55:45
>>802-808
プロセスと関係がないものは /sys に
引っ越そう運動が始まってるよ。
822デフォルトの名無しさん:2010/04/29(木) 15:15:45
>>821
うまく行かない方に1000ドル
823デフォルトの名無しさん:2010/04/29(木) 21:35:59
但しジンバブエドル
824デフォルトの名無しさん:2010/04/29(木) 21:38:37
単に全部procfsからsysfsに引っ越ししてprocfsは互換シンボリックリンクだけの
ハリボテにすればいいんじゃね?
825デフォルトの名無しさん:2010/04/29(木) 21:41:15
プロセスに関係ないもんは全部、でいいよ。
プロセスの情報はprocfsにあっていい。
826デフォルトの名無しさん:2010/04/29(木) 21:48:13
そんなのlinuxじゃない。全てを飲み込む痰壺。
827デフォルトの名無しさん:2010/05/01(土) 08:22:13
下記のu_int ip_hl:4 部分ですが
u_int ip_hl;
これならば、u_int 型(unsigned int のエイリアス)の変数ip_hl と理解できますが
:4 の意味は何なのでしょうか?
: は変数名として使えない筈なのですが、どういう意味があるのでしょうか、
コメントを読めば、ヘッダーの長さと言う事は理解できるとして、文法的な解釈をお願いできないでしょうか。

/* @(#)ip.h 8.2 (Berkeley) 6/1/94 */
struct ip {
#if BYTE_ORDER == LITTLE_ENDIAN
u_int ip_hl:4, /* header length */
ip_v:4; /* version */
#endif
#if BYTE_ORDER == BIG_ENDIAN
u_int ip_v:4, /* version */
ip_hl:4; /* header length */
#endif
u_char ip_tos; /* type of service */
u_short ip_len; /* total length */
u_short ip_id; /* identification */
u_short ip_off; /* fragment offset field */
#define IP_RF 0x8000 /* reserved fragment flag */
#define IP_DF 0x4000 /* dont fragment flag */
#define IP_MF 0x2000 /* more fragments flag */
#define IP_OFFMASK 0x1fff /* mask for fragmenting bits */
u_char ip_ttl; /* time to live */
u_char ip_p; /* protocol */
u_short ip_sum; /* checksum */
struct in_addr ip_src,ip_dst; /* source and dest address */
} __packed __aligned(4);
828デフォルトの名無しさん:2010/05/01(土) 08:35:48
ビットフィールド
829デフォルトの名無しさん:2010/05/01(土) 08:39:46
ビット・フィールド。K&Rから存在する機構。 文法書読まずにプログラミングしてるのか?
830デフォルトの名無しさん:2010/05/01(土) 08:49:05
知りませんでした・・・orzありがとう
831デフォルトの名無しさん:2010/05/01(土) 09:45:00
K&Rは文法書ではないわけだが
832デフォルトの名無しさん:2010/05/01(土) 10:11:57
後半の参照マニュアルは文法書。引っ込んでろよ。
833デフォルトの名無しさん:2010/05/01(土) 11:00:49
「文法書」はちょっと違う気もするが、
>>831の突っ込みの酷さに比べたらまし。
834デフォルトの名無しさん:2010/05/01(土) 15:38:59
というか829は K&R == 文法書 というレスじゃないよね。
あまりに他者を非難したくて目を炯々とさせてばかりいるから
空目するんだと思うの
835デフォルトの名無しさん:2010/05/02(日) 00:35:58
由緒正しい UNIX プログラムでは
ビットフィールドを使ってはならぬ。
836デフォルトの名無しさん:2010/05/02(日) 01:10:56
dmrだってbitfield使いまくりだよもん。
837デフォルトの名無しさん:2010/05/03(月) 04:28:11
V6の頃の話じゃね?
838デフォルトの名無しさん:2010/05/06(木) 14:25:11
ま、じじいのたわごとはほっておこう
839デフォルトの名無しさん:2010/05/11(火) 09:57:05
どうして、孫が死んだときに親権がお爺さんに移らないんですか?
その思想が知りたい
840デフォルトの名無しさん:2010/05/11(火) 14:05:07
>>839
リソース喰いの負の遺産は普通なら相続放棄するだろう?
841デフォルトの名無しさん:2010/05/11(火) 14:34:01
孫が生まれた事を知らないのに、いきなり「孫です」と言われても困るだろ。
842デフォルトの名無しさん:2010/05/11(火) 16:21:44
>>839
> 孫が死んだときに親権がお爺さんに移らないんですか?
だれの親権だよ。曾孫?
843デフォルトの名無しさん:2010/05/11(火) 17:11:51
孫が死ねばiPadでNTTと契約出来るようになるのかな
844デフォルトの名無しさん:2010/05/11(火) 18:20:36
> どうして、孫が死んだときに親権がお爺さんに移らないんですか?

「どうして、親が死んだとき、子の親権がお爺さんに移らないんですか?」
って事なら、>>841が答え。
親が子を大量に作って死んだら、お爺さんの下に孫が枚挙して押し寄せてくるだろ。
子プロセスはwaitしないといけないけど、そんなのforkした奴じゃないとわからんから、
お爺さんはどうしていいか分からない。
845デフォルトの名無しさん:2010/05/11(火) 19:27:50
そして政府に引き取られていくのか・・・
846デフォルトの名無しさん:2010/05/11(火) 19:46:56
三世一身の法ですな
847デフォルトの名無しさん:2010/05/11(火) 20:13:52
initプロセス=政府説
848デフォルトの名無しさん:2010/05/11(火) 20:32:41
子供手当で富豪になれるな。
849デフォルトの名無しさん:2010/05/19(水) 06:10:01
NFSによるネットワーク上のディレクトリだと、endlやflushを使っても書き込まれないことがあります。
ファイルを閉じれば必ず書き込まれるのですが、閉じずに書き込む方法はないでしょうか?
NFSの設定を変える方法でもOKです。
よろしくお願いします。
850デフォルトの名無しさん:2010/05/19(水) 08:17:25
reopen
851デフォルトの名無しさん:2010/05/19(水) 14:21:41
>>849
fsync
852デフォルトの名無しさん:2010/05/19(水) 18:55:49
>>851
うそ教えるなよwww
853デフォルトの名無しさん:2010/05/19(水) 19:14:57
>>852
The fsync() system call causes all modified data and attributes of fd to
be moved to a permanent storage device. This normally results in all in-
core modified copies of buffers for the associated file to be written to
a disk.
854デフォルトの名無しさん:2010/05/19(水) 21:15:25
>>853
NFSだっつってんのにwwwアwwwホwww
855デフォルトの名無しさん:2010/05/19(水) 21:19:31
seek(0)
seek(tell())
856デフォルトの名無しさん:2010/05/19(水) 21:40:57
>>854
closeかfsyncの呼び出しでNFSクライアントはcommitリクエストを発行する。
commitを受け取ったNFSサーバはバッファを書き込む。

お前のNFSは違う動作をするのか?
857デフォルトの名無しさん:2010/05/20(木) 10:38:04
ファイル katの中身が ls のとき
katの内容を読んでコマンドラインにうちこむ、
ということは自動化できますか?
858デフォルトの名無しさん:2010/05/20(木) 10:48:40
`cat kat`
859デフォルトの名無しさん:2010/05/20(木) 11:09:41
>>858
echo thank you
860デフォルトの名無しさん:2010/05/21(金) 06:18:26
実行ファイル a.out を実行中に
a.out の末尾に 

コメントアウトしながら
情報を付け足して、後で付け足した部分だけを取り出して保存してa.out
からは消去、ってできますかね?
861デフォルトの名無しさん:2010/05/21(金) 09:56:40
>>860
実行中のファイルは書き込みじゃ開けないよ。試しにやってみ。
ETXTBSYになる。
862デフォルトの名無しさん:2010/05/21(金) 11:28:58
a.outでコメントアウトってどうやるんだろう?
863デフォルトの名無しさん:2010/05/21(金) 14:56:03
>>860 >>861
まあ、a.outをunlinkして、新たなa.outを書き出せば終了した時に入れ替わるんじゃない?

864デフォルトの名無しさん:2010/05/21(金) 16:42:24
そういえば,自分自身のコピーを作る際,hashで検出されるのを避けるために
意味のないデータを付加するウィルスがあったな
865デフォルトの名無しさん:2010/05/29(土) 09:33:17
特定の環境変数を取得する方法を教えてください。
866デフォルトの名無しさん:2010/05/29(土) 09:37:16
getenv(3)
867デフォルトの名無しさん:2010/06/02(水) 09:24:52
getloadavgでCPU使用率の平均値を取得できますが、
コマンド発行時点のCPU使用率を取得する方法を教えてください。
868デフォルトの名無しさん:2010/06/02(水) 09:28:19
CPU利用率ってのはある時間を区切ってそのうち何割CPUが
働いていたかってことなんだから、ある瞬間の利用率ってのは
そもそも矛盾してるぞ。
869デフォルトの名無しさん:2010/06/02(水) 09:45:29
>>867
mpstat みたいなのを作りたいの?
870デフォルトの名無しさん:2010/06/02(水) 23:43:28
どこで質問すれば良いのか分からないので、ここで質問させてください。
Ruby/GtkGlExtで3Dの描画をしたいと思っているのですが、
(Open GLやGtkGlExtを使うのは初めてです、RubyやGtkを使って個人用の小物を作ったことは何度かあります)
その際スクリーンに表示し、かつ必要に応じて保存したいと思っているので、Gdk::Pixmap(GdkPixmap)の使用を考えています。
ところが、断片的な資料を色々当たりながら組んでみたところ、
Gdk::GLContext(GdkGlContext)の設定の仕方が悪いのか、ライト等の設定が全く効きません。
問題を再現する(たぶん)最小のソースコードが以下なのですが、(1)をコメントアウトして代わりに(2)を実行させると正常な挙動を示します。
(1)はどこがまずいのでしょうか?

require 'gtk2'
require 'gtkglext'

def draw
GL.Clear(GL::COLOR_BUFFER_BIT)
Gdk::GL.draw_sphere(true,0.2,20,20)
GL.Viewport(0,0,200,200)
GL.Light(GL::LIGHT0, GL::DIFFUSE, [1,0,0,1])
GL.Light(GL::LIGHT0, GL::POSITION, [0.5,0.5,-1,0])
GL.Enable(GL::LIGHTING)
GL.Enable(GL::LIGHT0)
GL.ClearColor(1,1,1,1)
GL.Flush
end

Gtk::GL.init
glconfig = Gdk::GLConfig.new(Gdk::GLConfig::MODE_RGB)
window = Gtk::Window.new
window.set_size_request(200,200)
window.realize
871デフォルトの名無しさん:2010/06/02(水) 23:45:02
#=begin (1)
wingc = Gdk::GC.new(window.window)
pixmap = Gdk::Pixmap.new(window.window,200,200,-1)
glpixmap = pixmap.set_gl_capability(glconfig)
glcontext = Gdk::GLContext.new(glpixmap,nil,true,Gdk::GL::RGBA_TYPE)
glpixmap.make_current(glcontext)
draw
window.signal_connect("expose_event") do
window.window.draw_drawable(wingc, pixmap, 0, 0, 0, 0, -1, -1)
end
#=end

=begin (2)
drawing = Gtk::DrawingArea.new
drawing.set_size_request(200,200)
drawing.set_gl_capability(glconfig)
window.add(drawing)
glcontext = drawing.gl_context
gldrawable = drawing.gl_drawable
gldrawable.make_current(glcontext)
drawing.signal_connect("expose_event"){draw}
=end

window.signal_connect("delete_event"){Gtk.main_quit}
window.show_all
Gtk.main
872870:2010/06/03(木) 23:40:41
すみません、上から読み返してみるとスレ違いな気もしますね。
OpenGLスレで質問しなおすことにします。
スレ汚し済みません。
873デフォルトの名無しさん:2010/08/07(土) 14:31:40
VIPでいい本棚を見つけましたよ

http://imageil.net/12811578281.jpg
http://imageil.net/12811580761.jpg

X Windowがある
874デフォルトの名無しさん:2010/08/07(土) 15:40:51
HTML5の本なんてずいぶん新しい本も読んでるのね
875デフォルトの名無しさん:2010/08/08(日) 20:07:35
HTML5があたらしいって・・
876デフォルトの名無しさん:2010/08/08(日) 22:25:03
このすれ もりあげようぜ
877デフォルトの名無しさん:2010/08/09(月) 01:04:16
みなさんshは何を使っていますか?
bash?
zsh?
878デフォルトの名無しさん:2010/08/09(月) 02:22:07
tcsh
879デフォルトの名無しさん:2010/08/09(月) 17:38:24
>>875
新しいよ。>>873の本は半年前に出たばかりだ
半年前が新しくないとかいうならシラネ
880デフォルトの名無しさん:2010/08/09(月) 19:55:29
すまん
HTML5が新しい技術で、そんな最新の本まで読んでるんだ
って意味かと思った
UNIX板の人の本棚が気になるな
881デフォルトの名無しさん:2010/08/09(月) 20:35:44
>>880
荒木飛呂彦と片山まさゆきしかないんだが。
882デフォルトの名無しさん:2010/08/09(月) 21:02:29
>>873
何がいい本棚なのかさっぱりわからん。
Stevensすらないし。
883デフォルトの名無しさん:2010/08/09(月) 21:10:33
HTML5は新しい技術だろう?
884デフォルトの名無しさん:2010/08/09(月) 23:54:13
新しいか古いかでいえば新しいが、そんなびっくりすることでもないだろうに
885デフォルトの名無しさん:2010/08/10(火) 00:28:43
【法律】「ウイルス作成罪」創設へ 刑法改正を検討(10/08/09)
http://hibari.2ch.net/test/read.cgi/pcnews/1281355124/
886デフォルトの名無しさん:2010/08/29(日) 12:46:22
メッセージとセマフォを多重待ちできる?
887デフォルトの名無しさん:2010/08/29(日) 16:56:22
できない
888デフォルトの名無しさん:2010/08/31(火) 15:13:08
Linux板のくだ質に書き込みを行ったのですが、返事がないようですのでこちらにも書き込みをさせていただきます。

TrueTypeフォントをFontPathに追加してもxlsfontsでpxlszが0になります。
フォントサイズをいくつか作成する方法はないでしょうか。

Xlibでプログラムを作成していて、フォントの指定にこまっております。
889デフォルトの名無しさん:2010/08/31(火) 17:49:49
0なのはスケーラブルフォントだから。
欲しいサイズを適当に指定すれば使えるんじゃなかったっけか?
890デフォルトの名無しさん:2010/09/01(水) 18:23:09
GUIプログラミングの勉強をしようと思ってるんだけど、QtとGtkどっちがいいの?
GNOME採用しているディストリが多いし、Gtkなの?
891デフォルトの名無しさん:2010/09/01(水) 19:17:38
当然Qt
892デフォルトの名無しさん:2010/09/02(木) 00:10:00
>>890
当然かどうかはともかく、Qtの方が書きやすくて格好いい。
つーか最初はあのコーディングスタイルに感動したわ。
893デフォルトの名無しさん:2010/09/02(木) 00:31:39
Qtはライセンスのせいで普及が阻害されたな。
イモくさいと思いつつもGTK+を選んだ。
今はwxWidgetsを使ってる。
894デフォルトの名無しさん:2010/09/02(木) 00:54:07
いまからならQtにすべき
895デフォルトの名無しさん:2010/09/02(木) 01:58:57
wxWidgetsの勉強用のいい本教えれ
896デフォルトの名無しさん:2010/09/02(木) 02:42:15
ありがとうございます。
Qtがお勧めみたいですね。

ちなみに、どちらも経験された方はお勧めな理由などありますか?

自分はずっとCUIのアプリケーションを作っていたのですが、ちょっとVSを使ってGUIアプリを作ってみたら、
GUIアプリも使いようによっては便利だと思い、今から勉強してみようと思っております。
897デフォルトの名無しさん:2010/09/02(木) 05:42:43
GTKは糞
898デフォルトの名無しさん:2010/09/05(日) 02:26:21
gtkmmは神
899デフォルトの名無しさん:2010/09/05(日) 02:31:13
gtkmmは糞拭き紙
900デフォルトの名無しさん:2010/09/17(金) 20:24:07
質問です。LL言語とbindingでき、セルを扱いやすいツールキットで
できればFLOSSなものはありますか。ドラッグアンドドロップもできると
うれしいです。
901デフォルトの名無しさん:2010/09/18(土) 00:55:50
>>900
セルというのはテーブル上の要素(Excelのセル)を指していて、
FLOSSというのはオープンソースという意味でいいのかな?

もしYesなら、Qt/GNOME2/wxWidget/Tk、お好きなのをドーゾ。

もしLLとしてRubyを考えているなら、Ruby-GNOME2かRuby/Tkがお勧め。
既成ウィジェットライブラリの豊富さが大事であればGNOME2を選べばいいし、
基本的な部品(Text/Cancas)を組み合わせて自分で一から(スクラッチで)
GUIを設計できるスキルがあるのなら、Tkが向いているかもしれない。
どちらもRuby-bindingの開発者は日本人だから、自分ではどうしようもない
問題にぶち当たった時でも、公式ML上で力強いサポートを得られる。

QtとWxWidgetのRuby-bindingは、日本語の情報が極端に少ないから、
>>900の英文読解力しだいで選べばいいと思う。(どちらかといえばQtを勧める)
902デフォルトの名無しさん:2010/09/18(土) 01:12:12
QtとかwxとかならPythonの方がおすすめ
903900:2010/09/18(土) 01:32:02
LL言語って、馬から落馬したみたいな日本語ですね。すいません

複式のおこずかい帳をつくってLLを勉強してみようかなあと

日本語のドキュメントがあるのは日本人なのでうれしいですが
QtとかwxWidgetがこのスレではお勧めみたいですね。うーむ
Gnomeとかだと dbus とか勉強いりますか?
Qtなら dbus の勉強は不要ですか?

Rubyだと、いまからだと 1.9系になると思いますが、どれぐらい
の寿命があるとおもっていればいいですか3年ぐらい?

あと、python を進めてくれた方、いまからだと python は 3系
をやるべきですか。python も賞味期限 3年ぐらいですか?
904デフォルトの名無しさん:2010/09/18(土) 01:36:31
>>903
Gnomeでも、PyGnomeとかPyGTKがあるから、その心配はいらない。
日本語で解説したサイトもあるし。

Pythonなら、2.6か2.7を使うのを勧める。
3はあと3年たってから、もう一度眺めなおしてから、考える、でいい。
不安なら、from __future importを使って、なるべく3に移行しやすくしておけば。

で、ちなみに、おこずかい帳とかっていうんなら、wxPythonを俺はおすすめするよ。
表とか数値セルとかだったら、wxPythonがそろってるし、Windowsにも移植は楽。
905デフォルトの名無しさん:2010/09/18(土) 01:48:48
>>903
dbusのような低レベルなIPCはGNOME/Qtであればツールキット内で吸収してくれるから、
勉強しなくてもいい。もしdbusを自分で触って独自IPC機構を実装したいなら、
Rubyの場合はdbusライブラリがあるから、それを使えばいい。(pythonにもあるハズ)

あと、今からRubyを勉強し始めるとしたら、(1.9系ではなく)バグの枯れた1.8系を勧める。
処理系として1.9.1以降は安定してきているけど、周辺の拡張ライブラリには、
まだまだ1.9対応が不完全なものが多数ある。初心者が1.9系に手を出すのは、お勧めしない。

最後に、LLの寿命とか賞味期限を気にしてるようだけど、もしそれが絶対的必要条件なら
LL(要は俺様専用ミニ言語)を自分で作れば良いだけのこと。言語処理系開発は良い勉強になる。
906デフォルトの名無しさん:2010/09/18(土) 14:02:21
903のような人は自分でプログラム書こうなんて思わずに
人や書かせることを選んだ方がいいんじゃないか。
907デフォルトの名無しさん:2010/09/18(土) 14:49:49
そうだな
自分でやる気が微塵も感じられない
908デフォルトの名無しさん:2010/09/24(金) 10:53:41
C言語は5年程度前から勉強しており、最近はWindowsにてC#の勉強を初めております。
C言語は簡単なアプリケーションを作ったことがある程度です。

LinuxアプリケーションはC++が多いように感じるのですが、UNIX的にはC++なのでしょうか?
C++を勉強するか、Perlを勉強するか悩んでおります。
909デフォルトの名無しさん:2010/09/24(金) 11:10:46
どっちも勉強すればいいんじゃね? そうたいしたもんでもないし。
後は作りたいアプリにあったものを選べばいい。

よっぽど性能を要求されるものやライブラリがないといった事情が
なければC++は使わないほうがいいけどね。メモリ管理を自分で
やるのはウザいしバグのもとだしろくなことはない。
910デフォルトの名無しさん:2010/09/24(金) 12:29:51
>>908
死にかけてる言語のPerlやるくらいならPythonやりなよ。
GTK, GNOMEのバインディングもあるし、Google Appsにもいけるし。
911デフォルトの名無しさん:2010/09/24(金) 17:35:17
勝手にFUD流すのかよ。
912デフォルトの名無しさん:2010/09/24(金) 19:30:33
>>908
まず最初に、プログラム言語は大まかにコンパイラ系とインタプリタ系に分類される。
C#やC++(それにJava)はコンパイラ系で、その高速性を生かした本格的なソフト開発に適している。
Perl(他にPythonやRuby)はインタプリタ系で、テキスト加工処理などのツール開発に適している。
最適な用途が違うから、どちらかを選ぶのではなく、どちらも勉強したほうが良い(どちらも勉強すべき)。

コンパイラ系のC++/C#/Javaについては、どれを選んでもかまわないと思う。
どれも大きなコミュニティがあるし、どれか1つをマスタできれば仕事に困ることはないから。
(UNIXにもMomoというC#の処理系があり、WPF/WCFといったWindows固有のフレームワークこそ
 利用できないけど、UNIX向けGUIライブラリで本格的なアプリ開発も可能。マイナーで英語要だけど。)

インタプリタ系については、(>>910が書いているけど)Perlはその開発が行き詰まっているから、
今から勉強するのは(Perlではなく)PythonかRubyを勧める。Perlは強力な言語で一時代を築いたけど、
その誕生した時代が古いこともあって、いくつか問題を抱えていた。Python/Rubyは、そんなPerlの
問題を解決するために生まれた比較的に新しい言語で、Perlでやれた処理はすべてPython/Rubyに
置き換えられるし、オブジェクト指向のような強力な機能も追加されている。

Python/Rubyであれば、機能的には強力だから、(性能要求が厳しくなければ)本格的なアプリ開発も可能。
だから、(最初にどちらも勉強すべきとは書いたけど、)もしも趣味のプログラミングであるなら、
(コンパイラ系言語の勉強は後回しにして、)Python/Rubyだけを勉強するという選択肢もある。

Pythonを選ぶかRubyを選ぶかも判断に迷うテーマ。一般的にはPythonは簡潔で明解な言語仕様だから
初心者が最初に学ぶインタプリタ系言語に適しているし、その単純さ故に複雑な応用にも対応できる。
Rubyは(見た目がPerlに似ているから)取っ付き易いのだけれど、その奥が限りなく深い言語。
両者は真っ向勝負できる言語だから、これも好みで選べばいい。

個人的な主観(趣味)で言えば、UNIXならC++とRubyを勧めるんだけどね。
913デフォルトの名無しさん:2010/09/24(金) 21:38:53
Google推奨のC++, Java, Python, Javascriptを勧めます。
914デフォルトの名無しさん:2010/09/25(土) 02:03:48
>>908
Linuxアプリケーションは圧倒的にCが多いよ。
C++も一昔前に比べれば、相当増えたといってもいいけど、まだまだ主流はC

俺はとりあえず、自分がそれで満足しているから、という理由で、
Pythonを勧める。
Gnome/Qtなんかのバインディングも豊富だし、ライブラリも豊富
(豊富過ぎるのが欠点って噂もあるけれどw)
あとは(ドライバとか作りたい、とかいわない限りは)Cで共有ライブラリ作れる
ようになってしまえば、(Python標準ライブラリの)ctypesでほぼなんでもできるよ。

また、RedHatなんかはシステムツールがPythonで書かれている、っていうことも
大きなポイントになるかな。
(時には読まなきゃならんこともあるw)
915908:2010/09/25(土) 10:07:04
皆様ありがとうございます。

なぜPerlを選択肢に入れたかというと、まだまだ勉強不足ではありますがちょこちょこと
触っている経験があり、Perlをもう少し深くやるという意味でPerlを選択肢に入れました。
Web業界にいたこともあり、PerlはPythonやRubyに比べてるとどのサーバでも大体サポート
しているのでPerlが必要かと思っていた次第です。
確かにPerlは6が10年近く出ないままで、出るかどうかもわからないので、他の言語をやっ
ておいたほうがいいですね。
国産LinuxディストリビューションでRubyがパッケージ作成ツールなどに使われているので
Rubyのほうがいいですかね。でもRedHadはPythonなんですね・・・
PythonかRubyか考えてみます。

身の回りのアプリケーションがgtkmmを使ったものが多かったので、C++が多いのかと勘違
いしておりました。
916デフォルトの名無しさん:2010/09/25(土) 16:39:54
C++はミドルウェアくらいの下位層に多いよ。
Androidなんかもそう。
Firefox, Chromeなんかのブラウザも今やミドルウェアだろうし。
こういうのは後回しでいいんじゃない?
Pythonでほとんどのこと出来るんだし。
917デフォルトの名無しさん:2010/09/25(土) 19:44:53
あとLinuxだったら、Javaはおすすめしない。
ちょっと過去のいきさつもあって、LinuxではJavaのアプリケーションってかなり少ない。
Linuxを極める方向よりも、他のOSでも潰しが効くとかっていう方向性を指向するなら
いいのかもしれないけどね。
918デフォルトの名無しさん:2010/09/25(土) 21:00:49
>>915
まああと10年は余裕で使われると思うよ、perlは。
死ぬ死ぬいってたコボルとか余裕で生き残ってるしな。
919デフォルトの名無しさん:2010/09/26(日) 00:20:05
>>917
> ちょっと過去のいきさつもあって

kwsk
920デフォルトの名無しさん:2010/09/26(日) 04:24:58
んーとだな、初期のLinux用Java開発グループ、Blackdownというのが
あったのよ。
Linux用のJVMとかはこの人たちが開発してたんさ

でも、ある日突然、リーダーが解散宣言してしまった。
理由はSunが情報公開やら協力やらしてくれない、という話だった。

で、以下は個人的な憶測ね。

真相がどうなのかはよくわからないのだけど、当時はまだ、UNIXといえば
Solarisであり、WS(ってのもだいぶ減ってはいたのだけど)っていえば
SPARC stationだった。
Sunが急速に台頭してきたLinuxを牽制したい、と思っていたのは事実
だろうし、そのための切り札としてJavaがあった。
SunとしてはUNIXでJavaといえばSolaris、としたかったろうし、そういう
理由で確かに嫌がらせのようなことはあったんだろうと思う。

で、最終的にはSunがLinux用のJVMを提供することになるんだが、
それまでに結構間があって、しばらく、LinuxでJavaを使うにはかなり
古いバージョンを使わなければならない時代が続いた。

(…って俺はJavaにさほどの個人的期待かけてなかったせいもあって、
かなりうろ覚え。間違ってたら訂正よろしく)
921デフォルトの名無しさん:2010/09/26(日) 04:30:45
10年以上前に、IBMがLinuxとJavaを推すことを決定してから
どちらかというと、LinuxはJavaの推奨環境に近いと思ってたけど。

Javaの普及はSunの力じゃないんだから。
922デフォルトの名無しさん:2010/09/26(日) 04:40:22
>>921
まぁ、だから、Microsoftとももめたじゃん?w
で、C#ができちゃった、とw
923デフォルトの名無しさん:2010/09/26(日) 04:44:17
厨二病だな。Javaの仕様なんか拾えたし。
924デフォルトの名無しさん:2010/09/26(日) 04:57:07
まぁ、そういう経緯もあって、とにかく、LinuxではJavaは
アプリケーションも非常に少なく、まったくおすすめできない。

Monoプロジェクトとか活発なので、むしろ、C#の方がおすすめ
できるくらいだ。
925デフォルトの名無しさん:2010/09/26(日) 07:11:31
926デフォルトの名無しさん:2010/09/26(日) 07:51:35
そこでC#勧めるか?
プロジェクト引っ掻きまわす奴と周りから言われてない?
927デフォルトの名無しさん:2010/09/26(日) 09:04:57
実際Linux用の現状のJavaとMonoを比較して、どっち使うかといったらJavaだな。
928デフォルトの名無しさん:2010/09/26(日) 15:44:14
どっちも使わないな、俺なら
929デフォルトの名無しさん:2010/09/26(日) 23:07:02
>>920
当時、
Solaris > Linux >> その他のUNIX
だったけど? Solarisプッシュ?
930デフォルトの名無しさん:2010/09/26(日) 23:45:47
>>920
SunのLinux用JDKがあったが?
931デフォルトの名無しさん:2010/09/27(月) 12:11:18
64bit版でゴタゴタしたような記憶があるでよ。
932デフォルトの名無しさん:2010/09/27(月) 13:30:56
ある程度以上の規模のプロダクトなら、大なり小なりゴタゴタしてるだろ64bit化では
933888:2010/10/01(金) 12:57:36
ひまひまに調べているのですが、どうもうまくいきません。
pxlszが0のフォントはどのように処理すればいいのでしょうか?
934デフォルトの名無しさん:2010/10/01(金) 15:22:45
XlibはTrueTypeフォントを直接扱えない。
935デフォルトの名無しさん:2010/10/01(金) 19:21:26
文字の扱いってEUC-JPとUTF-8じゃそんなに違うの?
昔に書いたアプリが動かない。
936デフォルトの名無しさん:2010/10/01(金) 21:52:28
もともと文字コードを意識してないプログラムなら、まず影響は無いはずだけど
937デフォルトの名無しさん:2010/10/08(金) 21:29:19
PerlかPythonからGtk触ったことある方いらっしゃいますか?

GUIのアプリを作ってみようと思うのですが、どちらがいいでしょうか?
Perlは簡単なCGIを作ったことがある程度で、Pythonはみたこともありません。

938デフォルトの名無しさん:2010/10/08(金) 23:42:04
Pythonで。
939デフォルトの名無しさん:2010/10/09(土) 02:10:22
>>937
Perlは使ったことないから比較はできんが、
Pythonの方がいいと思うぞ。

PyGNOME,PyGTKならサンプルも豊富だし。
940デフォルトの名無しさん:2010/10/09(土) 16:29:40
perl いいよ。pythonなんてインデントが嫌。
941デフォルトの名無しさん:2010/10/09(土) 22:02:00
自分のUbuntuだと、/usr/bin/の中の
ccsm, dropbox, freeloader, gdebi-gtk, gjots2, gnochm, gnome-about,
gnome-codec-install, gnome-language-selector, hal-device-manager,
pitivi, pygtk-demo, software-properties-gtk, ubuntuone-preferences,
update-manager でPyGTKが使われている。
PerlGTKの方は、
checkgmail, dh_gtkmodules, glib-mkenums, gtkdoc-check, gtkdoc-fixxref,
gtkdoc-mkdb, gtkdoc-mktmpl, gtkdoc-rebase, gtkdoc-scan,
gtkdoc-scangobj, gtkdoc-scanobj
942デフォルトの名無しさん:2010/10/10(日) 00:27:03
>>941
RedHat系だともっとPythonの割合が増えるね。
943デフォルトの名無しさん:2010/10/12(火) 23:56:28
>>937
PyQt4 で

>>940
python のインデントが嫌って言ってる香具師は食わず嫌い
自分でプログラム書いたことないんだろ
944デフォルトの名無しさん:2010/10/13(水) 02:58:32
>>943
なんか、最近KDEのKはkusoのKって感じがしますが…w

つか、インデントを食わず嫌いで、嫌うのもどうかな、とは思うけど、
一長一短でデメリットもあるからな。
945デフォルトの名無しさん:2010/10/13(水) 04:29:32
>>941
gtkdocばっかりかよ
946デフォルトの名無しさん:2010/10/13(水) 08:58:39
>>943
pythonは結構仕事で書いたけどやっぱりインデント嫌いだわ。
カッコの対応がないのでインデントどこまで戻すのかわかりにくいし
一度間違えるとわけがわからん。

カッコありだとカッコの対応をもとにインデントやり直せばおかしく
なってるのがすぐわかるんだけどな。
947デフォルトの名無しさん:2010/10/13(水) 19:03:51
vi使いなら、'%'キー一発でカッコの対応が分かるからね。
CやRuby、それにJSONのならコードの構造を把握しやすい。
PythonやYAMLのようなインデント強制のコードだと、
長くなるといちいち画面をスクロールさせ、目を上下に動かして
対応付けを探らないとならないからわずらわしい。
IDEを使っている人には下らない話だと思うけどね。
948デフォルトの名無しさん:2010/10/13(水) 19:11:42
たしかにviでpythonはつらいわー。IDEとかエディタでpython向き
のってあるの?
949デフォルトの名無しさん:2010/10/13(水) 21:10:57
950デフォルトの名無しさん:2010/10/23(土) 15:11:40
ラウンドロビン方式でスケジューリングされるマルチスレッドのアプリケーション
についてですが、タイムスライスを使い切ったスレッドに対してOSから何らかの
シグナルが送られるのでしょうか?もしそうならシグナルの種類を知るための
手段はありますか?
951デフォルトの名無しさん:2010/10/23(土) 15:28:52
どんな環境なのかな?
952デフォルトの名無しさん:2010/10/23(土) 15:44:30
Fedora Core 6 です。
953デフォルトの名無しさん:2010/10/23(土) 15:49:49
> タイムスライスを使い切ったスレッドに対してOSから何らかのシグナルが送られるのでしょうか?
タイムスライス使いきったってことは処理は別のスレッドに移動してると考えられるから
シグナルが送られても次に処理が回ってきたときにわかる感じになるのでは?
954デフォルトの名無しさん:2010/10/23(土) 16:41:48
>>953
なるほど確かにそうですね。
ただシステムコールによってはEINTRが頻繁に送られる
ため、これがタイムスライスを使い切ったよという通知かと
思いました。そうでないととなるとEINTRは何なのかとい
う疑問が出てきたわけです。
955デフォルトの名無しさん:2010/10/23(土) 16:43:41
システムコールによってはスレッドが切り替えられることがあるよ。
956デフォルトの名無しさん:2010/10/23(土) 17:05:20
>>955
有限時間の待ちをするシステムコールなどはそうですね。
自分がwait状態になるので。このようなシステムコールが
失敗し、errnoにEINTRが設定されるのは何のためなのか
わからないです。
957デフォルトの名無しさん:2010/10/23(土) 17:39:10
気になるなら、kernelのソース追っかければいいじゃん
958デフォルトの名無しさん:2010/10/23(土) 17:42:25
追っかけるのは、glibcからかも
959デフォルトの名無しさん:2010/10/23(土) 17:52:34
>>957
ですね。
960デフォルトの名無しさん:2010/10/23(土) 19:49:10
POSIXリアルタイム拡張がない限り、
スレッドに対するシグナルは実装依存であることをお忘れなく。
961デフォルトの名無しさん:2010/10/23(土) 19:54:49
>>954
> そうでないととなるとEINTRは何なのかという疑問が出てきたわけです。

たとえばkeyboard待ちをしているprocess、eg. sh
でもsignal handling期待通りに動かすには、
read(2)をEINTRで中断して、signal handlerを起動して、
その後、read(2)に再入する必要がある。

だから再入可能なsystam callは
signal handerの設定されているsignalが送られるたびに
EINTRによるsystam callの中断がある。

このアーキテクチャは、POSiXリアルタイム拡張や
multi thread当たり前のprogrammingでは、
やや古いので、新しいprocess modelが構築する必要があると思われる。
962デフォルトの名無しさん:2010/10/23(土) 20:11:52
963デフォルトの名無しさん:2010/10/25(月) 21:56:23
>>952
そんなはるか昔にサポートが切れたOSを使うのはやめれ
脆弱性が死ぬほどたまってるぞ
964デフォルトの名無しさん:2010/11/07(日) 18:23:43
pythonなんて一時の流行だろ。
結局はGUIは生き残るのはGTKだけ。
965デフォルトの名無しさん:2010/11/07(日) 19:37:38
   〃∩ ∧_∧
   ⊂⌒(  ・ω・)  はいはいわろすわろす
     `ヽ_っ⌒/⌒c
        ⌒ ⌒
966デフォルトの名無しさん:2010/11/07(日) 21:42:28
>>964
pythonでGUIやるときはTK使うんじゃなかったっけ。
ああwxもあるか。
967デフォルトの名無しさん:2010/11/07(日) 21:46:06
PyGTK
>>937-942
968デフォルトの名無しさん:2010/11/08(月) 02:49:33
GTK 使うくらいなら Tkinter 使う方がまし
969デフォルトの名無しさん:2010/11/08(月) 11:40:33
python 使うくらいなら Ruby 使う方がまし
970デフォルトの名無しさん:2010/11/08(月) 12:43:17
Ruby(笑)
971デフォルトの名無しさん:2010/11/08(月) 13:50:14
もうあきたけど、結局はjavaに戻るだろ。
972デフォルトの名無しさん:2010/11/08(月) 23:06:10
>>971 何をゆってるんだ、おまいは?
UNIX ったら set + awk + sh に決まってるじゃないか
973デフォルトの名無しさん:2010/11/09(火) 11:00:20
シェルスクリプトだけで大抵の事は出来るな。
974デフォルトの名無しさん:2010/11/09(火) 22:54:59
bashスクリプトでマルチインスタンスプログラムでどうやればいいかい?
仮想的に複数ユーザでサーバにリクエストを出してみたいのだが。
975デフォルトの名無しさん:2010/11/10(水) 11:16:43
>>974
&つけて起動するといい
976デフォルトの名無しさん:2010/11/10(水) 17:49:47
>>974
sudo -u username command
977デフォルトの名無しさん:2010/11/10(水) 23:01:47
>>975,976
さんくす。バックグラウンドて走らせてできました。ただ、ネットワークIOだと思うんだがほとんどのプロセスが待ちになってスループットが伸びないな。どうしたものか。。。
978デフォルトの名無しさん:2010/11/14(日) 01:03:04
>>974
お前の事だ
脳味噌の程度が低いって事
979デフォルトの名無しさん:2010/11/14(日) 13:46:33
>>920
> んーとだな、初期のLinux用Java開発グループ、Blackdownというのが
> あったのよ。
あったあったw
980デフォルトの名無しさん:2010/11/20(土) 04:08:19
1.What is the maximum number of processes for system?
2.What is the maximum number of processes per user?
3.What is the size of the virtual address cache?
4.What is the maximal open files per process?
どのコマンドで検索すればいいのか分からないので教えてください。
981デフォルトの名無しさん:2010/11/21(日) 08:43:24
もう落ちるなこのスレ
982デフォルトの名無しさん:2010/11/22(月) 02:12:11
まぁ、そう言うなよ。
983デフォルトの名無しさん:2010/11/22(月) 22:54:52
linuxは全てのデバイス(ethernet以外)はファイルとして扱うという話を聞いたことがあります
しかし、プログラミングしていてファイルという印象はうけません
どのようなところで、実感できるのでしょうか?
984デフォルトの名無しさん:2010/11/22(月) 23:00:41
>>983
いや、昔はethもファイルだったんよ。
985デフォルトの名無しさん:2010/11/22(月) 23:03:16
>>983
デバイスドライバの開発が遅れてるのでしかたないから
いくつか機能殺した上でファイルを読んで代用したり
標準入力になんか入力するのが面倒だから
ファイルを流し込んで自動運転したり
986デフォルトの名無しさん:2010/11/22(月) 23:06:02
>>983
なんでもかんでもディスクリプタで扱うというところで実感する。
ソケットだろうとファイルだろうとデバイスだろうとread()/write()
って便利すぎると思うよ。
987983:2010/11/22(月) 23:13:35
>>984
それは知らなかった

/dev/xxxxってのはファイルなのですか
あと、ディスクプリタの概念がいまいちです..orz
ソケット関連の記事を読んだ時に、ちらっと読んだくらいです
988デフォルトの名無しさん:2010/11/22(月) 23:57:02
fopen()じゃなくてopen()で戻ってくる値がディスクリプタ
989デフォルトの名無しさん
>>983
つ GNU/Hurd