UNIXプログラミング質問すれ Part9at TECH
UNIXプログラミング質問すれ Part9 - 暇つぶし2ch1:デフォルトの名無しさん
08/03/18 08:10:34
UNIXおよびUNIX clone環境一般のプログラミングに関する質問スレッド

前スレ
Part8 スレリンク(tech板)
Part7 スレリンク(tech板)
Part6 スレリンク(tech板)
Part5 スレリンク(tech板)
Part4 スレリンク(tech板)
Part3 スレリンク(tech板)
Part2 スレリンク(tech板)
Part1 URLリンク(pc2.2ch.net)

Part3のミラー
URLリンク(makimo.to)
Part2のミラー
URLリンク(makimo.to)

2:デフォルトの名無しさん
08/03/19 11:09:35
タイムゾーンって取得できますか?

3:デフォルトの名無しさん
08/03/19 11:19:24
>>2
getenv("TZ")で取れない?

4:デフォルトの名無しさん
08/03/19 13:31:11
実行ファイルのディレクトリとれますか?

gccで、ディレクトリパスのデリミタは環境変数になっていますか?

5:デフォルトの名無しさん
08/03/19 13:42:19
>>4
> 実行ファイルのディレクトリとれますか?

Linuxだったらreadlink("/proc/self/exe", ...)で。一般的な方法はない。

> gccで、ディレクトリパスのデリミタは環境変数になっていますか?

C/C++でのことなら、ないと思う。UNIXなら固定でいいんじゃない?




6:4
08/03/19 13:58:41
thx!

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

BSDだとどうなりますk?

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

ifdef + define するしかないですか。
でもそういった、ヘッダーファイルとか、オプソでありそうな。。。

7:4
08/03/19 15:33:33
>>Linuxだったらreadlink("/proc/self/exe", ...)で。

POSIX準拠だったので使えることは分かりましたが、使い方が分かりません。
先頭の引数は何なのか?_?

8:デフォルトの名無しさん
08/03/19 15:53:34
先頭の引数は "/proc/self/exe" だよ。この名前が Linux 依存なわけです。
BSD では一般解はないと思う。NetBSD だと Linux と同じ手が使えるみたい。

URLリンク(www.adl.nii.ac.jp)


9:4
08/03/19 16:01:20
>>8
それ、良いリンクですね。

Mac OS X だと、"/proc/self/exe"ではうまくいきませんね。
argv[0]を見ようとしたらwxWidgetsでmainが見れなかったorz

10:4
08/03/19 16:11:38
wxApp:argv[0]で、実行ファイルのフルパス取れました。

これで余韻だろうか。

11:デフォルトの名無しさん
08/03/20 01:57:42
調べれば資料がありそうなことはきちんと資料を調べた方がいいよ。
プログラミングは迷路を突破するみたいに手探りでやるものじゃない。
そうやって書かれたプログラムを他の環境でも問題なく動くと考えるのは、
ある迷路を突破した道順が他の迷路でも通用すると期待するくらい無謀。

12:デフォルトの名無しさん
08/03/21 09:50:00
 ↑
ウゼー

13:デフォルトの名無しさん
08/03/21 22:57:54
そして>>12は小一時間怒りを噛みしめた後、
自演を思いつきMac板へ向かったのである。

14:デフォルトの名無しさん
08/03/23 17:13:16
OSが32bit版でも64bit版でも実行結果って変わらないの?
64bit版を使う利点はメモリが4GB以上使えることくらい??


15:デフォルトの名無しさん
08/03/23 19:54:19
メモリがというよりアドレス空間が。

16:デフォルトの名無しさん
08/03/23 20:05:29
>>13
ワラタw
Mac 板で似た質問を見たと思ったら、ここ由来だったのね。

>>14
LP64 環境だと仮定して、、、

long が 64bit になっても良い様に書いていれば結果は変わらない

x86 だと仮定して、、、

レジスタが増えるから多くの場合で 64bit の方が速いという利点もある
勿論デメリットもある

17:デフォルトの名無しさん
08/03/27 09:30:24
AnsiToUnicode(UTF-8)/UnicodeToAnsi

みたいな関数はありますか?

18:デフォルトの名無しさん
08/03/27 09:38:56
>>17
POSIX的には無いかと。
ICUでも使うといいよ。


19:17
08/03/27 09:59:45
>>18
へぇ~、こんな複数OSで使えるものがあったんだ。
知らないと目茶目茶な実装するとこだった。

20:デフォルトの名無しさん
08/03/27 19:07:07
ICUって簡単に使えますかぁ?...

21:デフォルトの名無しさん
08/03/27 21:30:20
あなたの頭では無理です。集中治療が必要です。

22:デフォルトの名無しさん
08/03/28 00:46:46
エンコーディング変換ぐらいなら簡単よ。


23:20
08/03/28 08:46:28
>>22
サンプルコードきぼんorz

24:デフォルトの名無しさん
08/03/28 12:50:14
ucnv_frommUChars ucnv_toUChars でぐぐってみるのだ。


25:デフォルトの名無しさん
08/03/28 15:29:59
URLリンク(beubeubeu.exblog.jp)
URLリンク(www.emaki.minidns.net)

みつけますた。

26:デフォルトの名無しさん
08/03/28 16:48:43
>UConverter *pConverter = ucnv_open("EUC-JP", &error);

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

ソース全文検索かけても出てきませんが???

27:26
08/03/28 17:12:05
ついでに、iconv_openの引数の文字列一覧も教えて下さいorz

28:デフォルトの名無しさん
08/03/28 17:41:45
iconv -l

29:26
08/03/28 17:55:40
>>28
そのコマンド打ってみて分りましたが、
OSが文字コードに関する情報(のファイル)を持っていて、
それによって変換可能な文字コードかどうか決まるわけですね。

BSD だとして、GUIアプリが受け取る文字コードが何か取得する方法を教えてください。
環境変数なのかなぁ?

30:デフォルトの名無しさん
08/03/28 18:13:50
>>29
nl_langinfo(CODESET) だったような、たしか

31:26
08/03/28 18:19:08
超サンクス>>30

ありましたヽ(゚∀゚)ノ
URLリンク(www.linux.or.jp)

あ~、これでやっとコーディングに入れますorz

32:デフォルトの名無しさん
08/03/28 22:03:28
>>31
マルチ乙
しかも>>4と同一人物

33:デフォルトの名無しさん
08/04/06 16:42:26
UNIXで2D(スプライトのようなもの)を高速描画しようとしたら何を使えばよいのでしょうか?

34:デフォルトの名無しさん
08/04/06 16:52:16
SDL

35:デフォルトの名無しさん
08/04/07 09:06:19
言語はC/C++を考えております.

HDDの使用量や全容量を取得したいのですがどのようにすればよいのでしょうか?
(dfみたいな機能があればなおさらいいです.)

36:デフォルトの名無しさん
08/04/07 09:21:34
dfのソースを見るか、systemでdfを実行して結果を取得

37:デフォルトの名無しさん
08/04/07 11:24:59
>>36
いいこと教えてあげよう。OSにもよるだろうが、
man dfするとSEE ALSOに関連システムコールが書いてあったりもするもんだ。

38:デフォルトの名無しさん
08/04/07 12:46:15
>>37
書いてなかった

39:デフォルトの名無しさん
08/04/07 13:06:39
そりゃ残念だったな
NetBSD, Solaris, FreeBSD, HP-UX, Darwin は書いてあった

40:デフォルトの名無しさん
08/04/07 13:28:07
全部同じsystem call?
なんていう奴?

41:デフォルトの名無しさん
08/04/07 16:46:33
statfs(2), fstatfs(2)

42:デフォルトの名無しさん
08/04/07 16:59:43
>>41
ありー

43:デフォルトの名無しさん
08/04/10 17:45:11
doubleは64ビットですか?

44:デフォルトの名無しさん
08/04/10 17:56:45
printf("%d\n",sizeof(double)) の結果を貼っていただければ答えられます(^-^)

45:デフォルトの名無しさん
08/04/10 18:25:17
いまどき浮動小数点形式がIEEE 754じゃない環境は
まず存在しないから、64bitでおk。

46:デフォルトの名無しさん
08/04/10 22:01:10
が、そのうち時代は変わるかも知れない。
そのときそのプログラムが使われ続けていないとも限らない、というのがY2Kの教訓。

47:デフォルトの名無しさん
08/04/10 22:40:42
charは8bitと仮定しちゃダメだよね

48:デフォルトの名無しさん
08/04/10 22:49:57
CHAR_BIT を使うのは常識たい。

49:デフォルトの名無しさん
08/04/11 09:37:44
>>47
char が16bitのものは今でもある。

50:デフォルトの名無しさん
08/04/11 09:38:23
それって、wchar、じゃなくて?

51:デフォルトの名無しさん
08/04/11 09:43:40
>>50
そう。CHAR_BIT = 16ということ。

52:デフォルトの名無しさん
08/04/11 18:01:33
CHAR_BIT が 9 はよく聞くね

53:デフォルトの名無しさん
08/04/13 06:53:13
pid_t型をprintfで表示したいのですが、どのようにすればよいのでしょうか?

54:デフォルトの名無しさん
08/04/13 08:27:44
%u

55:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/04/13 11:26:46
-Lで優先したいライブラリのパス指定したら?
最悪libgomp.aをstatic linkしてしまえばいい。
ただ結構コンパイラのバージョン依存なのでそこんとこは注意。

57:55
08/04/13 13:15:26
>>55 を書いたときには,コンパイル時に
実行バイナリに,ロードするライブラリのパスが記録されると勘違いしていたのですが,
実際には,コンパイル時には "libgomp.so.1" という情報が記録されるだけのようです.
実行時にロードするライブラリのパスは,
実行時に ldconfig で認識されているライブラリの中から上から順に同名の物を探して決定しているようです.

>>56
どうもありがとうございます.
コンパイラに合うバージョンの libgomp.a を静的にリンクするのが
一番安全そうなので,そうすることにします.

58:デフォルトの名無しさん
08/04/14 00:36:44
>>57の前半部分

-R(コンパイル時)や
LD_LIBRARY_PATH環境変数(実行時)で指定できる。

59:55
08/04/14 08:15:00
>>58
どうもありがとうございます.
おかげで動的にリンクする場合も安全に実行できるようになりました.

60:デフォルトの名無しさん
08/04/14 09:47:57
スタティックリンクライブラリを使いたいのですが、どうすればいいですか

61:デフォルトの名無しさん
08/04/14 10:48:47
make作業にコンパイルとリンクがあるが、
リンク作業で直接指定してリンクする。

62:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/04/14 23:20:26
おとなしくperlでもつかっとけ。

64:62
08/04/14 23:25:40
>>63
>>62はパールだとできて、Cシェルだとできないもの?
シェルってなんでもできそうな印象だったんだけどなー

最近初めて面白くなってきたよ

65:デフォルトの名無しさん
08/04/14 23:32:45
なぜ底辺はcshが好きなんだろう?

66:デフォルトの名無しさん
08/04/15 00:07:13
>>62
shで。

ls -l | grep key | awk '{print $9}' | cut -c1-4 | while read l; do
# $lに対してやりたいこと
done

67:62
08/04/15 00:16:37
>>65
cshちゃんを悪く言わないで下さい

>>66
Bシェル?そんな簡単なのか
試してみる。ありがとー!

68:デフォルトの名無しさん
08/04/15 07:14:32
特に宗教的理由が無いなら shell script は csh より bsh で組みなさい

69:デフォルトの名無しさん
08/04/15 07:17:38
ところで、
Csh Programming Considered Harmful
って今はもうみえないんだっけ?

70:デフォルトの名無しさん
08/04/15 11:25:24
ググったら一発だった

71:デフォルトの名無しさん
08/04/16 09:39:29
unixの考え方の1つとしてよく言われる、「1つのことをうまくやれ」というやつについて。

具体的に1つ(1機能)ってのはどの程度のものなんでしょうか。
例えば今のlsって、詳細情報出したり、変更日付順にソートできたり、全然単機能
じゃないと思うんですけど。原則と現実のギャップというやつですか?

72:デフォルトの名無しさん
08/04/16 09:57:01
>>71
> unixの考え方の1つとしてよく言われる、「1つのことをうまくやれ」というやつについて。
ファイルの内容をいじれるわけではないし, ディレクトリに対して操作ができる
わけでもないでしょ?
ディレクトリの内容をリスト表示するって事に特化していて, そのことに関して
だけはとてもうまくやっていると思うのだけど...


73:デフォルトの名無しさん
08/04/16 10:33:05
例えばMS-DOSのDIRと比べてみると、
「~バイトのファイルがあります」
「~バイトが使用可能です」
とか勝手に付け加えたりしないのがUnix流。

もっとも、出力先が端末だったら複数カラムで表示したりする、とか
そういう機能は良くない、とみる向きもあるけどね。
("Program Design in the UNIX System Environment.")

74:デフォルトの名無しさん
08/04/16 13:10:10
>>71
更新日時順でソートなんてlsにやらせなかったら何使ってやるのさ。

75:デフォルトの名無しさん
08/04/16 13:28:48
>>73
ls -lもtotal出すよなあ、あれ出力使う時に余分。
tail +2しないといけない。

76:デフォルトの名無しさん
08/04/16 13:41:33
ところで >>62 の ls -l | ... | awk って、
ls -1 じゃダメなん?


77:デフォルトの名無しさん
08/04/16 22:05:33
>>71
UNIXの思想は基本的にミニマリズムでは無いと思う
djb tools はUNIX的なのか?
Perl は UNIXで広く受け入れられたが、これは異端なのか?

78:デフォルトの名無しさん
08/04/16 22:40:22
UNIXのプログラムは何にせよメールが読めるまでに肥大化する

79:デフォルトの名無しさん
08/04/16 23:44:28
メールの読めるlsはどこにありますか?

80:デフォルトの名無しさん
08/04/16 23:58:18
逆に考えるんだ。
lsもcdもEmacsの中にあるんだ、と。

81:デフォルトの名無しさん
08/04/17 00:00:07
vi使いが来るぞー!

82:デフォルトの名無しさん
08/04/17 00:10:59
ls -tr ~/Mail/inbox/ | tail -1 | xargs view

83:デフォルトの名無しさん
08/04/17 00:16:45
MHですやん

84:デフォルトの名無しさん
08/04/17 08:44:17
>>77
小さいものは美しい、ってのはミニマリズムじゃないの?

85:デフォルトの名無しさん
08/04/17 10:16:41
>>78
それ元ネタ確かMITで開発されてるプログラムは、だった希瓦斯

86:高野光弘問題
08/05/20 21:40:45
Takano32,TAKANO Mitsuhiroこと高野光弘(日立製作所社員、日本UNIXユーザ会幹事)が
『32nd Diary』で「真性キチガイ」と障害者差別発言。さらに、2007年4月の入社後は、日立の機密も漏洩。
公益のため告発するも改善されないので、日立製作所に通報。

回答
「高野光弘という社員は存在する(本人は「嘘」と否定していた)
現在、管轄する部署が調査中
障害者差別発言に関しては許されるものではない」
また、漫画家鈴木健也による教祖様のようなひげの似顔絵を湮滅していたことも発覚。

これからどうすべきか、自分の頭で考えてくれることを期待します。
URLリンク(taka.no32.tk)

87:デフォルトの名無しさん
08/05/27 15:33:16
>struct timeval tv;

の値って、
doubleの変数に入出力できたりしますか?

88:デフォルトの名無しさん
08/05/30 00:26:33
はい

89:デフォルトの名無しさん
08/06/01 17:58:49
> ムー板に書きましたが、誰も相手にしてくれません:
スレリンク(unix板:211-221番)

90:デフォルトの名無しさん
08/06/02 08:47:43
 ↑
おめ、今頃それ貼ってもおせーよ!
プゲラッチョwww

91:高野光弘問題
08/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:デフォルトの名無しさん
08/06/14 13:44:09
forkして子プロセスを作ってるんですが、
親プロセスから子プロセスの生存確認する方法ってありますか?

93:デフォルトの名無しさん
08/06/14 13:46:39
kill(2)しろ。
signal番号0で。

94:92
08/06/14 13:56:40
>>93

95:92
08/06/14 13:57:10
↑間違い。すいません
>>93

96:92
08/06/14 13:58:44
>>93
ありがとうございます。
なんとなくやり方がわかった気がします。

97:デフォルトの名無しさん
08/06/14 23:23:50
SIGCLDをトラップしろ

98:デフォルトの名無しさん
08/06/15 02:19:44
>>97ある時に知る方法じゃなくて、
ずっと管理しておく方法。

99:デフォルトの名無しさん
08/06/15 16:14:29
>>98
俺もそう思ったが、別に97でもいいんじゃないのかな。
ある時にある子プロセスが生きてるか知ろうとするプログラムならば
当然pidを含む子プロセスの情報を保持しているわけで。

100:98
08/06/15 16:36:19
悪いと言っているのではなく解説したまで。
質問するような人がすぐに理解できるとは限らないので。

101:デフォルトの名無しさん
08/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:高野光弘事件
08/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』での高野光弘君の凶行を止めてください。


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch