プログラミング質問すれ Part1

このエントリーをはてなブックマークに追加
1名無しさん@お腹いっぱい。
UNIXおよびUNIX clone環境一般のプログラミングに関する質問スレッド

過去スレ(プログラム技術板)
Part6 http://pc8.2ch.net/test/read.cgi/tech/1116908090/
Part5 http://pc8.2ch.net/test/read.cgi/tech/1105723117/
Part4 http://pc5.2ch.net/test/read.cgi/tech/1095843584/
Part3 http://pc5.2ch.net/test/read.cgi/tech/1085930894/
Part2 http://pc5.2ch.net/test/read.cgi/tech/1055110889/
Part1 http://pc2.2ch.net/tech/kako/992/992057422.html

Part3ミラー http://makimo.to/2ch/pc5_tech/1085/1085930894.html
Part2ミラー http://makimo.to/2ch/pc5_tech/1055/1055110889.html

関連スレ
Cygwin使っている人いますか? その14 (UNIX板)
http://pc8.2ch.net/test/read.cgi/unix/1107587275/
Cygwin使っている人いますか? 3 (Windows板)
http://pc8.2ch.net/test/read.cgi/win/1090131123/

関連板
Linux板 http://pc8.2ch.net/linux/
プログラム技術板 http://pc8.2ch.net/tech/
2名無しさん@お腹いっぱい。:2005/09/22(木) 20:30:08
【POSiX】
The Open Group Base Specifications Issue 6
IEEE Std 1003.1, 2004 Edition
http://www.opengroup.org/onlinepubs/009695399/toc.htm


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

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

UNIX Network Programming
Volume 2: Interprocess Communications (2nd Edition)
http://www.amazon.com/exec/obidos/tg/detail/-/0130810819/
3名無しさん@お腹いっぱい。:2005/09/22(木) 20:31:06
man on www
http://www.linux.or.jp/JM/#Search

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

Unix Programming Frequently Asked Questions 日本語訳
http://www.adl.nii.ac.jp/~moro/unix-programmer/faq-j_toc.html
4名無しさん@お腹いっぱい。:2005/09/22(木) 20:37:41
プログラム板→UNIX板移動の経緯につきましては以下をご参照ください。

UNIXプログラミング質問すれ Part7
http://pc8.2ch.net/test/read.cgi/tech/1127373405/

プログラム板自治スレッド その2
http://pc8.2ch.net/test/read.cgi/tech/1051039126/
5名無しさん@お腹いっぱい。:2005/09/22(木) 20:42:41
>>1
乙です。
移動には賛成です。
6名無しさん@お腹いっぱい。:2005/09/22(木) 20:55:45
なんだ?ム板でUNIXを叩いて暴れてる奴が勝手に立てただけのようだが?
7名無しさん@お腹いっぱい。:2005/09/22(木) 20:59:37
そうですが何か?
8名無しさん@お腹いっぱい。:2005/09/22(木) 21:04:38
それなら一人でここで遊んでてよ
9名無しさん@お腹いっぱい。:2005/09/22(木) 21:11:25
移動したんですね。乙。
10名無しさん@お腹いっぱい。:2005/09/22(木) 21:13:58
まぁ底のほうにどうでもいいスレたくさんあるし、
ちゃんと機能するなら別にいいんでない?

nutshellのライオン本あたりが範疇かね。
11名無しさん@お腹いっぱい。:2005/09/22(木) 21:48:25
こんなスレがこの板に立つとは。
自治スレ覗いてみたけどなんだありゃ。
12名無しさん@お腹いっぱい。:2005/09/22(木) 22:16:04
exit(111);
13名無しさん:2005/09/22(木) 23:18:18
塾ウザイス(;゚д゚)
14名無しさん:2005/09/22(木) 23:19:08
電車男最終回おわったねー

15名無しさん@お腹いっぱい。:2005/09/23(金) 03:24:23
タイトルに「質問スレ」と付けるのは糞スレ化への第一歩だな
16名無しさん@お腹いっぱい。:2005/09/23(金) 03:33:03
なんでこっちにもってきたの?
17名無しさん@お腹いっぱい。:2005/09/23(金) 03:48:32
>>1
何のためにプログラム板があるのか考えような
18名無しさん@お腹いっぱい。:2005/09/23(金) 08:02:38
むしろこっちでいいよ
19名無しさん@お腹いっぱい。:2005/09/23(金) 13:42:37
From: [20] デフォルトの名無しさん <sage>
Date: 2005/09/22(木) 17:24:31

WindowsでのプログラミングはWindows板で。となるのか?

From: [21] デフォルトの名無しさん <sage>
Date: 2005/09/22(木) 17:26:19

Windowsはデファクトスタンダードですから。
UNIXはダメ!

From: [22] デフォルトの名無しさん <sage>
Date: 2005/09/22(木) 17:28:41

なんだ、要するにUNIXを目の仇にしている奴ってことか。
20名無しさん@お腹いっぱい。:2005/09/23(金) 13:48:17
けっきょくマトモなネタ出ないのな。
21名無しさん@お腹いっぱい。:2005/09/24(土) 02:30:22
C言語で、テキストファイルから変数の値を

variable1 = "hoge";
variable2 = 3;

などと読み込むようにしたいのですが、何か例えば glibc のような標準的なライブラリで
こういうのを読み込んでくれる便利なものはないでしょうか。

それともみんな fopen して fgetc して切り取っていくルーチンを書いてるんでしょうか
22名無しさん@お腹いっぱい。:2005/09/24(土) 09:18:47
MXが・・・氏んだ・・・。
助けてくれ・・・。
23名無しさん@お腹いっぱい。:2005/09/24(土) 09:37:34
なんかnyが繋がらないんですけど?
どうすればいいですか?
24名無しさん@お腹いっぱい。:2005/09/24(土) 10:06:38
>>21
yacc
25蹴球男:2005/09/24(土) 10:37:40
どうも、新人です。仲良くしてください
2621:2005/09/24(土) 13:12:36
>>24
critical hit しました。ありがとうございました!
27名無しさん@お腹いっぱい。:2005/09/24(土) 23:39:58
ほんとかよw
28age:2005/09/26(月) 21:04:48
日本語のファイル名をGTKで表示しようとしています。
でも環境によってファイル名がEUCだったりUTF8だったりです。
環境のファイル名のcharset調べるのはどうやるのでしょう?
29名無しさん@お腹いっぱい。:2005/09/26(月) 22:14:53
環境変数
30age:2005/09/26(月) 22:31:14
>>29
なんとなくロケール関係という気はしてるんですが、一般的にどう実装するのか知りたいでやんす
31名無しさん@お腹いっぱい。:2005/09/27(火) 04:24:22
Xlibのことなのですがここでしつもんさせてもらいます
Xlibでウインドウを作りそこに文字を表示しているのですが
マウスでドラッグしたりしても選択されません(すいませんどういえばいいのか分かりません)
どうすれば選択できるようになるのでしょうか?
32名無しさん@お腹いっぱい。:2005/09/27(火) 07:25:21
>>31
こっちのスレの方が向いてるんじゃ?
http://pc8.2ch.net/test/read.cgi/tech/1060005170/l50
33名無しさん@お腹いっぱい。:2005/09/27(火) 14:42:05
>>31
Xlibだけでやるのはとてもめんどうくさいから、
適当なツールキットをつかったほうがいいです。
3431:2005/10/01(土) 00:54:27
>>32
ありがとうございます
そちらで聞かせて頂きます

>>33
toolkitってC++ですよね?
Cしかできないんですよ・・・
GtkとかQt, Motifもインストールしてなくて・・・
3531:2005/10/01(土) 01:06:57
ごめんなさい
toolkitじゃなくてXtです・・・
36名無しさん@お腹いっぱい。:2005/10/16(日) 17:53:51
質問です。

コンパイルしてできたオブジェクトファイルのサイズを小さくしたいんです。
どうやら.mdebugというセクションが大きくなっている原因のようなんですが、
これには何が入っているのですか?
基本が無い為、的外れな質問をしてしまっているかもしれませんが宜しくお願いします。
37名無しさん@お腹いっぱい。:2005/10/16(日) 18:21:05
そんな下らない事をしてどうするのです
3836:2005/10/16(日) 18:26:56
>>37

私宛ですよね?
すみません。それが下らない事だということすらわからないレベルでして…。
仕事で言われたんですが全然わからなかったので聞いてしまいました。
39名無しさん@お腹いっぱい。:2005/10/16(日) 23:06:38
>>36
ヒント: strip
40名無しさん@お腹いっぱい。:2005/10/16(日) 23:23:25
>>39

ありがとうございます。ググったらそれらしきコマンドが出てきました。
シンボルというのが何かわからないので勉強してみます。

ちなみにmdebugというセクションを消してしまうと何か問題はあるでしょうか?
41名無しさん@お腹いっぱい。:2005/10/16(日) 23:53:10
>>40
多分デバッグができなくなる。
42名無しさん@お腹いっぱい。:2005/10/17(月) 00:14:15
>>41

ありがとうございます。参考になります。
43名無しさん@お腹いっぱい。:2005/10/20(木) 23:13:19
>>34
ツールキットってのはGtkとかQtとかMotifみたいなものの総称。
言語は勿論ツールキットによる。

Gtk -> C (C++ラッパー有り)
Motif -> 多分C
Qt -> C++
wxWindows -> C++

好きなのを選ぶがいい。
44名無しさん@お腹いっぱい。:2005/11/02(水) 15:29:17
すみません、質問です。
三次元座標をプロットしていくようなプログラムは
C++ビルダーでは難しいでしょうか?
もし何か情報がありましたら教えていただけると助かります。
よろしくお願いします。
45名無しさん@お腹いっぱい。:2005/11/02(水) 15:39:09
>>44
何がしたいのか分からないがまず必要なclassを探すべし。多分,ある。
もし見つからなければゼロから自分で作ることになるから当然難しい。
UNIX版で聞くよりプログラム版いきなはれ。
46名無しさん@お腹いっぱい。:2005/11/02(水) 15:46:27
>>45
はい。
では、プログラム板にいってみます。
親切に教えてくださってありがとうございました。
47名無しさん@お腹いっぱい。:2005/11/06(日) 19:15:45
UNIXにフォントをインストールするにはどうしたらいいでしょうか?
ImageMagickという画像処理ソフトで、
フォントを使ってテキストを入力したいのですが、
うまくいかないのです。
48名無しさん@お腹いっぱい。:2005/12/30(金) 23:16:41
質問です.stat(2) で得られる.st_size の型は off_t で,これは(size_t と
違って) signed なような気がするのですが,これは何故こうなっているのでしょ
うか?
49名無しさん@お腹いっぱい。:2005/12/31(土) 00:45:52
offsetだから。名前からわかるだろうに。
50名無しさん@お腹いっぱい。:2005/12/31(土) 03:30:46
>>49
そういうことではなくて。。(素人さんには聞いてないです)
51ヽ(´ー`)ノ ◆.ogCuANUcE :2005/12/31(土) 03:44:02
>>50
lseek() と合わせてじゃねーの。

    lseek(fd, n, SEEK_END); /* n < 0 */

こういう状況はよくあると思うけど。

> 素人さんには聞いてないです
質問する側がこういうのを言うのは良くない。
52名無しさん@お腹いっぱい。:2005/12/31(土) 05:02:50
off_t が signed なのはそういうことだろうけど、
st_size が off_t なのは、なんかこお歴史的な理由のような気がする。
53名無しさん@お腹いっぱい。:2005/12/31(土) 05:09:39
やっぱり、off_t と比較するときにウザいからかな?
いや、素人なので無視して(w
54スージン:2005/12/31(土) 06:29:42
ファイルサイズのないデバイスとかあるから
55名無しさん@お腹いっぱい。:2005/12/31(土) 13:54:29
ビット数が十分あると思われるならsignedにしとく方がややこしくなくていいだろ。
実際、unsignedのはずでもどこかでsignedになってるかも知れないから
あやしいって話はあるわけだし。
56名無しさん@お腹いっぱい。:2006/01/06(金) 13:40:30
popenのrとwの機能を両方同時に使いたいのだけど、
どうすれば良いのでしょうか?

ttp://www.ncad.co.jp/~komata/c-kouza3.htm
のpopen2にヒントがあるようなのですが、
このpopen2の使い方が分かりません。
どなたか簡単な例を示してください。お願いします。
57名無しさん@お腹いっぱい。:2006/01/06(金) 17:45:41
"r+"
man読め。
5856:2006/01/06(金) 18:33:25
>>57
fopenと混同していますね。
man popenしてください。
59名無しさん@お腹いっぱい。:2006/01/06(金) 22:19:15
>>56
簡単もなにも、pipe() とほとんど一緒だが。

/*
* pid: プロセスID
* fd_r: 読み取り用ファイルディスクリプタ
* fd_w: 書き込み用ファイルディスクリプタ
*/
int pid = popen2("<command>", &fd_r, &fd_w);

個人的な意見を述べるならこの関数のインターフェースは良くない。
動作の似た pipe() に似せるならディスクリプタは配列にするべきだし、
名前の似た fopen() 系に似せるなら FILE* を返すべきだし、
return -1 してるんだから、perror() せずに呼出し側でエラー処理するべきだし、
fork(), dup2() とかを使ってるのになんで unistd.h を include してないんだとか
まぁ言い出すとキリがない。
60名無しさん@お腹いっぱい。:2006/01/06(金) 23:34:58
個人的な意見ならチラシの裏が良い。
61名無しさん@お腹いっぱい。:2006/01/07(土) 02:03:01
うちのman popenにはr+があったりするわけだが
62名無しさん@お腹いっぱい。:2006/01/07(土) 10:41:10
FreeBSDとNetBSDだけじゃないの
63名無しさん@お腹いっぱい。:2006/01/07(土) 13:41:18
Userland が FreeBSD な Mac OS X もだよ。
64名無しさん@お腹いっぱい。:2006/01/07(土) 13:51:22
linuxには無いのかな

cat /proc/version
Linux version 2.4.31-0vl1.8 ([email protected])
(gcc バージョン 3.3.2 20031218 (Vine Linux 3.3.2-0vl8)) #1 2005年 9月 5日 月曜日 03:33:25 JST

man popen
The type argument is a pointer to a null-terminated string
which must be either `r' for reading or `w' for writing.

65名無しさん@お腹いっぱい。:2006/01/07(土) 15:09:19
板違い
66名無しさん@お腹いっぱい。:2006/01/12(木) 21:12:48
ー-ニ _  _ヾV, --、丶、 し-、
ニ-‐'' // ヾソ 、 !ヽ  `ヽ ヽ
_/,.イ / /ミ;j〃゙〉 }U } ハ ヽ、}
..ノ /ハ  〔   ∠ノ乂 {ヽ ヾ丶ヽ    ヽ
 ノノ .>、_\ { j∠=, }、 l \ヽヽ ',  _ノ
ー-=ニ二ニ=一`'´__,.イ<::ヽリ j `、 ) \
{¨丶、___,. イ |{.  |::::ヽ( { 〈 (    〉 今センスオブプログラミングの42ページで
'|  |       小, |:::::::|:::l\i ', l   く  フローチャート書くなと書かれてますけど!!!!!
_|  |    `ヾ:フ |::::::::|:::|  } } |   ) どうしてなんですか!!!!!!
、|  |    ∠ニニ} |:::::::::|/ / / /  /-‐-、
トl、 l   {⌒ヽr{ |:::::::::|,///        \/⌒\/⌒丶/´ ̄`
::\丶、   ヾ二ソ |:::::::/∠-''´
/\\.丶、 `''''''′!:::::::レ〈
   〉:: ̄::`'ァ--‐''゙:::::::/::::ヽ
\;/:::::::::::::/::/:::::::::::://:::::〉
::`ヽ:::ー-〇'´::::::::::::::::/-ニ::::(
           /    \

67名無しさん@お腹いっぱい。:2006/01/12(木) 21:23:45
著者が嫌いなんだろ
68名無しさん@お腹いっぱい。:2006/01/12(木) 21:28:08
ー-ニ _  _ヾV, --、丶、 し-、
ニ-‐'' // ヾソ 、 !ヽ  `ヽ ヽ
_/,.イ / /ミ;j〃゙〉 }U } ハ ヽ、}
..ノ /ハ  〔   ∠ノ乂 {ヽ ヾ丶ヽ    ヽ
 ノノ .>、_\ { j∠=, }、 l \ヽヽ ',  _ノ
ー-=ニ二ニ=一`'´__,.イ<::ヽリ j `、 ) \
{¨丶、___,. イ |{.  |::::ヽ( { 〈 (    〉 >>67
'|  |       小, |:::::::|:::l\i ', l   く  ありがとう心の友よ!!!!!!!!!
_|  |    `ヾ:フ |::::::::|:::|  } } |   ) 
、|  |    ∠ニニ} |:::::::::|/ / / /  /-‐-、
トl、 l   {⌒ヽr{ |:::::::::|,///        \/⌒\/⌒丶/´ ̄`
::\丶、   ヾ二ソ |:::::::/∠-''´
/\\.丶、 `''''''′!:::::::レ〈
   〉:: ̄::`'ァ--‐''゙:::::::/::::ヽ
\;/:::::::::::::/::/:::::::::::://:::::〉
::`ヽ:::ー-〇'´::::::::::::::::/-ニ::::(
           /    \


69名無しさん@お腹いっぱい。:2006/01/14(土) 15:02:39
解決したのか・・?
70名無しさん@お腹いっぱい。:2006/01/17(火) 05:39:36
whileループの中で下記</tmp/fileAのように
リダイレクションすると子プロセスが出来るので
最後にRTN=0が表示されるのは分かるのですが、

#!/bin/sh
RTN=0
while read LINE
do
RTN=1
done < /tmp/fileA
echo RTN=$RTN

whileループに入る前にexport RTNを記述してRTNを
環境変数にしてもやっぱり最後はRTN=0が表示される
のってなぜなんです?環境変数なら子プロセスで
設定した値が親にも反映されると思っているんですが
違います?
71名無しさん@お腹いっぱい。:2006/01/17(火) 07:33:42
>>70
> 違います?

違う。
72名無しさん@お腹いっぱい。:2006/01/17(火) 10:16:36
>>70
シェルスクリプト総合 その4
http://pc8.2ch.net/test/read.cgi/unix/1131026501/
73名無しさん@お腹いっぱい。:2006/01/17(火) 13:25:06
コマンドのソースで読みやすくて簡単なもの無いかな?
74名無しさん@お腹いっぱい。:2006/01/17(火) 13:46:43
>>73
読んだことないけどcoreutilsとか
75名無しさん@お腹いっぱい。:2006/01/17(火) 13:55:49
>>74
('∀`)'`,、'`,、'`,、
76taka:2006/01/17(火) 14:55:32
killコマンドを使わないでApacheを止めたり再起動する方法は分かりますか?
教えてくださいお願いしますm(__)m
77名無しさん@お腹いっぱい。:2006/01/17(火) 14:59:06
78名無しさん@お腹いっぱい。:2006/01/17(火) 15:09:54
fork()にて子プロセスを生成して、exec系関数にて実行した場合、
元に戻る方法は無いのでしょうか。
以下のような事がしたいのです。

pid = fork();
if(pid == 0){
execl("/bin/ls", "-l", "");
hoge(); ← 戻ってくると実行出来る
}

見当違いな質問かもしれませんがよろしくお願いします。
79名無しさん@お腹いっぱい。:2006/01/17(火) 15:13:12
>>78
fork() して wait() とかじゃだめなん?
80名無しさん@お腹いっぱい。:2006/01/17(火) 15:26:24
見当違い以前に何をしたいのか伝える能力が欠けているような。
fork&execせずsystem("/bin/ls -l"); hoge(); じゃだめなん?

81名無しさん@お腹いっぱい。:2006/01/17(火) 15:36:36
>>79, 80
早速のレスありがとうございます。
確かに説明が足りませんでした、すいません。

子プロセスから任意のコマンドを実行している間の
カーネル空間上のデバッグカウンタの値の挙動を見たいのです。
そこで、

counter_initialize(); // カウンタの初期化
execl("/bin/ls", "-l", "");
counter_finalize(); // カウンタ動作停止、値の取得

という様な事を行いたいのです。
何か方法があればご教授よろしくお願いします。
82名無しさん@お腹いっぱい。:2006/01/17(火) 20:35:47
>>80
>system("/bin/ls -l")

ゲラゲラww
83名無しさん@お腹いっぱい。:2006/02/01(水) 09:37:06
1
12
123
1234
12345
このプログラミング作成したい。
for文を使って頼むorz
84名無しさん@お腹いっぱい。:2006/02/01(水) 10:08:16
for i in 1 12 123 1234 12345; do echo $i; done
85名無しさん@お腹いっぱい。:2006/02/04(土) 00:06:43
for(i=0;i<5;i++){
for(j=0;j<=i;j++)
printf("%d",j+1);
printf("\n");
}
86名無しさん@お腹いっぱい。:2006/02/05(日) 13:08:00
for (i = 1; i <= 5; ++i) printf("%.*s\n", i, "12345");
87名無しさん@お腹いっぱい。:2006/02/06(月) 01:19:18
c言語を用いて、メッシュ特徴量とペリフェラル特徴量についてプログラムを作りたいのですが、何をどうすればいいのか分かりません(涙)
どなたか教えてください(泣)参考にするべきサイトなども、よろしくお願いします
88名無しさん@お腹いっぱい。:2006/02/06(月) 01:37:21
>>87
C/C++の宿題を片付ケます 60代目
http://pc8.2ch.net/test/read.cgi/tech/1139053955/
89名無しさん@お腹いっぱい。:2006/04/23(日) 21:24:31
どなたか下の問題を教えていただけないでしょうか?
http://urajyou100.at.infoseek.co.jp/004.pdf
お願いします。
90名無しさん@お腹いっぱい。:2006/04/23(日) 22:39:43
>>89
ほらよ。Acrobat Readerぐらい入れとけよ

> 課題1
> 品名(name)と単価(price)で構成される構造体(GOODS)の配列を作り、
> キーボードから品名と単価を3つ入力するとこの配列に格納し、
> 入力した順と逆の順序で出力するプログラムを作成せよ。ただし、品名は15文字以下とする。
> 課題2
> キーボードから入力した整数を線形リストに格納し、その内容を
> 入力した順に表示するプログラムを作成せよ。なお、整数の個数は最大5個とし、
> EOFコード(Ctrl-D)が入力されたら入力終了とする。
91名無しさん@お腹いっぱい。:2006/04/23(日) 23:07:08

















( ゚д゚)ポカーン
92名無しさん@お腹いっぱい。:2006/04/23(日) 23:24:08
ええ?漏れは「うまいなw」と思ったけど
93名無しさん@お腹いっぱい。:2006/04/24(月) 18:34:20
確かに "問題" を教えてるねw
94名無しさん@お腹いっぱい。:2006/04/24(月) 22:31:05
プログらミングって何ですか?
95名無しさん@お腹いっぱい。:2006/05/14(日) 20:14:02
libiconv の iconv の inbuf は const ついてるのに、 glibc の iconv の inbuf には const ついてないのはなんで?
glibc の iconv は inbuf を書き換えるわけ??
96名無しさん@お腹いっぱい。:2006/05/14(日) 21:34:02
Cの言語仕様では「constが付いているならば書き変えらねない」
逆は真ならず。constつけてないのに書き変えなくても全く構わない。
97名無しさん@お腹いっぱい。:2006/05/14(日) 21:47:15
UNIX98の仕様ではconst char **inbufで
SUSv3ではchar **inbuf、みたいな話が引っかかるな。
98名無しさん@お腹いっぱい。:2006/05/14(日) 23:01:33
glibc だと const な文字列を iconv に渡すときに、const 無しにキャストしないといけないのがキモイんだけど。
strcpy とかするのはバカらしいし。
99名無しさん@お腹いっぱい。:2006/12/06(水) 21:03:58
Makeについて質問させて下さい。
Makefileの中でフォートランのコンパイルしてるんですが、
突如*.cのコンパイルを始めるんですよ
cのファイルなんて無いから当然エラーで止まるんですが、
なんでこんなことになっちゃうんですかね?
100名無しさん@お腹いっぱい。:2006/12/07(木) 08:48:10
同じ事が起こる最小のMakefileを晒してみてはどうか
101名無しさん@お腹いっぱい。:2007/01/12(金) 15:28:21
tarのヘッダに記載されている "size" ってどう見ればいいか何方か教えて下さい。

% tar cvf foo.tar hoge

とやって 21466 byte のhogeファイル1個をアーカイヴしたtarファイルをダンプすると、
ヘッダの "size" には "00000051732 " という文字列が記載されています。

% tar tvf foo.tar

で確認するとちゃんと

-rw-r--r-- 0 root wheel 21466 1 26 2006 hoge

と出てくるので、どこからファイルサイズを取得してるのかわかりません><
ちなみにソースを追ってみましたが、libarchive* に入り込んだ辺りで限界で
した。(FreeBSDの話)
102名無しさん@お腹いっぱい。:2007/01/12(金) 15:33:25
8進
103名無しさん@お腹いっぱい。:2007/01/12(金) 15:54:22
>>102
Thanks.
書いた後、Win版tar
104名無しさん@お腹いっぱい。:2007/01/12(金) 15:56:33
>>102
Thanks.
実は書いた後、Win版tarのsrcが見つかったので見てみたら to_oct() とか使わ
れてるのをみて8進数だと気がつきました。スマ
しかし、何故に8進数?tarってそんなに歴史あるフォーマットでしたっけ?
105名無しさん@お腹いっぱい。:2007/01/12(金) 16:15:45
>>104
> tarってそんなに歴史あるフォーマットでしたっけ?
http://www.jp.freebsd.org/cgi/mroff.cgi?subdir=man&lc=1&cmd=&man=tar&dir=jpman-5.4.0%2Fman§=0#sect12
106名無しさん@お腹いっぱい。:2007/01/12(金) 16:20:25
107名無しさん@お腹いっぱい。:2007/02/16(金) 21:07:46
こんばんわ。 プログラミングで質問があります。

大学のレポートで出された問題ですが、どうしても解けません。
ソフトはウインドウズのビジュアルソフトというのを使ってます。

問題
キーボードから1を入力するとあなたの名前、
2を入力するとあなたの年齢、
3を入力すると、その両方を表示することができるプログラムを作成せよ。

というものです。

よろしくお願いします。
108名無しさん@お腹いっぱい。:2007/02/17(土) 01:04:39
板違い
109107:2007/02/17(土) 01:33:01
いた違いすいません。

どちらの板に行けばいいでしょうか?
110名無しさん@お腹いっぱい。:2007/02/17(土) 07:38:30
C/C++の宿題を片付けます 83代目
http://pc10.2ch.net/test/read.cgi/tech/1170830498/
ここかなー。
111107:2007/02/17(土) 09:26:02
>>110

ありがとうございます!!
112名無しさん@お腹いっぱい。:2007/02/19(月) 18:07:29
自作のなんちゃってサーバーを運用しています。
今は syslog で接続ログ+デバッグメッセージを出しているのですが、結構CPUを
食うみたいだし、負荷が高いときは取りこぼしもある感じです。
接続ログ+デバッグメッセージを取るのに syslog 以外でおすすめはありますか?
113名無しさん@お腹いっぱい。:2007/02/19(月) 18:15:37
log4c?
114名無しさん@お腹いっぱい。:2007/02/19(月) 20:22:24
syslog-ngとか socklog , msyslog, metalogとか
みんな結構syslogにはいろいろ苦労はしているのか
後は自前でログを書き出すようにアプリを書き換えるとか。
115名無しさん@お腹いっぱい。:2007/04/24(火) 08:19:20
UNIXのプログラミングでは統合環境なに使うのが一般的なの?

とりあえず今はEmacsつかってるけど、
VisualC++みたいにクラスのメンバなんかを自動的に補完する機能(InteliSence?)
を付けることってできないでつか?
116名無しさん@お腹いっぱい。:2007/04/24(火) 08:54:36
CEDET
117名無しさん@お腹いっぱい。:2007/04/24(火) 10:02:47
>>116
おぉ、ありがたやありがたや (´Д`;)
118名無しさん@お腹いっぱい。:2007/06/03(日) 21:50:52
exec()って成功すると返り値を返しませんよね。
fork()して、子供がexec()に成功したことを親が知るにはどうすればいいですか?
119名無しさん@お腹いっぱい。:2007/06/03(日) 23:45:51
exec() で起動されるプログラムから親に何らかの方法で成功したよ〜って
何か送ってもらえばいいんジャマイカ。
120名無しさん@お腹いっぱい。:2007/06/04(月) 00:03:18
/proc/PID/でも監視してれば
121名無しさん@お腹いっぱい。:2007/06/05(火) 00:05:19
>>118
確実にやるんだったら、ptrace(2)
122sage:2007/06/07(木) 22:31:18
>>121
ありがとうございます。
ptrace(2)、勉強してつかってみます。
123名無しさん@お腹いっぱい。:2007/06/15(金) 23:24:28

SuperCon2007 ― 夏の電脳甲子園
http://pc11.2ch.net/test/read.cgi/tech/1181916316/

1 :デフォルトの名無しさん :2007/06/15(金) 23:05:16
がんばれっ!天才高校生諸君

スーパーコンピューティング・コンテストSuperConは、
高校生がスーパーコンピューターを使って、プログラミングのアイデアを競う大会です
今年は阪大に今年導入された最新のスーパーコンピューターを使います
プログラミング大好きな高校生諸君!
来たれ阪大・東工大へ!!
諸君のアイデアをスーパーコンピュータ上で実現してみよう!!!
http://www.gsic.titech.ac.jp/supercon/supercon2007/index.html
124名無しさん@お腹いっぱい。:2007/06/17(日) 10:11:22
GNUのリンカー( LD )で質問ですが、
バイナリーデータを指定アドレスに配置する方法を知りたいです。
読み込むとセクション.dataでそのセクションに配置されてしまいます。
125名無しさん@お腹いっぱい。:2007/06/17(日) 10:39:59
126名無しさん@お腹いっぱい。:2007/07/13(金) 11:38:35
学校の課題で「UNIXシステムにおけるリダイレクションとパイプの概念を説明し、
この機能の利点について論じろ。また、それぞれの典型的な使い方を説明しろ」

っていうのが出たんですけど、教えてください
127名無しさん@お腹いっぱい。:2007/07/13(金) 14:36:41
その課題は以下の5つの小問に分解されるということを教えてやろう。
(1) リダイレクションとは何か
(2) パイプとは何か
(3) リダイレクション、パイプの利点を論ぜよ
(4) リダイレクションの典型的な使い方を説明せよ
(5) パイプの典型的な使い方を説明せよ

あとは自分でどうぞ。(3)を最後に持ってきた方がやりやすいかも。
128名無しさん@お腹いっぱい。:2007/07/15(日) 15:54:49
Xで簡単な日本語のエディタを作るサンプルとか、サンプルコードはないですか?
エディタというより、日本語の処理を勉強したいので、Cで短いものがいいです。

129名無しさん@お腹いっぱい。:2007/07/15(日) 16:34:59
>>127
なんで (3) だけ リダイレクション と パイプ が一緒にになってるのか気になる。
130名無しさん@お腹いっぱい。:2007/07/17(火) 19:37:00
>>128
日本語以外のエディタならバリバリ作れるぜっ、
だから日本語処理だけ知りたいぜってレベル?
あと日本語以外の文字は眼中になし?
131名無しさん@お腹いっぱい。:2007/12/31(月) 17:47:53
getoptは引数からオプションだけを取れますが、オプション以外を取れる関数はありませんか?
132名無しさん@お腹いっぱい。:2007/12/31(月) 18:43:08
>>128
「文字コード」でググってみ
文字コードを甘く見すぎてると気づくぜ

>>131
argv を見るのじゃいかんのか?(Cのハナシでしょ?)
133名無しさん@お腹いっぱい。:2007/12/31(月) 18:44:46
うはwww
テラ七月wwwww
134名無しさん@お腹いっぱい。:2008/01/01(火) 02:11:10
本読んで、いろいろわかった気がしたので、nviとmgのソースを読もうとしたのですが
どうにもなりません。

どうしたらよかですか?
135名無しさん@お腹いっぱい。:2008/01/01(火) 11:46:38
もっと簡単なものを読むか、一部分だけに絞って読む。
136131:2008/01/01(火) 14:06:50
>>132
もちろんargv*を見て、自分でオプション以外を取得すれば良いのですが、
getoptはオプションを見るように、オプション以外を見れる関数があるのかと思い
質問しました。
137名無しさん@お腹いっぱい。:2008/01/01(火) 15:24:01
getopt.cのソースが読みづらいのが悪い
138134:2008/01/02(水) 04:17:08
>>135
lsとかcatのことでせうか?
オプション全ては、網羅できないけど大体大丈夫だと思ってます。
もっと、簡単で教育的なものを教えていただけると幸いです。

あと、一部分に絞って読むというのは、これくらいの量の場合意味があるのでせうか?
139名無しさん@お腹いっぱい。:2008/01/02(水) 04:48:24
>>138
> lsとかcatのことでせうか?

なんでls? 135はもっと古くてプリミティブなバージョンというつもりで書いた。

> あと、一部分に絞って読むというのは、これくらいの量の場合意味があるのでせうか?

その程度の量すら把握できないから泣き言言ってるんだろ。
まずは何か一つごく簡単な小さいテーマを決めてそれだけ調べろ。
140134:2008/01/02(水) 12:25:29
>>139
        ___
       ,∠==、ヽ `i'ー- .
      /    ヽ| 「`'ー、`ー、
       l     ミ| /   `ー、ヽ
      j     R|イ ー-、.  ノ7┐
      `Vハハハ/ヽ.「~ ̄ `''ァf‐┘
.         `、 }ー-`、__..._/::l
          `|:::::::|ヽ/l:;:;:;|
.            |::::::::l:::::::::::::::l
.            l::::::::l:::::::::::::::l
           l:::::::::l::::::::::::::l
           l;::::::::{:::::::::::::l
              `iiiiiiiハiiiiiiiij´
          ∠-、レ'ヽ〃〕
141名無しさん@お腹いっぱい。:2008/01/02(水) 15:39:24
>>134
カーネル嫁
142名無しさん@お腹いっぱい。:2008/01/03(木) 05:18:28
車輪の再発明と言いたがるやつは多いが
分かった気になったんなら cat cp mv rm... だのの身近なコマンドを
自作コピーしてみ
当然 C で
オプション満載する必要なし
そのコマンドの本質的な機能のみ

まず find あたりが壁
more (less) を書こうとして何か違うと気づく
diff、patch、make あたりに手を出してもヤバいと思ったら退却する
リダイレクトくらいはできるシェルを書けるようになったら
UNIX プログラミング入門編修了

エディタは OS カーネル、言語処理系、RFC なんかに並ぶ修了認定科目だな
144名無しさん@お腹いっぱい。:2008/01/03(木) 17:49:47
句読点がないことしか理解できなかったんだね。
居場所まちがってるよ。
145名無しさん@お腹いっぱい。:2008/01/03(木) 19:13:35
サマージャンボの意味が解ったのか、すごい。
教えてくれ
146名無しさん@お腹いっぱい。:2008/01/04(金) 23:13:13
C言語でプログラムを書いているのですが、デバッグのために
全ての関数の先頭に、
#ifdef DEBUG
printf( "関数名\n");
#endif
を挿入したいと考えています。

簡単にそれを実現する方法はありませんか?
147名無しさん@お腹いっぱい。:2008/01/05(土) 00:29:44
ageとけ
148名無しさん@お腹いっぱい。:2008/01/05(土) 00:37:03
バックトレースしたいってことか?デバッガ使えば良いんじゃないの?
149146:2008/01/05(土) 02:26:39
>>148
デバッガは使ったこともないと言うのがあるのですが、
正しい順序で関数が呼ばれているかだけ分かれば十分な用途なので
関数名を関数の最初でプリントできればと思っています。

ちなみに関数は、
int
main( argc, argv)
int argc;
char** argv;
{
と言う書き方で書いています。

sedやawk, Perlを使ってできるのであれば、今後の参考のために教えて頂きたいです。
どうかよろしくおねがいします
150名無しさん@お腹いっぱい。:2008/01/05(土) 03:54:21
>>146
変数宣言の前に printf 入るとエラーになる処理系だと
構文解析的な事までやらないと無理だと思うけど。
151名無しさん@お腹いっぱい。:2008/01/05(土) 04:32:47
>>146
ソースファイルを加工するよりスマートな方法がいくつかあるよ。
ttp://d.hatena.ne.jp/yupo5656/20071008/p1
ttp://lab.klab.org/modules/mediawiki/index.php/Software#ftrace
152名無しさん@お腹いっぱい。:2008/01/05(土) 05:03:04
>>146
デバッガで追うこと覚えちまう方が格段にハナシがはやい。

それか、もうそのプログラムはログを吐くことに決めちゃって
debug(char *msg){printf("%s\n", msg);} みたいな関数を作って使う。
その場しのぎの #ifdef まみれにするよりはカッコがつく。
153146:2008/01/05(土) 18:57:12
皆さんありがとうございます。

>>150
c99モードで行っているので、問題ないと思います。

>>151
そのようなものがあるのですね、後で使ってみようと思います。

>>152
デバッガの使い方を覚えた方がやはりいいですよね…。
今回は、関数が呼ばれている順番を見たかっただけなので、
簡単に関数名の出力順だけを見たいと考えたいと思っていました。
自分で作っているソフトなので、カッコとかは特に大丈夫なのですが…
154amiba ◆fxG7LsaDek :2008/01/06(日) 10:50:57
IBMのThinkPadにFreeBSD5.4をインストールし、デスクトップ環境KDEもインストールした。
自分が行いたいのは『C/C++のプログラム開発』。
環境開発にあたり、このあとは何をすれば良いのだろうか?
コンソール画面で行うとも考えらえないし、ktermでやってみたが、
標準入力、出力が全く動作しない。
何の上で開発していけばいいのだろうか?
必要な情報は随時追加していきたい。
155名無しさん@お腹いっぱい。:2008/01/06(日) 11:01:50
>>154
マルチ、死ね。
156amiba ◆fxG7LsaDek :2008/01/06(日) 11:03:39
>>155
ごめんなさい、どうしても知りたくて。
しかし、しねません。
157名無しさん@お腹いっぱい。:2008/01/06(日) 11:03:46
>>154
あっちのスレでさらしてたプログラムをもう一度実行させて
2 と ENTER を押してみそ。
10 と出るだろ
158amiba ◆fxG7LsaDek :2008/01/06(日) 11:07:24
>>157
普通に、kterm->emacsで、
int main()
{
int a;
cin>>a;
count<<a*5<<endl;
return 0;
}
のことですよね。

普通そうなりますよね?しかしおかしいんですよ。
入力待ちが行われません。

home/*****/test/g++ test.cpp -o test
home/*****/test/test
home/*****/test/
みたいな感じです。
159名無しさん@お腹いっぱい。:2008/01/06(日) 11:14:34
test の前に ./ をつけて、
./test というふうに実行してみ。

なんでうまくいったかは宿題な。
160名無しさん@お腹いっぱい。:2008/01/06(日) 11:16:11
>>156
自分だけは特別なのか?
幸せ全開のゆとり脳だな。
161amiba ◆fxG7LsaDek :2008/01/06(日) 11:16:40
できました!
ありがとうございます、感謝します。
シェルがどうこうって話ですかね?
調べてみます!
162名無しさん@お腹いっぱい。:2008/01/06(日) 11:29:23
感謝のしるし+マルチの謝罪として
秘蔵のエロデータを1ギガバイト以上アップすること
163名無しさん@お腹いっぱい。:2008/01/06(日) 12:07:19
>>162
偉そうに
164名無しさん@お腹いっぱい。:2008/01/06(日) 15:22:26
>>159でうまくいったのか・・・ ただのアホじゃないか・・・
てっきりもっと難しい問題かと思ってたのに
165名無しさん@お腹いっぱい。:2008/01/09(水) 22:36:44
アホじゃあないな、単なる初心者だ。

あの要領を得ない 1 レス目からして
人が手をつけないエッジで詰まってるような問題であるわけもない。

青いねヽ(´ー`)ノ>>164
166名無しさん@お腹いっぱい。:2008/01/20(日) 20:42:42
while (1) fork();
167名無しさん@お腹いっぱい。:2008/01/31(木) 00:53:08
>>166
プロセステーブル埋め尽くして何が嬉しいの?
168名無しさん@お腹いっぱい。:2008/01/31(木) 03:36:59
普通はテーブル埋め尽くすより先にmaxprocのlimitにひっかかって止まる
169名無しさん@お腹いっぱい。:2008/02/12(火) 15:41:51
相手にアカウント登録させて、クレジットカードを入力させ、
利用料を月に引き落とすプログラムとかってどやって作ってるんでしょうか??
また配布されていたりしませんかね…?
170名無しさん@お腹いっぱい。:2008/02/13(水) 13:00:42
>>169
日本人でおk
171名無しさん@お腹いっぱい。:2008/02/13(水) 13:07:31
>>169
もしかして、プログラムで自動的に引き落としたりできると思ってるのか?
そんなことになってたら、銀行口座がばれるだけで全て引き落とされる罠。
172名無しさん@お腹いっぱい。:2008/02/13(水) 13:38:01
>>170
日本語ですが?

>>171
口座じゃなくてクレジットなんですが、
銀行と繋いでできないんですか?
173名無しさん@お腹いっぱい。:2008/02/13(水) 13:56:43
クレジットカードならクレジット会社に申請して審査してもらわないと
174名無しさん@お腹いっぱい。:2008/02/13(水) 16:08:51
phishingでもやるの?
175名無しさん@お腹いっぱい。:2008/02/13(水) 18:53:40
>>172
カード番号分かるだけで引き落とせるなら、レジのバイトするよ俺
176名無しさん@お腹いっぱい。:2008/02/15(金) 01:31:17
>>173 >>175
頭悪いヤツに聞いてない。

>>171さんみたいに、国語できる人に聞いてる。
177名無しさん@お腹いっぱい。:2008/02/16(土) 02:17:46
できるものならクレジットカードを入力してみたい。
178名無しさん@お腹いっぱい。:2008/02/16(土) 03:26:35
利用料を月に引き落とすんだから、回収するには月に行かないといけないのかな
179名無しさん@お腹いっぱい。:2008/02/17(日) 13:34:08
こーゆー決済代行会社に頼むとかかなー。
ttp://www.cubit.co.jp/sgp_system.html
180名無しさん@お腹いっぱい。:2008/02/20(水) 20:41:17
gcc3.4.6でC++プログラムを書いています
inline関数でメモリチェックのために
変数の読み書きをするコードを書きたいのですが、

inline void foo(unsigned long *var)
{
 unsigned long tmp;
 if (var != 0) {
  tmp = *var;
  *var = tmp;
 }
}

の様にして-O2で最適化すると
バイナリからメモリに触れるコードが消えてしまいます。
-O0オプションを付けるとinlineではなくなってしまうものの、
メモリに触れるコードは残るので、
  tmp = *var;
  *var = tmp;
の部分だけ最適化しないようにしたいのですが、
どうしたらよいですか?
181名無しさん@お腹いっぱい。:2008/02/20(水) 21:10:15
最適化するなよ
182名無しさん@お腹いっぱい。:2008/02/20(水) 21:18:57
>181
利用頻度が高いと思われる部分なので、
他の部分は最適化されたコードである必要があります。
183名無しさん@お腹いっぱい。:2008/02/20(水) 21:40:42
そこを最適化しないことで周りがぐちゃぐちゃになるだろ
184名無しさん@お腹いっぱい。:2008/02/20(水) 21:41:37
どうでもいいなら、そこだけ別ファイルなりにして別のオプションでコンパイルしろよ
185名無しさん@お腹いっぱい。:2008/02/20(水) 21:43:57
volatile unsigned long *var
186名無しさん@お腹いっぱい。:2008/02/20(水) 23:45:21
>>182
最適化したくないとこだけソースファイル分けて別のオブジェクトにすれば?
187名無しさん@お腹いっぱい。:2008/02/21(木) 00:06:06
188名無しさん@お腹いっぱい。:2008/02/21(木) 11:08:24
>185
ありがとうございます
うまくいきました
189名無しさん@お腹いっぱい。:2008/02/22(金) 04:56:20
シグナル周りの初期化の定石を教えてください。
190:2008/02/22(金) 05:40:31
FFmpegについて質問したいのですが、
ものすごく初歩的なことです。
コマンドプロンプトで命令を実行しようとするとunknown formatと出て
どうしようもできません。

どなたかおられますかね??
いくら検索してもどこにも載ってない・・・
191:2008/02/22(金) 05:51:36
http://www.xucker.jpn.org/product/ffmpeg_commands.html
ここのサイトのFLV1の下のやつ
"c:\ffmpegフォルダー\ffmpeg.exe" "-y" "-i" "c:\入力.flv" "-ab" "96k" "-r" "29.97" "-ac" "2" "-ar" "44100" "-b" "400k" "-s" "320x240" "c:\出力.flv"
を日本語部分変えてコマンドプロンプトに入力すると、
〜〜〜入力.flv Unknown Formatと出て、そこからどうにもできません。
どうすればいいんでしょう?
192名無しさん@お腹いっぱい。:2008/02/22(金) 13:02:01
370 :k [] :2008/02/22(金) 05:57:01
既知のフォーマットのflv の意味が分かりませんww
フォーマットの意味が…

これはFFmpegがきちんとインストールされてるか検査するために一応やってみたのですが…
何をどう変換してるのかすら分からないです。(flvをflvって…)

つまり、どうすればUnknown Formatが出なくなるんでしょうか…?

371 :k [] :2008/02/22(金) 06:10:22
ま、いいわちゃんとしたとこで聞くし。

数学板の住人が言ってたな。プログラミング板はバカが多いって。

低学歴どもは性格も悪いからな…高学歴のオレの前にひざまづくがイイ。
じゃあな。暗い職場で一生プログラム打ってしねばww

372 :k [] :2008/02/22(金) 06:11:29
頭が悪いヤツは単純作業を繰り返して社会にこき使われればいい。
単純作業しかできないのだからな。
オレのように賢い人間はこのようなことする必要ないんだよ。
今度こそじゃあな。
193名無しさん@お腹いっぱい。:2008/02/22(金) 20:44:56
>>192
svnからスナップショットとっておいで
194名無しさん@お腹いっぱい。:2008/03/18(火) 20:36:13
先日ラクダ本を購入してボチボチ読んでるんだけど、
こんな書き方が出来るのかと目から鱗の連続・・
安価な本読んでやりたい事が出来るようになった程度で
満足していた自分が情けなくなる・・
参考書は多少高くてもちゃんとしたものを買わないと駄目だな・・
195名無しさん@お腹いっぱい。:2008/03/19(水) 06:24:15
本買えばいいってもんでもないけどな
196名無しさん@お腹いっぱい。:2008/03/19(水) 15:30:34
意味不明なんですけど。なんでこんなの分かるんですか?すごいね。

※くれぐれも、返信に「それはお前がバカだからさ」とは書かないでください。書いたら(´・ω・`)て感じの顔になってしまいます。
197名無しさん@お腹いっぱい。:2008/03/19(水) 20:30:27
マニュアル読んで応用が効かないような奴はまともなコード書けないだろ。
本を読んで応用を知っても、結局それしかできないし。
198名無しさん@お腹いっぱい。:2008/03/20(木) 10:32:33
>>194
て言うか素直が一番
199名無しさん@お腹いっぱい。:2008/03/20(木) 23:31:17
>>196
て言うかこいつが一番素直
200名無しさん@お腹いっぱい。:2008/03/21(金) 01:27:43
>>197
そうやって試行錯誤して成長するんだろ。成長しないやつもいるが。はは。
201名無しさん@お腹いっぱい。:2008/03/21(金) 13:20:41
>>194
逆にラクダ本を理解できるようになった
と考えればいいじゃない
202名無しさん@お腹いっぱい。:2008/03/28(金) 17:05:20
>iconv_open("SJIS", "EUC-JP");

この引数に使える文字セットってどこを見ればわかりますか?
203202:2008/03/28(金) 17:16:10
もしくは、現在の文字コードの文字列をOSから取得することはできますか?
204名無しさん@お腹いっぱい。:2008/03/28(金) 17:17:41
>>202
OSは何?

>>203
「現在の文字コードの文字列」って?
205202:2008/03/28(金) 17:33:14
Mac OS X です。

現在の文字コードって、GUIから入力されたときの文字コードっていうか。。。
206名無しさん@お腹いっぱい。:2008/03/28(金) 18:15:54
207名無しさん@お腹いっぱい。:2008/03/28(金) 19:23:33
$ iconv -l
とか、
iconv_open("char", "wchar_t")
とかの話?
208名無しさん@お腹いっぱい。:2008/03/30(日) 16:15:16
env
とかで調べろ
209名無しさん@お腹いっぱい。:2008/03/31(月) 11:37:44

 黒 タ イ ツ の 暗 黒 シ ュ シ ュ ト リ ア ン
210名無しさん@お腹いっぱい。:2008/04/03(木) 01:28:48
Hello world
211名無しさん@お腹いっぱい。:2008/05/28(水) 09:28:01
ムー板に書きましたが、誰も相手にしてくれません:

>struct timeval tv;

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

というか、timeval <---> double 変換したいのですが、
どういうコードでできますか?
212名無しさん@お腹いっぱい。:2008/05/28(水) 09:31:05
>>211
期待する動作と、自分でやったことと、自分でやった結果(期待とどう違ったのか)、説明が
抜けてるから相手にされないんだろ。無理もない。
213211:2008/05/28(水) 09:36:54
いや、標準の関数とかマクロでできると思ってるので、
その名称を教えて頂きたいだけなんですが。
214名無しさん@お腹いっぱい。:2008/05/28(水) 10:06:01
ムー板というと
UFOの真実! とかそういうネタを扱う板だろうか?
215名無しさん@お腹いっぱい。:2008/05/28(水) 10:17:13
>>211
struct timeval tv;
double d;

d = (double)(tv.tv_sec + tv.tv_usec/1000000.0);

>>212
わからないなら黙ってろ
216名無しさん@お腹いっぱい。:2008/05/28(水) 10:17:28
そういうのが好きな人の集まった板でつ。

関連板: 魔板
217211:2008/05/28(水) 10:18:30
>>215
知りたいのはその内容ですた orz
218名無しさん@お腹いっぱい。:2008/05/28(水) 10:24:32
>>213 >212
219名無しさん@お腹いっぱい。:2008/05/28(水) 10:26:19
>>218
>>215 で解決済。

期待する動作は自明。
「自分でやったことと、自分でやった結果」なんて書かなくてもわかる。
220名無しさん@お腹いっぱい。:2008/05/28(水) 10:34:32
>>219
いやね、 tv.tv_sec*1000000.0 + tv.tv_usec なんて答えもあり得るし、
そもそも >215 で正解なら、そんなもん真っ先に自分で書くだろうから
何か変わった変換を期待してるか、そうでもなけりゃコードレベルで
ミスってるんじゃないかと思っちゃったんだよ。

> 「自分でやったことと、自分でやった結果」なんて書かなくてもわかる。
おぉ。エスパー乙。
あ、「こんな質問する人が自分で何かやってるわけない」、ってことかな。
221名無しさん@お腹いっぱい。:2008/05/28(水) 10:37:36
エスパーすると、
tv.tv_usecを100万で割る時に、末尾の「.0」を付け忘れて
int扱いで切り捨てられたとかだろ。
222名無しさん@お腹いっぱい。:2008/05/28(水) 17:58:12
>>215
相変わらず、素人丸出し駄目回答で粋がっているのか。
自ら恥晒すことないのに… 引っ込んでなよ。
223名無しさん@お腹いっぱい。:2008/05/28(水) 18:13:22
224名無しさん@お腹いっぱい。:2008/05/28(水) 18:52:17
具体的に指摘されないとわからないようだ。本当にヘボなんだな。

d = (double)(tv.tv_sec + tv.tv_usec * 1e-6);
乗算をつかう理由は二つある。先生に聞いてきなさい。www
225名無しさん@お腹いっぱい。:2008/06/02(月) 19:05:21
2chに書き込む手順を教えてください
226名無しさん@お腹いっぱい。:2008/06/02(月) 19:07:12
1.10年ROMる。
2.書き込みたいスレで書き込んでも良いか質問する
 Yes→書き込む
 No→1へ
227名無しさん@お腹いっぱい。:2008/06/03(火) 11:22:39
プログラムからファイル書き込みするとして、
ファイルの権限付与はどういうAPIで行うのでしょうか?

できればファイルを書き込む前に設定したいのですが、
umaskっていうAPIあるのでしょうか?
ググっても見あたりませんが。
228名無しさん@お腹いっぱい。:2008/06/03(火) 11:47:51
1ページ目で見つかってますが。
229227:2008/06/03(火) 11:49:24
thx>>228

あ、UNIX とか プログラミングとか余計なワードを入れたから混乱しましたが、
ttp://www.linux.or.jp/JM/html/LDP_man-pages/man2/umask.2.html
で良いわけですか。

もしくは、
ttp://www.linux.or.jp/JM/html/LDP_man-pages/man2/chmod.2.html
かな。
230227:2008/06/03(火) 11:52:03
良く考えると、umaskだと、
プログラム自身がファイルを書き出すときの設定を行うわけではなくて、
ディレクトリの設定変えてしまうわけですよね。
行儀が悪いですよね。

やっぱ、chmodかな。
231名無しさん@お腹いっぱい。:2008/06/03(火) 12:00:10
関連質問させて下さい。

rootユーザーがファイルを作成すると、そのディレクトリがリード権限になってしまったりする場合ありますか?
232名無しさん@お腹いっぱい。:2008/06/03(火) 12:39:17
>>230
ちげーよ。
umaskは既に存在するファイル(ディレクトリ)には何の影響も及ぼさない。
そのプロセスが「作成する」ファイル(ディレクトリ)のモードのマスクを設定する。
umaskはプロセス固有の情報なので、作成したファイル(ディレクトリ)には記録されない。

>>231
ならない。

キミ、根本的に誤解しているから、基本から調べなおす事をすすめる。
233227:2008/06/03(火) 12:42:12
とりあえずthx>>232
234名無しさん@お腹いっぱい。:2008/06/04(水) 07:29:17
>>226
質問はどうやって書き込むかをどうやって質問しますか
235名無しさん@お腹いっぱい。:2008/06/04(水) 08:12:33
「仮にぼくが質問できるようになったとしよう」と仮定法で進めてはどうか?
236名無しさん@お腹いっぱい。:2008/06/04(水) 16:44:37
書き込む方法についての質問を書き込む方法は?
237名無しさん@お腹いっぱい。:2008/06/05(木) 13:49:46
書き込む方法が分からないまま書き込んでいますか?
238名無しさん@お腹いっぱい。:2008/07/31(木) 19:26:13
プログラミングしりとり
http://game14.2ch.net/test/read.cgi/575/1010948472/l50
239名無しさん@お腹いっぱい。:2008/10/05(日) 18:30:14
プログラム中(C言語)にて/dev/ttyA1やttyA0といったデバイスファイルに対し
ボーレート・パリティの設定をioctl関数で行いたいんだけど、
渡す引数等がわかりません。

ご存知の方教えてください。
240名無しさん@お腹いっぱい。:2008/10/05(日) 19:04:16
>>239
ioctl()をじかに呼ばずに、tcsetattr()使った方がいいよ。
241239:2008/10/05(日) 20:19:05
>>240
ありがとうございます。
tcsetattr()は初めて聞く関数名でした。
tcsetattrはioctlをラッピングしたAPIと考えてよろしいのですか?

242名無しさん@お腹いっぱい。:2008/10/05(日) 20:47:21
>>241
ラッパーと考えていいよ。
ioctl()直接の場合、OSによって TCGETAだったりTCGETSだったり、やりかたが変わる。
tcsetattr()を使えば、OS共通で同じやりかた。
struct termiosに値をセットして呼べばいい。
243239:2008/10/05(日) 23:10:30
>>242
丁寧にありがとうございます。
早速試してみます。
244名無しさん@お腹いっぱい。:2008/11/04(火) 08:16:43
/etc/hostsを参照する場合って何のライブラリをつかうんですか?
245名無しさん@お腹いっぱい。:2008/11/04(火) 08:20:14
>>244
gethostent()
246名無しさん@お腹いっぱい。:2008/11/08(土) 16:50:36
ダミーのカーネルドライバを作って/dev にデバイスを生成し
mmap経由でエンドアプリとデバイスアクセスアプリとやりとりをするレイヤー的なものを作ろうと思っているのですが
解析しやすいソースとか資料になるサイトがあれば紹介願います。
ちなみにver7.0です。
なんかver6.*からいろいろ変更があるみたいで拾ったソースとか引数が違っていたりしました。
247名無しさん@お腹いっぱい。:2008/11/08(土) 17:28:39
Windows7か。もうソースまで流出したのか。
248名無しさん@お腹いっぱい。:2008/11/10(月) 00:17:14
>>246
fuseとか。
249246:2008/11/10(月) 12:11:30
>>248 あんがとです。
fuseはドライバではなくてエミュレータのようです。
v4l関連を追ってみることにします。
250名無しさん@お腹いっぱい。:2008/11/10(月) 18:01:49
エミュ…?
251名無しさん@お腹いっぱい。:2008/11/10(月) 18:09:34
こ、、工ミュ...?
252名無しさん@お腹いっぱい。:2008/11/12(水) 00:32:03
なんだ、女か。
253名無しさん@お腹いっぱい。:2008/11/25(火) 10:42:53
FreeBSDでカーネルドライバ作るとき機種毎の関数を同じ名称にして
別のファイルに分散して設定ファイルを読み込んでデバイスIDとのマッチングを行ったあと
該当ファイルを読み込む形にしようとおもうのですが

設定ファイルの置き場所に関してルール(例えば/etcとか)があるのか
サブプログラムもkoでないといけないのか
ユーザープログラムと同じようにsoにしてdlopenとdlsym使っていいのか
そしてその場合の置き場所に妥当なところを
教えてくださいませ。
254名無しさん@お腹いっぱい。:2008/11/28(金) 22:41:10
エクセルのマクロでプログラミングをしています
その内容は「じゃんけん」です
はい=グー いいえ=チョキ キャンセル=パー にしたいのですが
どうやればよいのでしょうか?
教えてください


255名無しさん@お腹いっぱい。:2008/11/30(日) 20:42:22
>253
カーネルドライバは基本的にファイルシステムの
マウントより先に初期化されるわけでして、ハイ。
256名無しさん@お腹いっぱい。:2008/11/30(日) 20:53:39
>>255
そんなことはわかってるよ。
だから、ファイルシステムのマウントより前に読むために、
例えば/etcとかの特定の置き場所があるのか、
koにする必要があるのか、dlopenとdlsymを使っていいのかを聞いてるんだろ。
257名無しさん@お腹いっぱい。:2008/12/03(水) 11:51:37
>>256 そのとおり!!
現実問題としてloader.confを読んでいるときはファイルシステムは成立しているはずだから
loader.confに記述するかkldloadでスタートできるならいいのかなと思っています。

デバイスリストなどユーザーサイドで編集できるようにしておけば
プログラムの再コンパイルなどしないでもデバイスIDを登録すれば使えるようにしたいのです。
そのための対応ライブラリーのロードです。

現実問題として同じICチップを使っているデバイスIDの違う製品がでると
いちいちソースに手を入れてビルドし直さなくてはいけないようなことがあったからです。
258名無しさん@お腹いっぱい。:2008/12/04(木) 02:14:01
C言語で質問なんですが、二つの実数が小数点1ケタまで等しいとき
に〜するみたいにしたいんですけど、
if(a == b){

}
ってやったら実数が完全に等しくないといけないじゃないですか・・・
どうやれば上記のようにできますか?
259名無しさん@お腹いっぱい。:2008/12/04(木) 02:25:28
丸めろ
260258:2008/12/04(木) 09:07:24
丸めるってなんですか?
初心者なのであまりくわしくないです。
261名無しさん@お腹いっぱい。:2008/12/04(木) 09:56:38
珍しいスレが上がってると思ったら
なんだ、釣りか……
262名無しさん@お腹いっぱい。:2008/12/04(木) 10:19:18
>>259
引っかけ問題に引っかかったね。

「小数点1ケタまで等しい」→「小数点1ケタ目までの数字が同じ」
だから、丸めたら不正解。
263名無しさん@お腹いっぱい。:2008/12/04(木) 10:24:13
if (fabs(a - b) < 0.1)
264名無しさん@お腹いっぱい。:2008/12/04(木) 10:27:49
>>263
それだと 1.09 と 1.1 でも一致とみなされる

>>262 参照
265名無しさん@お腹いっぱい。:2008/12/04(木) 10:31:23
>>262 は抜きして、丸める方式でOKだとしても、

>>263 だと 1.11 と 1.02 が一致と判定されるから駄目だな
266名無しさん@お腹いっぱい。:2008/12/04(木) 10:42:06
1.11と1.02は偽
1.00と1.09は真

実際はこんな比較を行いたいわけがない。
267名無しさん@お腹いっぱい。:2008/12/04(木) 10:48:37
>>266
数値符号の生成処理なんかだと、
文字通りの数字の一致を判定したいことがあるよ。

1.11と1.02は偽
1.00と1.09は真

そういう比較を行ないたい。
268名無しさん@お腹いっぱい。:2008/12/04(木) 11:08:11
文字列化シロ
269名無しさん@お腹いっぱい。:2008/12/04(木) 11:13:46
なんで誰も10倍してfloorしろとアドバイスしてやらないんだ
270名無しさん@お腹いっぱい。:2008/12/04(木) 11:57:36
オーバーフローするかもしれんじゃん。
271名無しさん@お腹いっぱい。:2008/12/04(木) 14:18:50
そんなでかいdoubleなら、小数点以下は0だから、別チェックを前に入れるだけ
272名無しさん@お腹いっぱい。:2008/12/04(木) 20:04:28
>>269にツッコミを入れるなら floorでなくてIntだろ。
floorだと-2.0と-2.3が違う値になる。
だから不正解
それと実数は10倍してintだと化けることがあることを忘れるな。
整数部と小数部を分離して
整数部チェックの後
小数部の判定をすればいい
273名無しさん@お腹いっぱい。:2008/12/04(木) 20:09:49
そろそろ正しいコード書いて見せろよ
274名無しさん@お腹いっぱい。:2008/12/04(木) 22:02:12
珍しいスレが上がってると思ったら
なんだ、釣りか……
275名無しさん@お腹いっぱい。:2008/12/04(木) 22:10:07
んじゃ、俺が。

int compare(double a, double b)
{
char s1[512], s2[512], p;

snprintf(s1, sizeof(s1), "%f", a);
if ((p = strchr(s1, '.')) && p[1])
p[2] = 0;

snprintf(s2, sizeof(s2), "%f", b);
if ((p = strchr(s2, '.')) && p[1])
p[2] = 0;
return !strcmp(s1, s2);
}
276名無しさん@お腹いっぱい。:2008/12/05(金) 07:10:19
>>275
そんなことしなくても、
sprintf() で "%.1f" のフォーマットで文字列化すれば
最初から小数点以下第1位までで文字列カットできる。
277名無しさん@お腹いっぱい。:2008/12/05(金) 07:16:16
>>276
アフォか。"%.1f" だと丸められてしまうだろ。
278名無しさん@お腹いっぱい。:2008/12/05(金) 08:58:20
指摘される前になおしておこう。

int compare(double a, double b)
{
char s1[512], s2[512], *p;

snprintf(s1, sizeof(s1), "%f", a);
if ((p = strchr(s1, '.')) && p[1])
p[2] = 0;

snprintf(s2, sizeof(s2), "%f", b);
if ((p = strchr(s2, '.')) && p[1])
p[2] = 0;
return !strcmp(s1, s2);
}
279名無しさん@お腹いっぱい。:2008/12/05(金) 09:27:12
>>278
別の指摘するよ。

"%f" は、デフォで小数以下6桁精度に丸められる。("%.6f"と同じ)
なので、1.9999999 が、2.0 に丸められてしまう。
280名無しさん@お腹いっぱい。:2008/12/05(金) 10:44:50
ふむ、10倍するのも計算誤差で小数点第1位が変わる可能性があるな。
そもそも、外部表現から浮動小数点に変換した時点で誤差が発生するから、
BCD使えという結論か。
281名無しさん@お腹いっぱい。:2008/12/05(金) 11:20:41
丸め方式はFPUに指定コードを与えれば変えることができる。
そもそも精度を取り違えている。6桁の精度に対して10桁の演算精度があるなら
最下位2桁部分の丸めで精度が狂うことはない。
それは最初の質問者が「文字」で質問していたことでも分かる。

今回の場合無理に比較するのではなくて
二つの引き算した結果の符号をとって(絶対値化)
その値から0.1引いた値が正ならfalse
というのが一番無難。
282名無しさん@お腹いっぱい。:2008/12/05(金) 11:39:11
>>281
それ、>>263 と同じ。
263は、>>264-265 で否決。
283名無しさん@お腹いっぱい。:2008/12/05(金) 12:04:28
IEEE 754 として、10倍して整数部をとったんじゃだめな具体例を誰かプリーズ。
284名無しさん@お腹いっぱい。:2008/12/05(金) 13:03:09
>>283 仮数部フルにつかってたらだめだろ。
せめて整数化して小数部だけにしてからからという前提にシロ
285名無しさん@お腹いっぱい。:2008/12/05(金) 13:15:16
だから、具体例を。

double f = 0.1;
f = floor(f*10.0);
printf("%d\n",f==1.0);

=> 1

だよ。
286名無しさん@お腹いっぱい。:2008/12/05(金) 14:38:49
a = 300000000000000.3125;
b = 300000000000000.3750;
printf("%f %f %d\n", a, b, floor(a * 10) == floor(b * 10));
287名無しさん@お腹いっぱい。:2008/12/05(金) 17:36:14
なるほど。わかったよ。

正に限ると、
floor(a) == floor(b) && floor((a-floor(a))*10) == floor((b-floor(b))*10)
でおけ?
288258:2008/12/05(金) 23:03:41
ちなみに実数は0より小さいです。それで小数点2桁目を四捨五入したいです。
一応自分で作ったんですが

double x=0.15;
int a;
x+=0.05;
a=x*10;
x=(double)a/10.0;

これで大丈夫ですかね?
289258:2008/12/05(金) 23:04:35
↑間違えました。0でなく1より小さいです。
290名無しさん@お腹いっぱい。:2008/12/05(金) 23:05:41
>>267
お前らあほだな。


sprintfとstrncmpで解決だろ。
291名無しさん@お腹いっぱい。:2008/12/05(金) 23:24:56
覆面算をマクロで解きたいのですが教えてください
B、C、Dは0を除外

    C A B
 +)  B A C
----------------------
  D A B A
292名無しさん@お腹いっぱい。:2008/12/05(金) 23:29:42
マクロってm4あたり?
293名無しさん@お腹いっぱい。:2008/12/05(金) 23:31:33
>>292
エクセルのマクロです
294名無しさん@お腹いっぱい。:2008/12/05(金) 23:42:27
まったく板ちがいです。おひきとりください。
295名無しさん@お腹いっぱい。:2008/12/05(金) 23:44:00
失礼しました
296名無しさん@お腹いっぱい。:2008/12/06(土) 00:29:52
>>288
0より小さい実数は負なのだが…
中学数学をやり直せ。
297名無しさん@お腹いっぱい。:2008/12/06(土) 10:16:03
>>296
0より小くて負よりも大きい数oがあるとしたら?
298名無しさん@お腹いっぱい。:2008/12/06(土) 10:40:46
>>290
sprintf()する時に、"%f"の変換で勝手に四捨五入されるから不可。
299名無しさん@お腹いっぱい。:2008/12/06(土) 10:48:11
>>297
そんな実数があるのか?
300名無しさん@お腹いっぱい。:2008/12/06(土) 11:37:11
1.0以下なら
10倍説でいいけれど >>287はかっこが足りないだろ
それに正が前提と言うならfabsなりabsなりいれればいいじゃないか。

あとsprintf関連のつっこみは四捨五入(rint)じやなくてroundだろ。
もちょっと「道具の仕様」はしっておこうよ

double演算でも特定のライブラリーを使っていると高速化のため「singleモード」に設定していて
丸め誤差も出やすくなったりしていることもある。もっぱらWinに多いけど
逆にlong doubleにしておけば丸め精度はでにくい。

今回の場合しょっぱなの「見た目の数字」なんだからsprintfでの誤差は
最初に認識した文字列にも反映されているはず

1以下限定なら文字列の段階で整数として入力するか
文字列できるほうがいい

しかしネタとして考えるならばbit比較とかマニアックな関数とか
論理的に完璧なものとかそういうものの方がおもしろい。

というかUNIX板なんだからネタとして解を求めるならbc前提にするとか
仮数部のビット比較してみるとか特定ツールにしぼるか
FreeBSDでのextendedというかlong doubleでの精度アップとか
もうちょい下のほうにするとかにシチクリ
301名無しさん@お腹いっぱい。:2008/12/06(土) 11:47:11
使えるツール、足りないツールを作る。それがプログラミング
できない人は覚えたい。できる人でも穴はある。
UNIXはツールが多いようでつなぎも情報もすくないんだから
貴重なスレをあんまり算数の遊びみたいなんでスレを消費するない。
やるならせめてbcとかシェルとか局所的なものにしちくれ

302名無しさん@お腹いっぱい。:2008/12/06(土) 11:50:30
>>300
> >>287はかっこが足りないだろ

どこが?

> それに正が前提と言うならfabsなりabsなりいれればいいじゃないか。

単純に入れたら、正=負とかいう馬鹿な結果が出るから、めんどうだっただけ。
303名無しさん@お腹いっぱい。:2008/12/06(土) 12:27:28
貴重なスレって、長寿スレでも狙ってるのか? w
実数演算の話題はあまりないので結構楽しかったぞ。
304名無しさん@お腹いっぱい。:2008/12/06(土) 12:45:32
板違いと思っていたから参戦しなかったが、
その辺のことはアメリカ人が詳しくまとめてるよ。
やつらは実数部でドル、小数部でセントを表すことをよくやるから。
いろいろな言語にBCD演算を入れる提案がつきないのもそのため。
exact calculation floating point number あたりでググってくれ。
IEEE 754を仮定して近似計算で、BCD相当の結果を出すものがたくさんある。
中にはbit演算で正規化されたIEEE 754表現を扱うものまである。

現代のCOBOL、Javaのページにもこんなんがあるしな。(単純なものだけ)
http://java.sun.com/developer/JDCTechTips/2001/tt0807.html
305名無しさん@お腹いっぱい。:2008/12/06(土) 12:46:37
今のペースだと、Part1なのに10年以上あるスレってか
306名無しさん@お腹いっぱい。:2008/12/06(土) 12:51:59
>>304
それは、内部表現を固定小数というか、
全部セントに統一しなかったアメリカ人が馬鹿なだけのような
307名無しさん@お腹いっぱい。:2008/12/06(土) 12:58:41
金利計算とかあるからセントが最小単位じゃダメだろ。
308名無しさん@お腹いっぱい。:2008/12/06(土) 13:04:25
>>300
お前は roundのことは四捨五入と言わないのか?

あと、>>287 に括弧が足りないところなんてないし。

もうちょっと「日本語」と「道具の仕様」は知っておこうよ
309名無しさん@お腹いっぱい。:2008/12/06(土) 13:17:07
>>307
じゃあやっぱりBCD一択。
310名無しさん@お腹いっぱい。:2008/12/06(土) 13:19:59
>>300
おいおい、(s)printfの "%f" 変換は、round() じゃなくて rint() 方式だよ。
(確認済み)
311名無しさん@お腹いっぱい。:2008/12/06(土) 13:21:18
ジンバブエ・ドルも計算できる桁数無いといかんな。
312名無しさん@お腹いっぱい。:2008/12/06(土) 16:30:25
インストールしたプリンタの一覧ってどうやって
取得できるのですか?
313名無しさん@お腹いっぱい。:2008/12/07(日) 00:33:16
>>309
組み込みでBCDがないなら、
オペレーター多重化がないとプログラム書きづらいな。
314名無しさん@お腹いっぱい。:2008/12/07(日) 07:34:44
無知晒した >>300 の釈明まだぁ?
315名無しさん@お腹いっぱい。:2008/12/07(日) 10:39:11
sprintfで少数第2位まで出しておいて、strncmpで小数点1桁の文字列と比べれば丸めも減ったくれもどうでもいいだろ。
316名無しさん@お腹いっぱい。:2008/12/07(日) 11:47:04
>>315
だから、sprintf()で小数第2位まで出す際に、sprintf()自体で丸めが起きるんだよ。
printf("%.2f", 1.099) → 1.10 と表示

あと、×少数 ○小数な、日本語くらい正確に使おうよ。
317名無しさん@お腹いっぱい。:2008/12/07(日) 11:51:42
>>315
sprintfで小数第2位まで出す際に、
小数第3位が丸められるから、
その結果、小数第1位に繰り上がってしまうことがある。

よって、>>315 の言ってることは不正解。
318名無しさん@お腹いっぱい。:2008/12/07(日) 12:41:31
doubleの有効桁は15~16なので>>278を改造して17桁とれば良い。

int compare(double a, double b)
{
char s1[512], s2[512], *p;

snprintf(s1, sizeof(s1), "%.17f", a);
if ((p = strchr(s1, '.')) && p[1])
p[2] = 0;

snprintf(s2, sizeof(s2), "%.17f", b);
if ((p = strchr(s2, '.')) && p[1])
p[2] = 0;
return !strcmp(s1, s2);
}
319名無しさん@お腹いっぱい。:2008/12/07(日) 12:46:13
>>318
…ネタだよな?
320名無しさん@お腹いっぱい。:2008/12/07(日) 22:48:58
>>317
じゃあ4位まで出すか。
321名無しさん@お腹いっぱい。:2008/12/07(日) 23:05:57
>>320
sprintfで小数第4位まで出す際に、
小数第5位が丸められるから、
その結果、小数第1位に繰り上がってしまうことがある。

よって、>>320 の言ってることは不正解。
322名無しさん@お腹いっぱい。:2008/12/07(日) 23:51:11
小数点指定なしでいいな。
323名無しさん@お腹いっぱい。:2008/12/08(月) 16:56:18
>>303 UNIX関連のプログラミングの情報源として密度が薄まる
別にスレが長寿になる必要はない。

>>302 のは結果として役立たずなわけだから「〜れば」とかいうのはいいわけでしかない。
できたような気になっているだけだ。

>>308 roundが四捨五入なんてプログラミング言語はない。
知らないなら覚えろ。常識
四捨五入は意図的にコンパイラが切り捨てコード使ってで作るものだ。

カッコなしで複数の条件列挙は
は言語によりなければエラーになるものがある。
イコールでの条件列挙は適切とは言えない。

速いからdoubleなんだしdoubleのデータの問題で
「初めからBCDで」とか論外
324名無しさん@お腹いっぱい。:2008/12/08(月) 17:16:43
>>323
roundは普通の意味での四捨五入。(2進だから0捨1入)
rintは四捨五入ではなく、偶数への丸め。常識。知らないなら覚えろ。
おまえ、sprintfの件で、roundとrintを混同して指摘してただろ。>>300 で。


> カッコなしで複数の条件列挙は
> は言語によりなければエラーになるものがある。

「言語により」って、最初から C言語の話してるんだろ。
演算子の優先順位も知らなかったくせに、見苦しい言い訳するなw


結論:
>>300 = >>323 は自意識過剰のものすごい知ったか。

お前の言葉をそのまま返す、
「もうちょっと『道具の仕様』は知っておこうよ」
325名無しさん@お腹いっぱい。:2008/12/08(月) 17:46:18
「〜れば」とか「初めからBCDで」とか「」使って引用してるふりしながら、
どれも正確じゃないんだよな。
自分独自の解釈を随所におりまぜてそう。
326名無しさん@お腹いっぱい。:2008/12/08(月) 20:12:00
はいはい逆にしてましたよ。間違えてました。RINTとROUND
恥ずかしくも「正しい解説のメモ」とかアップしているていたらく

どうせアタシャ低レベルなアセンブラプログラマーですよ。
でも今回いつCが前提になったんですか?
JavaScriptとかPerlもありだとみてたんですがね、

独自解釈でもなんでもちゃんと動くものを仕様書こみでつくれるからいいんです。

でも今回の件は
long doubleにキャストして
i386 FreeBSDに関して言えば
fpsetprec(FP_PE)
を使って10倍して差をとり整数化すればいいんですよね、
仮数部が内部で64bitになるので丸め誤差でません。

最初から10byteモードっていってましたよね。
理解できなかった?

どうして型キャストとかできないんですか?
floorとかsprintとか無駄過ぎ

机上の論議過ぎて実用性ゼロ

その点を言っているんです。
道具としてのUNIXでなくて
UNIXのためのプログラミングノーハウの話をしないなら
板違いだっていっているんだ。
327名無しさん@お腹いっぱい。:2008/12/08(月) 20:26:33
>>326
> でも今回いつCが前提になったんですか?

>>258の1行目
328名無しさん@お腹いっぱい。:2008/12/08(月) 20:40:08
今回いつ、「実数」がdouble以下で、かつ、
long double が double より精度高いプラットフォームが前提になったんですか?
329名無しさん@お腹いっぱい。:2008/12/08(月) 20:41:01
こういうバカがチームにいると大変だな。お前、向いてない転職しろ。
330名無しさん@お腹いっぱい。:2008/12/08(月) 21:17:38
たしか、JavaScriptもPerlも&&より==の方が強いよなぁ。
しかもこいつらってlong double的なの明示的に使えたっけ?
331名無しさん@お腹いっぱい。:2008/12/08(月) 21:35:22
使えないな。
しかも、FPU使うコードなんて今時見ないぞ。
332名無しさん@お腹いっぱい。:2008/12/08(月) 23:37:10
>>329
普通はこんなしょうもない問題にぶち当たらないようにコーディングするもんだ。

お前の卓越した知能wがチームの効率下げてるんじゃね?
333名無しさん@お腹いっぱい。:2008/12/08(月) 23:55:42
自信満々で「仕様書込みで動くものをつくれるからいい」とか豪語しながら
仕様を逆に覚えてヘッポコなバグを作りこむクズはいらない。
334名無しさん@お腹いっぱい。:2008/12/09(火) 00:00:34
>>332
つっこみどころはそこだけなんかよ
技術的なことにつっこんでくれよ
335名無しさん@お腹いっぱい。:2008/12/09(火) 11:02:08
>>326
> 10倍して差をとり整数化すればいいんですよね、

ここ意味わからんかった。
これじゃ差が0.1以下であるという判定しかできないんじゃないの?
やっぱりfloor的なものがどこかにいるんでは?
336名無しさん@お腹いっぱい。:2008/12/09(火) 13:32:00
彼の完璧な仕様に文句をつけてはいけない。
337名無しさん@お腹いっぱい。:2009/01/14(水) 17:04:18
この問題なんですが、解答あってるでしょうか?

msgbox "変数aの値は" & a & " , 変数bの値は" & b

この文を先頭から2つ目の&までとその後の部分に分け、正しく2行で記述しなさい。
また、変数a,bの値がそれぞれ10,20である場合に、実行したときに表示される
メッセージボックスの中の記述内容を書きなさい。

解答。

msgbox"変数aの値は" & a &
msgbox"変数bの値は" &b

変数aの値は  10
変数bの値は  20

338名無しさん@お腹いっぱい。:2009/01/14(水) 17:31:14
UNIX無関係なので板違い
339名無しさん@お腹いっぱい。:2009/01/14(水) 22:36:54
金をdoubeで扱う勘定系プロジェクトに配属になったけど
ソッコーで抜けさせてもらったことがある
「おかしい計算が合わない…」とかいうつぶやきが遠くで聞こえてるうちに逃げてきた
340名無しさん@お腹いっぱい。:2009/01/14(水) 22:39:50
あはははははは
341名無しさん@お腹いっぱい。:2009/01/14(水) 23:40:05
>>326
> 仮数部が内部で64bitになるので丸め誤差でません。

何も理解してないw
342名無しさん@お腹いっぱい。:2009/01/14(水) 23:53:11
仮数部を増やす方向にキャストしてから10倍すれば問題起きないよ。
それができるという前提がなかったからあの話がおかしかっただけで。

それよりおまえは1ヶ月以上前の話につっこんでも意味がないことを理解していない。
343名無しさん@お腹いっぱい。:2009/01/17(土) 12:00:35
>>342 プログラミングという机上の空論で遊んでいるやつらに
現実的なプログラミングのノーハウをちらみさせても意味ない事に気づけ

ダメ系の算数野郎さんはとりあえずgccでπでも1万桁求めるにはどうしたらいいかとか
まっとうなプログラミングの道でもしめせばいいよ。
UNIXの場合必要なライブラリーはデスクトップを入れるとついてきたりしている。
あえて名称はかかんけどね、

だいたい元々の話がリアルな精度ではなくて「10進化された文字列」での話なんだから二進演算の精度うんぬんなんて実は関係ない。
どっちかというと「.」がらみの正規表現のプログラミングの方が正解で
それは最初に「文字列で」と書いているレスでおわっているわけだ。
344名無しさん@お腹いっぱい。:2009/01/30(金) 14:26:14
コンパイル結果のファイル名ににタイムスタンプをつけたくて
Makefile中に以下のようにして
TIMESTAMP=`ls -l --time-style=long-iso $(OBJNAME).hex | awk '{print $6}' | sed 's/-//g'`
時間をとりだしているのですが、結果的にTIMESTAMPには
TIMESTAMP=rwrr 1 user user 601847 20090130 14:19 objname.hex
という値が格納されてしまいます。
実際にシェルから実行したら
20090130
という結果が表示されるのですが、なぜでしょうか?
ちなみに
TIMESTAMP=$(ls -l --time-style=long-iso $(OBJNAME).hex | awk '{print $6}' | sed 's/-//g')
でも結果は同じです。
アドバイスよろしくお願いします。
345名無しさん@お腹いっぱい。:2009/01/30(金) 14:28:13
失礼しました。
TIMESTAMP=$(ls -l --time-style=long-iso $(OBJNAME).hex | awk '{print $6}' | sed 's/-//g')
ではなく
TIMESTAMP=$(shell ls -l --time-style=long-iso $(OBJNAME).hex | awk '{print $6}' | sed 's/-//g')
でした。
346名無しさん@お腹いっぱい。:2009/01/30(金) 14:42:44
TIMESTAMP=`ls -l --time-style=long-iso $(OBJNAME).hex | awk '{print $6}' | sed 's/-//g'`
awkのprintの引数を$$6にしたらいけました。
何故でしょうか。
よく分かりません。
347名無しさん@お腹いっぱい。:2009/01/30(金) 15:10:55
Makefile中では$に特別な意味があるから。
348名無しさん@お腹いっぱい。:2009/01/31(土) 00:25:38
makeの変数展開

shの変数展開

awkの変数展開
349名無しさん@お腹いっぱい。:2009/02/05(木) 21:48:12
ポインタじゃなくて、structの実体渡しで呼び出す関数を、
structの即値の引数で呼び出すことってできませんか?

どういうことかというと、

struct hoge {
int hoge_a;
char *hoge_b;
};

void func(struct hoge);

と宣言されてる時、

struct hoge hh = {123, "boke"};
func(hh);

で呼び出すと、呼び出しのためだけにstruct hoge hhを宣言するのが無駄なので、

func({123, "boke"});
みたいな形で、引数を即値にして一発で呼び出したいんですが。
350名無しさん@お腹いっぱい。:2009/02/05(木) 22:22:28
>>349
たぶんC99限定だけど、複合リテラル
func((struct hoge){123, "boke"});
351名無しさん@お腹いっぱい。:2009/02/05(木) 22:36:02
>>350
ありがとうございます。(struct hoge)を頭につけるだけで良かったんですね。
ちなみに、実体渡しじゃなくて、普通のポインタ渡しの場合でも、

func(&(struct hoge){123, "boke"});
で行けることを確認しました。
352名無しさん@お腹いっぱい。:2009/02/06(金) 08:18:47
えっと自分でなんちゃってダウンローダを作っていて、いくつかの Unix 上で
(いまんとこ Linux と Mac OS X)で同じコードを使いたいと思ってます。
で、整数型の移植性がちょっと気になってます。

4GB以上のファイルを扱うために32bitより大きい整数でファイルの大きさを表現しない
といけないのですが、これってどんな型を使うのが正解ですかね?
必要なのは 1) 4GB以上のサイズを表現可能(http とかにファイルサイズを埋め込む)
2) printfとかで簡単に表示可能 です。

とりあえず off_t かな? と思ったんですが、ビット数とかよくわからないし、printfの指定も
よくわからないし、もしかしてとりあず long long にでもした方が楽なのかなあ、とか...
353名無しさん@お腹いっぱい。:2009/02/06(金) 08:31:56
もちろんoff_t
http://www.suse.de/~aj/linux_lfs.html

これも参考になる。
http://jp.sun.com/practice/software/solaris/jp/wp/Sol_file/index.html

Macは知らない。
354名無しさん@お腹いっぱい。:2009/02/06(金) 09:05:26
便乗質問ですが、
off_t を printf する時、書式指定はどうすればいいの?
off_tは、64bitの場合も32bitの場合もあって、OSによって違うけど、
ソースは共通にしたいという場合の話です。
355名無しさん@お腹いっぱい。:2009/02/06(金) 09:36:01
>>354
書式は固定して、32bitの場合でも(long long)にキャストして表示。
356名無しさん@お腹いっぱい。:2009/02/06(金) 09:42:02
357名無しさん@お腹いっぱい。:2009/02/27(金) 18:41:03
はて? 何が悪い?

$ cat file1.c
char s[] = "hoge\n";

$ cat file2.c
extern char *s;
int main(){printf(s);}

$ gcc file1.c file2.c

$ ./a.out
Segmentation fault
358名無しさん@お腹いっぱい。:2009/02/27(金) 18:59:12
あたりまえだ。

$ cat file2.c
extern char s[];
int main(){printf(s);}
359名無しさん@お腹いっぱい。:2009/02/27(金) 19:00:51
file1 では、s という名前の箱には、直接 char[] が入っている。
file2 では、s という名前の箱には、char を指すポインタが入っている、と宣言している。

ポインタと配列は混同してはいけない。
「エキスパートCプログラミング」の4章を嫁
360名無しさん@お腹いっぱい。:2009/02/27(金) 19:00:54
>>357
C FAQ一読しとけ
http://www.kouno.jp/home/c_faq/
361名無しさん@お腹いっぱい。:2009/02/27(金) 19:06:18
じゃあなんでこれは動くんだよ

func(char *s){printf(s);}
int main(){char s[] = "hoge\n"; func(s);}
362名無しさん@お腹いっぱい。:2009/02/27(金) 19:08:05
>>357
main()で、int宣言してるのに値を帰してないからじゃないの?
未定義の値が帰ってSegmentation faulするのでは?
363名無しさん@お腹いっぱい。:2009/02/27(金) 19:26:00
>>361
いいから>>360を読め。
>>362
釣れるかい?
364名無しさん@お腹いっぱい。:2009/02/27(金) 19:27:42
ていうか>>360内の
http://www.kouno.jp/home/c_faq/c6.html#1
一番最初に出てる。
365名無しさん@お腹いっぱい。:2009/02/27(金) 19:40:51
>>362
return(1)を足したら動きました。返り値は無視できませんね。勉強になりました。
366名無しさん@お腹いっぱい。:2009/02/27(金) 20:05:19
配列の値がアドレスなのがいけないんだろう。
だからポインタと同じに見える。
367名無しさん@お腹いっぱい。:2009/02/27(金) 20:07:58
× 配列の値 (それはchar)
○ 配列名の値
368名無しさん@お腹いっぱい。:2009/02/27(金) 21:29:31
369名無しさん@お腹いっぱい。:2009/02/28(土) 01:27:00
>>368
おお、恐ろしい。恐ろしい。
370名無しさん@お腹いっぱい。:2009/02/28(土) 12:17:44
ダメ初心者が初心者に教えてるのか…
> int main( void ) {
> int *n;
> *n = 5; /* ポインタ変数nに値5を代入 */
371名無しさん@お腹いっぱい。:2009/02/28(土) 13:31:28
コード例だけ見ると typoっぽいけど、地の説明文からして
どうもポインタを勘違いして理解してるっぽい。
この沖林正紀って人は、なんでこの程度の知識で原稿書いたんだろう
初心者レベルの駄文より、嘘を教える方が性質が悪い。
372名無しさん@お腹いっぱい。:2009/02/28(土) 13:50:40
>>370は初心者が陥りやすい間違いなので、ポインタの解説記事ならば間違えてはいけない個所。

記事の題名が「C/C++のポインタの機能--参照渡しのような処理」なので、JavaやLLから入って
来た人なのだろう。参照渡しでは初期化は不要だからね。

傍証
http://bookweb.kinokuniya.co.jp/htm/%89%AB%97懼ィ?%B3%8BI/list.html
373名無しさん@お腹いっぱい。:2009/02/28(土) 14:27:55
参照渡しでも値渡しでも、callee は初期化不要では?
374名無しさん@お腹いっぱい。:2009/02/28(土) 17:53:21
>>373
372は、参照渡しということはcalleeの話だから初期化は不要と言ってるのであって、
参照渡し以外で呼び出されたcalleeが初期化が必要とは一言も言ってないよ。
375名無しさん@お腹いっぱい。:2009/02/28(土) 19:28:41
glib-2.0のgstringってCで使う場合使い勝手とか負荷とかどんなもんなんでしょう
ポインタ配列とかリストとかもあるんなら使いたいのだけれど
仕様が微妙なのでばきばき使っている人の使用感が聞きたい
376名無しさん@お腹いっぱい。:2009/03/01(日) 06:43:15
以下をコンパイルしたのですが何も表示されません。
どうしてですか?

#include <iostream>

class H{public:H(){std::cout<<"hoge\n";}};

int main(){H h();}
377名無しさん@お腹いっぱい。:2009/03/01(日) 08:19:51
関数の宣言だから
378名無しさん@お腹いっぱい。:2009/03/01(日) 08:55:08
>>376
iostream.h じゃないの?
ヘッダーの拡張子 .h がなくて正常コンパイルできてないに1票。
379名無しさん@お腹いっぱい。:2009/03/01(日) 09:07:01
>>376
"\n" なんて使えたっけ? << std::endl でしょ?
改行が出力されず、行バッファがフラッシュされなかったから
表示されていないように思っただけでは?
380名無しさん@お腹いっぱい。:2009/03/01(日) 09:13:46
>>378-379
だから、「関数の宣言だ」と言ってるだろ。
int main() {
 int printf(...);
}
と書いてあるのと同じだよ。
381名無しさん@お腹いっぱい。:2009/03/01(日) 09:15:46
>>380
もちろん、main()関数は宣言してます。そういう問題じゃないでしょw
382名無しさん@お腹いっぱい。:2009/03/01(日) 09:34:33
おまえ、本当にバカだな。
printf()関数の宣言をしているのが見えないのか。

ホント、初心者の知ったかぶりって迷惑だよな。
383名無しさん@お腹いっぱい。:2009/03/01(日) 09:36:10
>>382
ワーニングを無視すれば printf() は宣言なしでもつかえますよ。
あと、質問はprintf()じゃないしw
384名無しさん@お腹いっぱい。:2009/03/01(日) 09:36:34
Hを返す引数の無い関数h()をmainの内部で宣言してる、と言われてるのに
知ったか初心者の癖に理解力ゼロだから困る。
385376:2009/03/01(日) 09:38:23
>>378-379
.h付けて、endlに直したら表示が出ました。
ありがとうございました。
386名無しさん@お腹いっぱい。:2009/03/01(日) 09:38:31
頭悪すぎだね。
387名無しさん@お腹いっぱい。:2009/03/01(日) 09:41:43
>>383
あなたC++って言語、知ってる?
388名無しさん@お腹いっぱい。:2009/03/01(日) 09:44:01
どこぞの独自拡張拡大解釈コンパイラしか知りません
389名無しさん@お腹いっぱい。:2009/03/01(日) 09:47:40
>>387
printf()が出た時点で C++の可能性はゼロでしょ。
C++ではprintf()の使用は禁止だし。
390名無しさん@お腹いっぱい。:2009/03/01(日) 09:59:28
ネタだよな?
まさかとは思うけど、本気で言ってるんじゃないよな?

これが初心者?
それとも老害?
391名無しさん@お腹いっぱい。:2009/03/01(日) 10:00:33
>>389
幾らなんでも、それじゃ釣れないだろ。
392名無しさん@お腹いっぱい。:2009/03/01(日) 10:04:56
main()がint型でありながら戻り値が省略可能な時点で、C++確定ですけど。
393名無しさん@お腹いっぱい。:2009/03/01(日) 10:09:06
>>392
つC99
394名無しさん@お腹いっぱい。:2009/03/01(日) 10:13:41
>>392
main()に限らず、何のint関数でも戻り値は省略可能。
ワーニングを無視するなら。
395名無しさん@お腹いっぱい。:2009/03/01(日) 10:21:07
>>394
えーとね、main()は警告なしで省略可能なんだよ。
言語仕様として決まってるから。

もちろんあなたはは知らなかったでしょうけどね。
あ、もちろんprintf()も言語(のライブラリ)に含まれてますよ。
当然ながら、宣言なしで使うことは出来ませんがね。
396名無しさん@お腹いっぱい。:2009/03/01(日) 10:22:48
>>395
つC89
397名無しさん@お腹いっぱい。:2009/03/01(日) 10:23:30
警告をワーニングって言うのもちょっと恥ずかしい。
別にウォーニングと言えってことじゃないけどね。
単に「警告」で済むんだから。

ま、恥はいくつかいても恥で一緒だけどね。
398名無しさん@お腹いっぱい。:2009/03/01(日) 10:28:04
>>396
つ 話の流れ
つ 空気

>>394
別にintに限りませんけど?
C(でかつ警告を無視する)なら。
399名無しさん@お腹いっぱい。:2009/03/01(日) 10:32:21
そもそも>>376でclassが使われていて明らかにC++の話なのに
何故か「printfが使われてるからC++の可能性はゼロ」となって
Cでの話にすり替えられちゃってるんだよな。
不思議。
400名無しさん@お腹いっぱい。:2009/03/01(日) 10:38:02
>>395
printf()は宣言なしで使えるよ。
実際にコンパイルしてみればわかるよ。
即席で書き捨てソースを書く時によくやる。

宣言なしでは使えないのはputs()とかputchar()とか。
401名無しさん@お腹いっぱい。:2009/03/01(日) 10:44:48
>>395
仕様としてそう決まっていようが、現実はそうじゃない。

$ echo 'main(){}' | gcc -xc -; ./a.out; echo $?
148
$ echo 'main(){}' | gcc -xc -; ./a.out; echo $?
84
$ echo 'main(){}' | gcc -xc -; ./a.out; echo $?
101

毎回未定義。
402名無しさん@お腹いっぱい。:2009/03/01(日) 10:44:57
>>400
つかえましたよ。
int main()
{
puts("xxx");
}
つーか、linkとごっちゃになってね。
403名無しさん@お腹いっぱい。:2009/03/01(日) 10:49:17
>>402
>>395 に言ってくれ。
404名無しさん@お腹いっぱい。:2009/03/01(日) 10:51:45
>>401
↓これじゃない
int main()

return 0; の話だろ

↓こっちは省略禁止
int main()


405400:2009/03/01(日) 10:57:24
ああ、ごめん。
>>395 は論外としてputs云々が気になったので....
でだ。

ばかも ん。
昔のcompilerはなぁ、昔のcompilerはなぁ、
まともなwarning吐かないので、lint使ってたんだぞぉ。
406名無しさん@お腹いっぱい。:2009/03/01(日) 10:57:31
>>400
だから、話の流れ的に「C++では」なの(>>395>>394>>392)。
C++では「宣言の無い関数は呼び出せない」の。
某コンパイラを除いてね。
407名無しさん@お腹いっぱい。:2009/03/01(日) 11:00:40
>>401
あなたが省略してるのは「戻り値」ではなく「戻り値の型」。
話の流れとは全然関係ないから。

CでもC++でも
f() { return 0; }
という「戻り値の型の省略」は完全に合法ですから。
もちろんintと仮定されます。
そして、何もreturnしない場合、まっとうなコンパイラなら警告が出ます。
408名無しさん@お腹いっぱい。:2009/03/01(日) 11:11:43
>>404 >>407
int付けても同じだよw そこが論点じゃないしww

$ echo 'int main(){}' | gcc -xc -; ./a.out; echo $?
41
$ echo 'int main(){}' | gcc -xc -; ./a.out; echo $?
116
$ echo 'int main(){}' | gcc -xc -; ./a.out; echo $?
32

毎回未定義。
409名無しさん@お腹いっぱい。:2009/03/01(日) 11:12:13
>>395がCの話だと思ってる人って
わざわざ「printfが言語仕様に含まれる」と触れてる事を疑問に思わないのかな。
少し前に>>389があるのに。
410名無しさん@お腹いっぱい。:2009/03/01(日) 11:19:51
>>408
>>406>>393を無視して、何故わざわざ「省略可能なことが言語仕様で保証されていないC89」でコンパイルするわけ?
411名無しさん@お腹いっぱい。:2009/03/01(日) 11:25:23
「C++では言語仕様で保証されている、だからC++のコードだ」という話(それが妥当かはともかく)なのに
わざわざ「言語仕様で保証されてない言語(C89)」での結果を何度も貼りつけて何がしたいのかな。
412名無しさん@お腹いっぱい。:2009/03/01(日) 11:26:39
あ、違った。
「言語仕様で「不定」となることが決まっている言語」だな。
413名無しさん@お腹いっぱい。:2009/03/01(日) 11:30:14
>>404 の書き方では、「intさえ付ければ戻り値は固定される」と
言ってるように見える。

>>408 はそれに対する反論かと。
414名無しさん@お腹いっぱい。:2009/03/01(日) 11:32:03
>>404
で言ってるのは
>>401に対して仕様で省略が認められてるのはreturnの方だけだよということだろう

415名無しさん@お腹いっぱい。:2009/03/01(日) 11:33:39
>>414
でも結局省略したら値が不定んなったんだから省略できないじゃんw
416名無しさん@お腹いっぱい。:2009/03/01(日) 11:36:35
>>415
だからC99規格対応なら、省略できて
C89規格ではそうではないって話だろ
417名無しさん@お腹いっぱい。:2009/03/01(日) 11:39:25
>>416
結局省略できないじゃんw
418名無しさん@お腹いっぱい。:2009/03/01(日) 11:45:48
省略できる言語の話をしてるんだろ?
何で別の言語の話をする?
419名無しさん@お腹いっぱい。:2009/03/01(日) 11:48:28
省略できるって主張してる奴は、
「仕様上は省略できるはずです」って言って、
不定値を返すままのソフトを納品すればいいさ。
420名無しさん@お腹いっぱい。:2009/03/01(日) 11:56:21
>>419
実装がとにかく正しいとか言って、コンパイラ依存のプログラムでも作ってろ
421名無しさん@お腹いっぱい。:2009/03/01(日) 11:59:15
だったらせめて -xc をやめて
-xc++ や -std=c99 をつけた結果を貼れよ。
C89で保証されてないことなんか、知らない奴殆ど居ないんだから。

>>376からの流れなのに>>380がC++の話じゃないと思い込むバカは居るかもしれないけど。
422名無しさん@お腹いっぱい。:2009/03/01(日) 12:02:08
>>419
どこに、「C89で省略できる」って主張してる奴がいる?


あ、いるのかな。
戻り値が保証されてるとは誰も書いていない、ってだけで。
423名無しさん@お腹いっぱい。:2009/03/01(日) 12:12:12
×戻り値が保証されてるとは誰も書いていない
○戻り値が保証されると脳内で勝手に決め付けて特定の実装の結果を張り続けるバカもいる
424名無しさん@お腹いっぱい。:2009/03/02(月) 10:17:57
linuxだとsearch.hのハッシュがやけに遅いのでGhashTableのが性能いらしいんだけど
FreeBSDの場合ハッシュの実装をするのにGhashTableとsearch.hと
どっちのがおすすめ?
425名無しさん@お腹いっぱい。:2009/03/02(月) 12:38:43
ほとんどの人には不要だと思うけど、一応張っとく。
C++とC98は、main関数は暗黙のreturn 0。C89とその前はそうではなかった。

$ echo 'int main(){}' | gcc -std=c99 -xc - && ./a.out; echo $?
0
$ echo 'main(){}' | gcc -std=c99 -xc - && ./a.out; echo $?
<stdin>:1: 警告: return type defaults to ‘int’
0

$ echo 'int main(){}' | gcc -Wall -std=c++98 -xc++ - && ./a.out; echo $?
0
$ echo 'main(){}' | gcc -Wall -std=c++98 -xc++ - && ./a.out; echo $?
<stdin>:1: 警告: ISO C++ forbids declaration of ‘main’ with no type
0 # 禁止されてるけどエラーにならない

$ echo 'int main(){}' | gcc -Wall -std=c89 -xc - && ./a.out; echo $?
<stdin>: In function ‘main’:
<stdin>:1: 警告: control reaches end of non-void function
196
426名無しさん@お腹いっぱい。:2009/03/02(月) 12:48:53
>>424
基本どっちもクヌース本のアルゴリズム。
427名無しさん@お腹いっぱい。:2009/03/02(月) 12:52:43
C98という新規格まで登場したか。
428名無しさん@お腹いっぱい。:2009/03/02(月) 13:32:40
>>425
おまえがC++とCごっちゃになってどうする
429名無しさん@お腹いっぱい。:2009/03/03(火) 09:27:07
Cのコード中でディレクトリの内容を比較するのはどうしたらいいか悩んでいます。

動作的には "diff -r dirA dirB" を実行した場合の結果と同じ処理をしたいのですが、
毎回 diff コマンドを呼ぶオーバーヘッドを避け、出来ればCのコードで実現したいと
思ってます。どうすべきでしょう?

1. UNIX の API にこの目的にふさわしいものがあり(何という名前?)、それを使う
2. 違うファイルかディレクトリに遭遇するまで地道に両者のディレクトリを辿るような
コードを自分で書く
3. diff のソースコードを入手し、自分のプログラムにリンクして使う
4. その他
430名無しさん@お腹いっぱい。:2009/03/03(火) 09:57:03
お前の書くコードがdiffよりオーバーヘッドが少ないわけがない。
431名無しさん@お腹いっぱい。:2009/03/03(火) 10:09:27
>>429
普通のdiffコマンドは高速でないアルゴリズム( O(ND) )を使ってるから、
gitとかpythonのライブラリに使われてるやつのが速い
ってわけで、速度を追い求めるなら差分取得のアルゴリズムについて調べてがんばれ
432名無しさん@お腹いっぱい。:2009/03/03(火) 10:12:30
いや高速でないってこたないんですよ、それより速いのがあるだけで
433429:2009/03/03(火) 10:29:38
あー書き方が悪かったかな。
もし diff ということで LCS とかそこらへんに脊髄反射されてたらごめんなさい。
自分が知りたいのは dirA と dirB の内容が違うか同じかだけなんです。

この場合むしろディレクトリの階層に効率よくアクセスできることが重要なんじゃないかと
思ったんですが、違います? fts とかですかね?
それにファイルを処理するようなソフトならありがちな処理のような気がするので、
どこかに適切なコードのサンプルがあればと思って...
434名無しさん@お腹いっぱい。:2009/03/03(火) 10:37:16
>>433
> 自分が知りたいのは dirA と dirB の内容が違うか同じかだけなんです。

内容の比較は必要か
タイムスタンプの比較だけでいいか
同じファイル名が存在するだけでいいのか

rsync --dry-runの出力結果を使うとか。
435429:2009/03/03(火) 10:50:52
>>434
「同じ」とはディレクトリ構造が同じで、その中に存在するファイルの名前&内容が同じ
という積もりです。
タイムスタンプは比較しません。

>rsync --dry-runの出力結果を使うとか。

はい、確かにそれも速そうですが、自分のプログラムだと比較的浅いディレクトリに
対してそれを何度も呼ぶことになりそうなので、C の何かの API で書いた方がいいのか
なあと。

ある意味 rsync みたいなプログラムなんですが、syncするときにいろいろカスタムな
ロジックを入れたいので、コードを書いているといいますか....
436名無しさん@お腹いっぱい。:2009/03/03(火) 11:32:23
内容比較がcmp -sレベルでいいなら、
readdir/lstatで自分で書けばいいんじゃない?
質問せずに書けば、今頃書き終わっている頃かと。
437名無しさん@お腹いっぱい。:2009/03/03(火) 13:31:30
ファイルとディレクトリの equality は適当に定義出来
るとして、↓みたいになるかな。

for (File src = each of srcDir) {
        File dst = dstDir.Find(src);
        if (dst == null) {
        // src にしかない
        } else if (src != dst) {
        // 違う
        }
}
for (File dst = rest of dstDir) {
        // dst にしかない
}

each of …は都度 readdir して、Find は保持してるプー
ルから探して、無ければ見つかるまで readdir、してプー
ルに入れていく感じ。見つかったらプールから削除して
おいて rest of …でそれを得る。
438名無しさん@お腹いっぱい。:2009/03/03(火) 14:07:34
両方コレクションにいれて、ソートして、
先頭二つ、計四つを比較しながら取り出せばいい。
四つになるのはどちらが欠けているかわからないから。
どれも違う場合、四つの中で小さいの二つを捨てればいい。

AB
AB

AB
BC

BC
AB
-
AB
CD

AC
BD
439名無しさん@お腹いっぱい。:2009/03/03(火) 14:16:00
>>438
ファイル/ディレクトリの equality と同様に順序付け
も定義出来るなら(ソートするからには出来るはずだ)、
先読みする必要はない。マージソートの要領だ。
440名無しさん@お腹いっぱい。:2009/03/12(木) 19:41:22
dirp=opendir(".");
printf("1 :%d;\n",telldir(dirp));
printf("2 :%d;\n",telldir(dirp));
printf("3 :%d;\n",telldir(dirp));
closedir(dirp);
とすると返す値は1,2,3とどんどんインクリメントしていくだけだし
seekdirは無反応rewinddirは巻き戻すばかりかtelldirをひとつ進めるだけ
readdirとかはちゃんとできているんだけれど
何か呪文とかいるのかダメダメな関数なのか情報please
441名無しさん@お腹いっぱい。:2009/03/12(木) 19:51:28
>>440 OSはFreeBSDです。
442名無しさん@お腹いっぱい。:2009/03/12(木) 20:15:55
たぶん実装がおかしいんだろう。MacOS Xも同様らしい。
ttp://idm.s9.xrea.com/ratio/2007/09/10/000673.html

dirent読むのにtelldirやseekdir使うようなやつはいないから放置されてると想像。
443名無しさん@お腹いっぱい。:2009/03/12(木) 20:24:17
追加。このへん関係あるかも。
ttp://www.freebsd.org/cgi/query-pr.cgi?pr=bin/121656
444名無しさん@お腹いっぱい。:2009/03/12(木) 20:32:49
>>440です。rewinddirの記述は間違っていました。
rewinddirとreaddirだけが使えます。

で調べたらscandirというのがありました。
mallocしてくれて配列に入れて関数指定すればsortもしてくれるようなので
コールバックもsort関数に入れます。
>>435もscandir+lstatでいいのでは?

しかしひどすぎるなtelldir+seekdir
ファイルの多いディレクトリーでちょろちょろよむもん作りたかったんだけど
一気読みが基本ですか?
445名無しさん@お腹いっぱい。:2009/03/12(木) 20:38:50
とりあえずコールバック抜きのアルファソートやってみた。
c = scandir(dirname, &namelist, NULL, alphasort);
if(c == -1) {
puts("not opendir");
return(1);
}
printf ("%d\n", c);
for (i = 0; i < c; ++i) {
printf ("%s\n", namelist[i]->d_name);
free(namelist[i]);
}
free(namelist);

opendirの苦労は一体....orz
446名無しさん@お腹いっぱい。:2009/03/12(木) 20:40:17
>>435

opendir -> ディレクトリをファイルとして開く
readdir -> ディレクトリのエントリを一つ読み込む(ポインタ一個進む)
seekdir -> ディレクトリのエントリを x 番目にセットする
telldir -> 今いるエントリ位置を報告する

を組み合わせて, 双方のエントリを比較して
1. 対象物の inode が同じなら処理スキップ
2. 対象物が ディレクトリなら, 自分自身を再帰的に呼び出す
3. 対象物がファイルなら中身を比較
すればええんちゃう?
447名無しさん@お腹いっぱい。:2009/03/12(木) 20:46:16
既に読んだエントリに戻って読み直すシチュエーションがわからん。

仮にtelldir/seekdirの動作がまともでも、
いちいち物理的にディレクトリ読みに行くような実装だったりしたら、
遅いし最中に誰かがいじらんとも限らんし、いいことなしでは?
キャッシュしてるんだとすれば一気読みと何も変わらんし。

というわけで、telldir/seekdirは価値なしなんじゃないかと。
448名無しさん@お腹いっぱい。:2009/03/12(木) 21:00:32
>>447
再帰して必要物がなくって、バックトラックするときに
変わってしまった状態を元に戻すために必要

recur_dir(...
here = telldir(...
if (このエントリが dir && 比較対象と違う)
if (recur_dir(...) == succeed)
return なんとか
ここに戻ってきた場合何がどうなってるか保証できない
seekdir(here)
続きの処理
449名無しさん@お腹いっぱい。:2009/03/12(木) 21:56:26
何がどうなってるか保証できない状態なら
telldirしたところにseekdirしても保証できないだろう
450名無しさん@お腹いっぱい。:2009/03/15(日) 11:44:20
ストリームとしてファイルリストをチェックしていくならseekとかは必須だと思うけれど
telldirもseekdirも機能しないんだから必要でも存在しない事実をどうする。

一旦readdirだかscandirでざっくりと読み込んで
それに対して操作するしか方法が無いのが現実。

バックアップとかで完全一致を目指す場合
「ほぼあっている」前提ならば結局ファイル自体の完全マッチをするしかないと思うが
事前にMD5とかSHA1とかとったリストをディレクトリーに入れとけばそれで済む気はする。
451名無しさん@お腹いっぱい。:2009/03/17(火) 11:41:43
なんだ。ftsとかftwというファイル階層を歩くライブラリーが標準であるんじゃないか。
少なくともperlの「find::file」と同じ事はftwだけでできた。

最低の作り方でもftwのコールバックで配列を構築すればいいわけだし
scandirとか使ってバカみたいだった。

何気にファイルユーティリティが固まってきたよ。
452名無しさん@お腹いっぱい。:2009/03/17(火) 14:33:22
opendir/readdir/closedirは、
fts, ftw辺りを書く人のためのシステムコールなんだよね。
まあ自分で書くのも悪くないけど、
scandir/telldirは使わないことをお勧めする。

>>448に書いてあるようなことは、
"concurrent data structure"と言うべきものだけど、
(Javaのiteratorのremove()のような)
UNIXのシステムコールは、"concurrent directory"を
直接的にはサポートしない。

昔、間接的にサポートするために、
update notifyが上がるUNIXenを見たことがあるが、
何だったか忘れてしまった…
453名無しさん@お腹いっぱい。:2009/03/17(火) 15:25:32
変な用語持ち出して論理に飛躍のあること言い出す輩が出てきたな
454名無しさん@お腹いっぱい。:2009/03/17(火) 16:33:31
用語が理解できないのを論理に飛躍があることにする輩が出てきたな
455名無しさん@お腹いっぱい。:2009/03/25(水) 11:19:17
>>452
> opendir/readdir/closedirは、
> fts, ftw辺りを書く人のためのシステムコールなんだよね。

ちゃうやろ…と思って見てみたけど、ffs(ftw) って
"." を open() してあれこれしてるだけだよ。

ttp://www.freebsd.org/cgi/cvsweb.cgi/src/lib/libc/gen/fts.c?rev=1.30;content-type=text%2Fplain
456名無しさん@お腹いっぱい。:2009/03/25(水) 11:42:34
>>455
違う。
open(2)は後から戻る時にfchdir(2)するため。
パスで辿ると別のところに行く可能性あるから。
457名無しさん@お腹いっぱい。:2009/03/26(木) 19:54:47
>>456 少なくともFreeBSDでftsもftwもchdirのオプションをつけようがつけまいが起動時のディレクトリーがカレントだった。
つまり子ディレクトリーの階層に移っていても「getenv("PWD")」の返り値は
スタートの場所
コールバック書くときにchdirされていると思って組むとはまる。
素直にpathなりを使う。
詳細システムコールの実装はともかくファイルリストの取得も含めて
ファイルサイズとか必要なんだったらftwかftsを使えばかなり楽なわけで
組みもしないで妄言はいていないでとりあえず組んで自分なりのベストをみっければいいんじゃないかと思う。
ftwはソートされないので一様に処理する場合以外は使えないかなと思ったけれど
コード量がとにかく少ない
458名無しさん@お腹いっぱい。:2009/03/26(木) 19:56:43
とにかくディレクトリー内のリストが欲しいならばftwでコールバックで配列に書き込む方法
ツリー取得したいならばftsが良い。
ftwの後腐れのなさは結構魅力
別の選択肢としてpopenでls -lRの返り値もらうという手もある。
perlなら「``」の返り値もらうだけだな。パースは適当にやってくれ
459名無しさん@お腹いっぱい。:2009/03/27(金) 09:41:21
>>455
そのソースを読めばopendir/readdirしていることが分かると思うが?
軽く検索しただけでいい加減なことを言わない方がいい。
NFSで動かないfts(3)を実装するわけがない。
460名無しさん@お腹いっぱい。:2009/03/28(土) 16:53:22
>>459は「実際に組んでいない」んだから机上の空論はほどほどにね、

>>455のは客観的なソース評価であるし間違ってはいないし
掲示板でいい加減な事をいっても何の問題もない

NFSなんて使わないでしらないけれどtelldir,seekdirすら動かないんだから
ftsがNFSで動かないくらい全然あってもおかしくない
461名無しさん@お腹いっぱい。:2009/03/28(土) 18:09:18
>>460
> >>455のは客観的なソース評価であるし間違ってはいないし
> 掲示板でいい加減な事をいっても何の問題もない

( ゚д゚)ポカーン
462455:2009/03/28(土) 22:14:14
ちゃうやろと思ったのは telldir/seekdir に関してだよ。
452 が opendir/readdir/closedir にしか言及してないってことに
気付いて無かった俺がアホなだけ。
463 ◆RubyFahc/I :2009/03/31(火) 15:55:27
rubyおたく向けのトリップ創りました。

RubyFahc/I : #NcM--Cセ{
Ruby.qKt3Q : #%C/Y:gmk
Ruby3r65m. : #h6d|TbE」
RubyWViHDk : #:jV|^?N~
Rubyi8CaTg : #jDt1G4`:
RubymzWnxQ : #!N{o6VヲJ
Rubyfo02Gg : #ヲYJ)ffn$
Rubyu9svnE : #+T-GT.Ti
RubyypieqU : #+,K:ヲ%v[
RubyIoAFuU : #?)V0M]c`
RubyNL3l2E : #C^?}8sヲq
RubyredCpo : #JU@UkdMy
Rubybk3Pyo : #hU@fQm,_
RubyYQ3Jtk : #m\4A?2'e
Rubyvjyg76 : #XIQ{N$J3
RubyS4Qmog : #/aKG.b\*
RubyPiJzfc : #_jq@zdZh
Ruby24.u4U : #l[Lz\Y)h
RubyVtS0bk : #pD'y$Zi\
Ruby4dt6ro : #「{Nv@f(0
RubymGCEfc : #9NXi[v|)
RubylUmOgY : #+(dK「@X{
RubypDsPgo : #HfLO0Nr8
RubyRlH2oc : #/2)k|Gpu
RubyYbNPnc : #シzU2.ヲ.L
RubyyRsYeU : #/Spddm+A
RubydSrMqw : #mx+9{[)c
RubyiMB9bQ : #KMlaIaOr
RubyOerZfE : #11J\EXK8
464 ◆Ruby.c34.Q :2009/03/31(火) 15:57:16
Rubyl/JuN. : #{^3l?jM@
RubyMyu4iA : #g{@Sセ,'5
RubysBAU/s : #slubZ7サd
RubyeT6Qio : #,)gAzFEX
RubyDyS/e. : #サAbV1lG/
RubyRfMLNM : #Wシ」w[8}h
Rubytc3JHQ : #Z=o\ib[サ
Ruby1lE7L6 : #h1シ{A-kj
RubyuUag0Y : #gヲ8!@W$n
RubyG6B8e6 : #0+7サ=5VH
RubyGguz1Q : #-g5i9\K8
RubyqzNGOo : #~t(mCuXQ
RubycQw0oM : #]%}-N(Me
RubynWWUBo : #PrU?「シJJ
Ruby.c34.Q : #IS+zヲABセ
RubyDdsChM : #qVKZI+{=
RubyBu2YeQ : #B@[.Q-o2
RubyoIbx4o : #ヲ2:qwsJD
RubyaL3Nm. : #k\uS\tFe
RubyRGJW9Y : #9)`H%Pc+
RubyKHrqAU : #zrB_X@tC
RubydeGFDA : #6「31rNEI
465名無しさん@お腹いっぱい。:2009/04/03(金) 03:46:26
UNIXとC++どっちがいいでしょうか?
466名無しさん@お腹いっぱい。:2009/04/03(金) 04:00:32
MACがいいと思います
467名無しさん@お腹いっぱい。:2009/04/03(金) 05:00:56
マクドってゆえや
468名無しさん@お腹いっぱい。:2009/04/03(金) 18:34:28
取り敢えず今「ディレクトリ取得」スレ的な流れだと思うんだけど
NFSってみえないといけないの?あとサン婆
httpかftpとローカルデバイスだけあればいいという考えではだめ?
469名無しさん@お腹いっぱい。:2009/04/03(金) 18:39:46
今時ディレクトリをread(2)出来るアホなUFS on UNIXは、
BSDくらいだと思うが、他にもあればリスト化希望。
470名無しさん@お腹いっぱい。:2009/04/03(金) 20:57:02
プログラマーになりたい・・

作曲家になりたい・・・

フラッシュ職人になりたい・・

絵師になりたい・・



俺にできるだろうか?
471名無しさん@お腹いっぱい。:2009/04/03(金) 21:05:01
なるだけならすぐなれる
472名無しさん@お腹いっぱい。:2009/04/03(金) 21:14:23
「プログラムを組む」のと「プログラマーになる」のは違う

「適当な曲を作曲する」のと「作曲家になる」のは違う

(以下同)

よって、「なるだけ」でもすぐにはなれない
473名無しさん@お腹いっぱい。:2009/04/03(金) 21:27:55
そうか・・

やはり必要なのはCですよね
474名無しさん@お腹いっぱい。:2009/04/03(金) 21:29:10
プログラマになりたくてなるんじゃないなってしまう者がプログラマ
貧弱一般人がプログラマになろうとしてもここはUNIX界なので人工的に淘汰されるのが目に見えている
475名無しさん@お腹いっぱい。:2009/04/03(金) 21:37:57
なってしまう・・とはどういうことかもう少し詳しく聞かしてほしい
476名無しさん@お腹いっぱい。:2009/04/03(金) 21:41:10
ようするに、才能じゃね?
477名無しさん@お腹いっぱい。:2009/04/03(金) 21:47:36
このプログラム腐ってやがる→仕方が無い、自分で直すか…
このプログラム良いんだけど、ちょっと機能が足りないな→仕方が無い、自分で直すか…
このプログラム良いな、どうやって実装してるんだろう→ソース読むか…
新人プログラマは頑張ってるんだけど、仕事ができねえ→仕方が無い、俺が実装するか…
どうも業務の効率が悪いな→一丁、便利スクリプト作ってやるか…

俺は↑こんな感じでプログラムを書く様になったけど、
>>474が言ってるのはまた別の事かな。
478名無しさん@お腹いっぱい。:2009/04/03(金) 21:59:08
>>474
の言葉のせいで無理なような気がしてきた(´・ω・)
479名無しさん@お腹いっぱい。:2009/04/03(金) 22:33:27
つまり、それほど、重く受け止めてしまうほどの意味深い言葉に聞こえたのです
480名無しさん@お腹いっぱい。:2009/04/04(土) 10:45:18
>>474はブロントさんだろう。一級プログラマとして
一般人から見ると憧れの的
481名無しさん@お腹いっぱい。:2009/04/04(土) 11:11:11
>>480
ブロントさん==一級プログラマ
????
482名無しさん@お腹いっぱい。:2009/04/04(土) 11:14:06
>>477
お前、素質あるな。
483名無しさん@お腹いっぱい。:2009/04/04(土) 12:31:19
>>477
ハッカー気質をお持ちだね。良いことだ。
484名無しさん@お腹いっぱい。:2009/04/05(日) 21:54:37
初歩的な質問ですが、


みなさん童貞ですか?
485名無しさん@お腹いっぱい。:2009/04/05(日) 22:20:56
いいえ、妖精です。
486名無しさん@お腹いっぱい。:2009/04/05(日) 22:49:29
君もウィザードだろ?
487名無しさん@お腹いっぱい。:2009/04/05(日) 23:06:39
Perlのモジュール WWW::Mixi でのログインを http ではなく https にして
安全にパスワードを送信するように改造するには何を使えばいいのでしょうか?
この辺をこういじってみたら?など詳しい方アドバイスを頂ければ幸いです。
488名無しさん@お腹いっぱい。:2009/04/05(日) 23:28:16
いいえ、ワイザードです
489名無しさん@お腹いっぱい。:2009/04/06(月) 12:47:12
41で童貞です
490名無しさん@お腹いっぱい。:2009/04/06(月) 17:06:36
>>487 WWW::MixiはしらないけれどNet::SSLeayかCrypt::SSLeayが入っていれば
lwpでhttpsが使えるはずだから
今httpsが使えないとしたらどちらか入れて同じコードで試してみたら?
491名無しさん@お腹いっぱい。:2009/04/06(月) 17:19:05
とりあえずFlashがやりたいならば
java +flex4 SDK
wine+Flashの適当なバージョン
flasm swfmillそしてエディターとxtermがあればかなりのことができる。
mtascだってつかえる。

CでcairoとSDLとffmpegを駆使すればFlash 用の絵描きツールも作れるよ

まぁとりあえずhtmlでアドベンチャー見たいなものを作る程度の技能がないとだめだね、
絵はローグとかつくーるじゃないけれどとりあえず借り物でもいいんじゃないの
492名無しさん@お腹いっぱい。:2009/04/09(木) 01:40:40
プログラミングからは少し外れますが・・・

HogeHugaはキャメルケースって言いますが、hoge_hugaは何と言うのですか?
493名無しさん@お腹いっぱい。:2009/04/09(木) 12:56:25
>>492
パスカル
494名無しさん@お腹いっぱい。:2009/04/11(土) 16:28:13
>>492
snake case
495名無しさん@お腹いっぱい。:2009/04/24(金) 07:19:05
underscore styleというのもどっかで見たような気がしなくもない
496名無しさん@お腹いっぱい。:2009/04/25(土) 12:15:33
PF_UNIX/SOCK_DGRAMにデータを送る時、FreeBSDでは
送り元が無名になってしまい、受け取った側が
返答を送り返すことができない。(PF_INETだともちろんソースポートが付くが)
だから、間に合わせのファイル名をbindしてから送信する必要あり。
あとでunlinkしないと行けないし、美しくない。
Linuxだと、PF_UNIX/SOCK_DGRAMでも、bindしなくても
勝手に名前を割り当ててくれて、不要なソケットファイルも作成されないんだが、
そういうことはできないの?
497名無しさん@お腹いっぱい。:2009/05/02(土) 13:06:49
C++のtemplateで、templateの展開先を限定することってできますか?

template <class T> void func(T arg) {
// argが HOGE型またはFOO型の場合の処理
}

template <class T> void func(T arg) {
// argが BOKE型またはHAGE型の場合の処理
}

みたいなことをやりたいのです。関数名は func()で同名にしたいのです。

たとえば、template <class T={HOGE,FOO}> みたいなことが実現できませんか?
498名無しさん@お腹いっぱい。:2009/05/02(土) 13:57:48
>>497
template <class T> void funcHOGEFOO(T arg) {
// argが HOGE型またはFOO型の場合の処理
}

template <class T> void funcBOKEHAGE(T arg) {
// argが BOKE型またはHAGE型の場合の処理
}

void func(HOGE arg) { funcHOGEFOO(arg); }
void func(FOO arg) { funcHOGEFOO(arg); }
void func(BOKE arg) { funcBOKEHAGE(arg); }
void func(HAGE arg) { funcBOKEHAGE(arg); }
499名無しさん@お腹いっぱい。:2009/05/02(土) 14:01:28
>>498
だから、そうは書きたくないので、
templateを使って奇麗にまとめる方法を質問してるんですが。。

他にわかる方お願いします
500名無しさん@お腹いっぱい。:2009/05/02(土) 14:53:03
何が不満なのか言えよ。

どうしても template だけのコードにしたいんなら、 boost の enable_if に
is_same とか突っ込んで使えばいいかもしれない。
501名無しさん@お腹いっぱい。:2009/05/02(土) 16:53:57
>>498 の方法では、func()の一方のargの型の種類が不定の時対応不能。

つまり、
片方の func() は argが HOGE型またはFOO型の場合
もう片方の func() は argが「HOGE型またはFOO型」以外の場合すべて

だったとしたらどうする?
502名無しさん@お腹いっぱい。:2009/05/02(土) 17:06:02
>>501
template <class T> void funcHOGEFOO(T arg) {
// argが HOGE型またはFOO型の場合の処理
}

template <class T> void func(T arg) {
// argが「HOGE型またはFOO型」以外の場合すべて
}

template<> void func(HOGE arg) { funcHOGEFOO(arg); }
template<> void func(FOO arg) { funcHOGEFOO(arg); }
503名無しさん@お腹いっぱい。:2009/05/02(土) 17:13:52
>>502
「HOGE型またはFOO型」というのが、2種類だけじゃなくて10種類くらいあったら
template本体以外に void func(HOGE arg) とかを全部列挙するのが
すごくダサイんですが。

あと、本来の関数名以外に funcHOGEFOO()という関数名をつけなければいけないのも
名前がぶつかるかも知れないし美しくない。
504名無しさん@お腹いっぱい。:2009/05/02(土) 17:18:14
なんで人にコード書かせて後から条件増やして文句つけるの?
そういう遊びなの?
アホなの?
505名無しさん@お腹いっぱい。:2009/05/02(土) 17:19:35
>>503
何がしたいのかわからんが、ごちゃごちゃ言わずにさっさと boost::enable_if で好きに片付けろよ。
506名無しさん@お腹いっぱい。:2009/05/02(土) 17:21:22
アホなんだろ。
507名無しさん@お腹いっぱい。:2009/05/03(日) 00:15:37
どうしてこんなことに
508名無しさん@お腹いっぱい。:2009/05/03(日) 10:24:12
同じコードが、Cだとコンパイルできるけど、
C++だとエラーになる。

struct A { int i, j; };

void hoge()
{
struct A a = { .i = 123, .j = 456 };
}

構造体を初期化したいのだが、メンバーの順序を気にしなくていいように
メンバー名指定で初期化したい。

A a = {123, 456};
にすればC++でもOKになるけど、これだとメンバーの順序が変わった時困るから、
.i = や .j = の指定を入れたいのだが。

わかる方お願いします。
509名無しさん@お腹いっぱい。:2009/05/03(日) 12:33:58
CでもC99じゃないとダメじゃないの?それ
510名無しさん@お腹いっぱい。:2009/05/03(日) 13:03:34
C++だったら普通コンストラクタ
511名無しさん@お腹いっぱい。:2009/05/03(日) 13:10:29
>>510
コンストラクタにしても、メンバの順序(コンストラクタの引数の順序)を考えなくて
いいように >>508 の要求を満たすことはできないのでは?

メンバの型が違えば方法はあるけど、型が同じならできないでしょ。
512名無しさん@お腹いっぱい。:2009/05/03(日) 13:51:41
>>510
コンストラクタだと実行時に「代入」されるからプログラム的に無駄でしょ。
「代入」じゃなくて、静的データで初期化したい。
あるいはテーブルのようなconstデータを持ちたい場合、
コンストラクタじゃなくて「初期化宣言」したい。
513名無しさん@お腹いっぱい。:2009/05/03(日) 14:37:22
>>512がオート変数の初期化を、「代入」以外の方法(静的データ?)で行う、
画期的に効率的な方法を開発したようです。
514名無しさん@お腹いっぱい。:2009/05/03(日) 14:54:15
>>513
>>508 では確かに auto変数だが、
関数外に const static で持ちたい場合もあるしね。

そういう場合、struct member指定で順不同で初期化するのはどうするのかね?

やっぱ C++じゃ無理なのかい?
515名無しさん@お腹いっぱい。:2009/05/03(日) 16:14:47
なんかさー、そこまでこだわるなら
struct A a;
a.i = 123;
a.j = 456;
でいいじゃんって感じ。
元々auto構造体変数のメンバ初期化自体邪道だったんだし。
516名無しさん@お腹いっぱい。:2009/05/03(日) 16:23:57
>>515
すでに指摘されてるように、それだと「代入」。
質問は「初期化」の方法。

auto変数じゃなくて、staticの時、どうするよ?
517名無しさん@お腹いっぱい。:2009/05/03(日) 16:30:14
C++の規格上出来ないんだから、どうしてもやりたいならC99で記述してリンクすればいい。
518名無しさん@お腹いっぱい。:2009/05/03(日) 16:34:57
なんだ、できないのか。しょぼいな。
519名無しさん@お腹いっぱい。:2009/05/03(日) 17:59:22
コンストラクタ的にしとかないとメンバ変数増えたときに困りそうだけど。
520名無しさん@お腹いっぱい。:2009/05/03(日) 23:59:36
>>519
まあこんなしょうもないところにこだわる人にそんなことが理解できるはずもなく。
521名無しさん@お腹いっぱい。:2009/05/05(火) 10:21:50
そういうエディタ内でのお遊びはム板でやればよろし。
>>517 >>520 で正解でてるからいうこた特に無いけれど
それ以前に
基本は「ある仕様を覚えろ」じゃないかと思う。
「書き方」にこだわりがあるなら
そのコーディングを無難にコンパイルできるマクロツール作ればいいまでのこと
テキストレベルの問題だ。
522名無しさん@お腹いっぱい。:2009/05/05(火) 14:51:47
おいおい、途中から話の噛み合っていないバカ共が増えてるけど

元々の質問は、
「メンバの順序を気にしなくて良いように、メンバ名指定で初期化したい」
   例:struct A a = { .i = 123, .j = 456 };
なんだろ?
で、傲慢にも「同じコードをC++でも通るようにしたい」と…

はっきり言えば>>509>>517が全てで、この書き方だとC99でしか通らず
そのままではC++0x準拠のC++コンパイラですら通らないわけだが
何を勘違いしたのか、初期化と代入の区別もついていないバカ共とか
Designed Initializersの話してるのに、エディタ内でのお遊びとか言ってるバカが話をややこしくしてる
本当バカって救いようないな、分からないなら黙っていれば良いのに…

似たような疑問をもっていて、たまたまこのスレを訪れた人は、>>509>>517以外の
>>508からここまでのレスは、全くのゴミレスなので読み飛ばしてほしい
523名無しさん@お腹いっぱい。:2009/05/06(水) 13:33:15
X Window Systemのプログラミングの参考になる書籍
で現在も通用するものってどんな者が有りますか?
具体的にはC言語からXlibなどをつかってツールキットを使わずに
プログラムを作成する方法を解説した書籍があればお教えください。
tclやgtkやqtの経験は有るのですが、ちょっとしたプログラムを
作るのにあまり重たくしたくないのでC言語で直接利用したく思います。
524名無しさん@お腹いっぱい。:2009/05/07(木) 10:40:39
>>523 書籍はしらないけれど
ttp://xjman.dsl.gr.jp/X11R6/X11/
ttp://www-yano.is.tokushima-u.ac.jp/~mituhara/software_e/
あとりを参考にしてみては?あとめぼしいportsのソースが参考になる。
ただxlibとSDLと使用メモリとか大してかわらんよ。
描画面も考えると
xlib→cairo→pango
ないしは
SDL→cairo→pango
とやっていくと軽くて学習効率が高く見栄えのする結果が得られると思う。
それと「コマンドとして呼び出して結果をもらう」とか
「perlやshを呼び出す」事も選択肢に入れるとコードと使用リソースが小さくできる。
525名無しさん@お腹いっぱい。:2009/05/07(木) 10:46:27
>>524でcairoを出しているのはxlibだときれいなテキストが書きにくいので
freetypeを叩くより楽だからの意味合いが強い。
526名無しさん@お腹いっぱい。:2009/05/07(木) 17:08:06
>>524-525
ありがとう御座います。
がんばります。SDLはいろんなOSで使えるようですね。
いろいろ勉強してみようと思います。
527名無しさん@お腹いっぱい。:2009/06/17(水) 09:35:24
>>523
亀レスだがそういう解説書なら
Xアプリケーション・プログラミング1 Xlib編

しかし書籍の方が現在では流通していないかも。
どこかの図書館にはあるだろうからその場合は最寄りの図書館で取り寄せてもらって。
528名無しさん@お腹いっぱい。:2009/06/19(金) 17:16:58
下図のように自己交差しているリージョンを、
┏━┓
┃  ┃
┗━╋━┓
   ┃  ┃
   ┗━┛
交点で個別のリージョンに分けたいんですけど、
┏━┓
┃  ┃
┗━┛┏━┓
     ┃  ┃
     ┗━┛
簡便な方法ってないものでしょうか。よろしくお願いします。
529名無しさん@お腹いっぱい。:2009/06/19(金) 17:23:20
すみません、スレ違だったようです。取り下げます。
530名無しさん@お腹いっぱい。:2009/07/13(月) 15:10:34
# ping -c 1 -t 10 www.yahoo.co.jp
って実行すれば以下のような結果が表示されると思うのだが

PING www.yahoo.co.jp (124.83.139.192) 56(84) bytes of data.
64 bytes from f1.top.vip.ogk.yahoo.co.jp (124.83.139.192): icmp_seq=1 ttl=57 time=9.06 ms

--- www.yahoo.co.jp ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 9.068/9.068/9.068/0.000 ms

平均値だけを出力させることってできますか?
#ping -c 1 -t 10 www.yahoo.co.jp
9.068

って感じにです。
531名無しさん@お腹いっぱい。:2009/07/13(月) 15:11:25
すみません、スレ違だったようです。取り下げます。
532名無しさん@お腹いっぱい。:2009/07/13(月) 15:13:06
>>531
勝手に取り下げないで下さい
533名無しさん@お腹いっぱい。:2009/07/13(月) 17:19:19
>>530
えっと、そういう機能を持った pingコマンドの別種を自分でプログラムしたい、
って質問だよな?
pingのようにICMPを送受信するには、
SOCK_RAWを使ったソケットプログラムが必要だが、
その辺は理解してるのか?
534名無しさん@お腹いっぱい。:2009/07/13(月) 17:26:55
単にパイプで適当なワンライナーにつなげば済む程度の話じゃね?
535名無しさん@お腹いっぱい。:2009/07/13(月) 17:32:39
>>534
それだとプログラミングじゃないからやっぱりスレ違い。取り下げなければならない。
536名無しさん@お腹いっぱい。:2009/07/13(月) 17:58:32
>>533
muninで出力結果をグラフにしたいだけです
537名無しさん@お腹いっぱい。:2009/07/13(月) 18:01:43
>>536
じゃあ、Xのプログラムも必要だな。
ツールキットは何を使う予定?
538名無しさん@お腹いっぱい。:2009/07/13(月) 18:37:33
>>537
必要ねぇだろ?嘘教えるなよww
539名無しさん@お腹いっぱい。:2009/07/13(月) 18:40:19
ここはプログラミング質問すれだよ。
muninの出力みたいな表示を行なうプログラムを自作したいんだろ?
pingのソースを参考にソケットプログラムとXのプログラムが必要だな。
540名無しさん@お腹いっぱい。:2009/07/16(木) 13:14:14
グラフィックスにXのプログラムはいらないな。
グラフというのが「画像」であるならばcairoを使うのが定番
cairoで作ったコンテキストはファイルとして保存できる他
GDK,xlibのpixbuf、SDLみたいなメモリコンテキストから簡単に扱える。
ImageMagickもいいんだけれどcairoのが良いと思うね、

コマンドプロンプトのコントロールもpipe使ったりsytem使ったりで使うのは有りだから
無理に実装せずpopenとかで呼ぶのも有りだし
perlやpythonでの実装という選択肢もある。

で>530 の場合は無理にICMPの使い方をマスターしないで
perlの「``」かCのpopenでpingを使ってデータを取って
ソートなり平均値を出すという部分をまず作ることが大事なんじゃないかな。

ping部分を作りたかったら別で作ればいいさ。
541名無しさん@お腹いっぱい。:2009/07/16(木) 13:34:45
>>540
perlを使うと「スクリプティング」
(シェルスクリプトも同様)

ここは「プログラミング」
よって、スレ違い。
542名無しさん@お腹いっぱい。:2009/07/16(木) 19:03:06
>>541
スレ違いじゃないと思うけど。
別に何使ったっていいじゃん、こだわること無い。
543名無しさん@お腹いっぱい。:2009/07/17(金) 02:10:39
アクションゲームプログラミングって本を参考に
プログラミングしようと思ってるんですけど
ひとつ疑問が、
Directx SDKのバージョンが違うんですけど
最新版でも問題はありませんか?
544名無しさん@お腹いっぱい。:2009/07/17(金) 08:13:33
この板では回答は得られません
545名無しさん@お腹いっぱい。:2009/07/18(土) 14:10:53
まぁそう言わずに

>>543
君には無理
546名無しさん@お腹いっぱい。:2009/07/19(日) 21:14:09
>>541 プログラムの意味分かってないね、
547名無しさん@お腹いっぱい。:2009/07/19(日) 21:16:18
>>543 ここはUNIX板、最小公倍数はwine使用時のdirectXかSDL+OpenGL

アクションゲームは素直にFlashで作った方がいいんじゃない。
アスキーアートでも写真でもいいから
とりあえずキャラ画像そろえるのが先決
548名無しさん@お腹いっぱい。:2009/07/19(日) 21:17:58
>>541 cairoもImageMagickもperlバインディングもあるけれど
Cでの実装は常識の範疇だよ。ちなみに、
549名無しさん@お腹いっぱい。:2009/07/21(火) 20:21:55
すいませんちょっと質問させてください。
いま、データのインポートをする簡単なプログラムをCで書いているところなのですが、原因のよくわからないエラーが出てしまっています。

このあとfloat型ポインタのpにデータをいれていきたいのですが、何故かfloat *pのコメントアウトを外すと、
unnkoを二回出力したあとセグメンテーションエラーになるのです。コンパイルは通ります。
float *pを米アウトした状態だと普通に動きます。
float型以外の型の変数やポインタを用意しても同じようなエラーがでていまい、これ以上変数を増やせないんです。

開いてるファイルは8kぐらいの大きさだし、変数の数も多いわけではないのでスタックを食いつぶしてるようにも思えません。
誰か間違いに心あたりありませんか?

ちなみにosはScientificLinux5.3でコンパイラはGNUの4.1です
↓ソースコードはこちら
550名無しさん@お腹いっぱい。:2009/07/21(火) 20:24:24
#include <stdio.h>
#include <stdlib.h>
int main(int argc,char *argv[])
{
char *inbuf;
int i,j;
char c;
FILE *fp;
//float *p;
printf("unnko\n");
if((fp = fopen(argv[1], "r")) == NULL ) {
printf("ファイルオープンエラー\n");
exit(EXIT_FAILURE);
}
printf("unnko\n");

for(i=0;i<126;i++){
if( fgets(inbuf,128,fp)==NULL){
printf("%s Can't read\n",argv[1]);
}
printf("%s",inbuf);
}
fclose(fp);
printf("\n");
return 0;
}
551名無しさん@お腹いっぱい。:2009/07/21(火) 20:30:54
>>550
char *inbufがタダのポインタのままで、メモリ確保してないのが原因。
//float *p; のコメントとかコメントアウトについては、
たまたまそれでメモリ配置が変わってたまたま動いたり動かなかったりしてただけ。

正しくは char inbuf[128]; でちゃんとメモリ確保しろ。
552名無しさん@お腹いっぱい。:2009/07/21(火) 20:36:01
>>551
早いレスありがとう
メモリ確保は既にやった気がするけど夢だったかもしらん。ちょっとやってみる
553名無しさん@お腹いっぱい。:2009/07/21(火) 20:43:13
>>551
キターーーーーーーーーー
ちゃんと動きました。ほんとありがとう
554名無しさん@お腹いっぱい。:2009/07/21(火) 20:45:10
とりえあえず
char *inbuf = malloc(128);
…fgets(inbuf,128,fp)…

char inbuf[128];
…fgets(inbuf,128,&fp[0])あるいはfgets(inbuf,128,fp)…
の違いが分かるようになるくらいは勉強しなよ。
555名無しさん@お腹いっぱい。:2009/07/21(火) 20:51:54
>>554
解決した後に蛇足なこと書くなよ。>>551 の回答者とは別人の人よ。

> …fgets(inbuf,128,&fp[0])あるいはfgets(inbuf,128,fp)…

おいおい、FILE *fp; に対して &fp[0] って意味ないだろ。
(コンパイルすれば単に fp と同じになるにしても)

書きたかったのは &inbuf[0] じゃないのか?
556名無しさん@お腹いっぱい。:2009/07/23(木) 00:37:06
>>530
スレちレス

$ ping -c 1 -t 10 host | tail -1 |awk -F/ '{print $5}'
557名無しさん@お腹いっぱい。:2009/09/04(金) 00:52:32
Linux の RAW ソケットで送信パケットをキャプチャし
ないのってどうすんだっけ? どっかのサイトで見たんだ
けどキーワードが悪いのか見つからない…。
558名無しさん@お腹いっぱい。:2009/09/04(金) 12:09:44
libpcap使いなさい。
559名無しさん@お腹いっぱい。:2009/09/04(金) 12:13:41
すみませんが詳しい方のみ回答をお願いします
560名無しさん@お腹いっぱい。:2009/09/04(金) 18:21:06
回答まだでしょうか?急ぎです。
561名無しさん@お腹いっぱい。:2009/09/04(金) 19:31:34
みんな自分が詳しくないということを自覚しているから何も
言わないコトにしたんだと思うよ。(ということにしておく)
562557:2009/09/05(土) 00:33:12
>>560
> 回答まだでしょうか?急ぎです。
実際急ぎだったんだがお前は俺じゃないだろ(w

キーワードは PACKET_OUTGOING だった。
563名無しさん@お腹いっぱい。:2009/09/10(木) 20:16:00
>>560
出てこいよ池沼
564名無しさん@お腹いっぱい。:2009/09/21(月) 18:30:40
すみませんが詳しい方のみ回答をお願いします
565名無しさん@お腹いっぱい。:2009/09/22(火) 21:06:47
libhoge.so.* という共有ライブラリがあった時、
gcc -o prog prog.c -lhoge
ってやると、progから libhoge.so.*に動的リンク(lddで確認)されますが、
prog.cで、実際にはlibhoge.so.*の関数をひとつも使っていなくても
動的リンクされた状態でコンパイルされてしまいます。

一方、libhoge.aという静的ライブラリがあって、
gcc -o prog prog.c libhoge.a
ってやったような場合は、prog.cの中でlibhoge.aの関数をひとつも使っていなければ、
libhoge.aの中身は使われず、libhoge.aを付けずに
gcc -o prog prog.c でコンパイルしたのと同じバイナリができて、
無駄になりません。

動的リンクの場合でも、関数を使っていないなら、
-lhoge を付けても結果的には動的リンクしないバイナリが作成されるように
できませんか?
566名無しさん@お腹いっぱい。:2009/09/22(火) 22:53:19
使ってないなら -lhogeつけなきゃいいのに
567名無しさん@お腹いっぱい。:2009/09/22(火) 23:05:07
>>566
じゃなくて、使うかどうかわからない場合でも、
-lhogeとか付けておいて、実際に使われなかったらリンクしないようにしたいんだが。
(別の関数から間接的に呼び出されたりして、ライブラリの関数を使ってるかどうか
簡単には判断できないことがある)

静的ライブラリ(libhoge.a)なら可能なのに、
動的ライブラリの場合のみ不可能なのは納得いかないんだが。

ldが、本当に関数を使ってるかどうかチェックするのをさぼってるとしか
思えないんだが、これバグじゃないの?
568名無しさん@お腹いっぱい。:2009/09/22(火) 23:33:53
何でバグって思うのか分からない。わざわざ -lhoge を付けてるのに
付けてないことにしてほしい、って方がワガママでしょ
569名無しさん@お腹いっぱい。:2009/09/22(火) 23:35:59
気に入らなくても、ldはそのように作られているのだから、不要なライブラリを
リンクしないようにするしかない。
570名無しさん@お腹いっぱい。:2009/09/22(火) 23:41:42
>>569
じゃあ、なぜ ldはそのように作られたのか?
関数を(というかシンボルを)使ってるかどうかのチェックぐらい、
簡単にできそうなのになぜしないのか?
571名無しさん@お腹いっぱい。:2009/09/22(火) 23:41:52
>>567
実行時までシンボル解決出来ないんだから、そのライブラリが
本当に呼び出されないかどうかは ld にも分からないんだよ。
だから ld は悪くない。
572名無しさん@お腹いっぱい。:2009/09/22(火) 23:46:17
>>567
そんなことはない。
「シンボル解決出来ない」場合はちゃんと undefined symbol: hoge ..
みたいなエラーが出るから、コンパイル時にも判断できるはず。
573名無しさん@お腹いっぱい。:2009/09/22(火) 23:47:04
>>571
そんなことはない。
「シンボル解決出来ない」場合はちゃんと undefined symbol: hoge ..
みたいなエラーが出るから、コンパイル時にも判断できるはず。
574名無しさん@お腹いっぱい。:2009/09/22(火) 23:51:29
>>571
とりあえず、コンパイル時の判断で不要と思われるライブラリは
(動的)リンクしないのをldのデフォルトにしておいて、

コンパイル時のシンボルレベルの判断では使っていないように見えて、
実際には実行時に使われるような特殊なライブラリの場合のみ、
--force-link みたいなオプションを新設して強制リンクさせればいいだろ。

デフォルトではシンボルを使ってなければリンクしないことにして。
575名無しさん@お腹いっぱい。:2009/09/22(火) 23:54:54
バイナリパッケージでインストールされたコマンドとか見てると、
実際には使ってない動的ライブラリがリンクされてたりするね。
(C++とかXの関係のライブラリにそういうのが多い)

そのソースのMakefileから、-lxxx を外してもコンパイルできたりする。
これって無駄だし、ldが適切にリンク判断してれば
もっと効率の良いバイナリができていたはずなのに。
576名無しさん@お腹いっぱい。:2009/09/22(火) 23:56:33
リ1「こいつ使ってないライブラリをリンクしようとしてるぜ」
リ2「あちゃー、何だそれ」
リ1「でもわざわざ余計な事をするんだから何か考えがあるんだろう」
リ2「リンクする必要が無いなら最初から省けば良いからな」
リ1「仕方が無い、面倒くさいけどリンクしてやるか」
リ2「これでバグとか言われたら最悪だな」
577名無しさん@お腹いっぱい。:2009/09/23(水) 00:00:37
>>576
同じソースでも環境によってライブラリが必要だったり不要だったりする場合がある。
そういう場合、共通ソースでは念のため -laaa が付けられている。

リンカーが「使ってないライブラリをリンクしようとしてる」と判断できるなら
それをリンクしないようにするべき。
578名無しさん@お腹いっぱい。:2009/09/23(水) 00:01:28
>>573
それはライブラリが足りない場合だろ。
ちゃんと場合分けして考えようぜ。

シンボルが呼び出されないかどうかは保証出来ないんだよ。
別の動的ライブラリから呼び出されるかもしれないし、
動的ライブラリは差し替え可能だから何でもありだ。
ツールは人間様の指示を無視する事は出来無いの。
579名無しさん@お腹いっぱい。:2009/09/23(水) 00:02:19
>>576
それと同じ理屈を libxxx.a に適用すると論理破綻。
580名無しさん@お腹いっぱい。:2009/09/23(水) 00:05:06
>>578
だから「保証はしなくてよい」
ldのデフォルト動作として、リンクしないようにして、
それでまずい場合(レアケース)のみ、--force-linkみたいなオプションで
強制リンクすればいいだけ。

実際、知らず知らずのうちに使ってるバイナリが
不要なライブラリをリンクしてるんだよ。
ldの動作をちょっと改良するだけで、
それらがすべて改善できるだろ。
581名無しさん@お腹いっぱい。:2009/09/23(水) 00:07:46
>>579
動的と政敵の違いを考えることが無いお前の頭の中が破綻してる。
582名無しさん@お腹いっぱい。:2009/09/23(水) 00:08:33
>>573
・それは、ライブラリが足りてない事がわかる事を意味していて、
 ライブラリが余分だという事は意味してないよな。
・ldがそのようなライブラリをリンクしないと、dlsym(NULL, ...)が困るかもしれない。
583名無しさん@お腹いっぱい。:2009/09/23(水) 00:09:13
>>578
場合わけじゃない。同じ場合だ。
「ライブラリが足りない場合」ではない場合はリンクしない。
で問題ないだろ。

別の動的ライブラリから呼び出されるような場合でも、
ld時にそのライブラリも -lxxx2 で指定するのだから、
結局ldがすべて判断できる。

dlopen()の場合は考慮しないということで。
584名無しさん@お腹いっぱい。:2009/09/23(水) 00:09:30
>>580
残念ながら改悪だと思われ。
585名無しさん@お腹いっぱい。:2009/09/23(水) 00:10:24
>>583
考慮しろよww
586名無しさん@お腹いっぱい。:2009/09/23(水) 00:11:14
>>579
だから場合分けして考えろって。
違う物に同じ理屈で挑むなよ…

もし良いアイデアだと思うなら、自分で実装してみな。
俺等は使わないけど、君みたいな人が他にもいるかもしれん。
587名無しさん@お腹いっぱい。:2009/09/23(水) 00:11:24
>>582
dlopen()するようなプログラムなら、
そのプログラムの「実行時の責任」で必要なライブラリを
プログラムでロードするから、今の議論とは関係なし。(考えなくて良い)
588名無しさん@お腹いっぱい。:2009/09/23(水) 00:12:20
>>587
dlsym(NULL, ...)って書いただろ。dlopenしないんだよ。
589名無しさん@お腹いっぱい。:2009/09/23(水) 00:13:26
>>584
じゃあ、譲歩して、

ldのデフォルトは従来のままとして、
--no-link-unneeded みたいなオプションを付けたら、
不要なライブラリをリンクしない、ということでいいだろ?

どうしてそういうオプションが ldにないのか?
590名無しさん@お腹いっぱい。:2009/09/23(水) 00:16:00
>>588
どっちでも、今の議論では同じこと。関係ない。
591名無しさん@お腹いっぱい。:2009/09/23(水) 00:19:11
何でもかんでも『同じこと』なんだな。
ちょっと場合分けしたらスッキリ理解出来るのに…

まぁ、ライブラリをロードする時間とメモリが惜しいなら、
自分が使うライブラリくらい把握しとけって事だな
592名無しさん@お腹いっぱい。:2009/09/23(水) 00:24:21
>>590
関係有るだろ、-lでリンクしたライブラリを参照するんだから。
593名無しさん@お腹いっぱい。:2009/09/23(水) 00:27:50
--as-neededとかあるけど?
594名無しさん@お腹いっぱい。:2009/09/23(水) 00:28:10
>>592
dlsym()とかを使わないような普通のプログラムで、
環境対応のため念のため付けられている -lhoge オプションを、
ldが適切に判断してリンクしないようにしたい。

という議論で、dlopen()/dlsym()等で事情がある場合は
ldに --force-linkなどのオプション指定して対応すれば良い話で、
その --force-linkなどのオプションが必要になるプログラムについては
話の本題ではないので、結局 dlopen()/dlsym()等の件は関係ないということ。
595名無しさん@お腹いっぱい。:2009/09/23(水) 00:30:35
>>589
お前の糞みたいな益の無いアイデアで作り変えた糞ソフトをldと呼ぶな
596名無しさん@お腹いっぱい。:2009/09/23(水) 00:32:38
>>593
詳しい人登場。(正解)

「-lhoge付けたんだから絶対にリンクするべきだ」とか、
「実行時じゃないと判断できない」とか
質問者を叩いていた人、全員不正解。
597名無しさん@お腹いっぱい。:2009/09/23(水) 00:34:37
>>595
つまり、現状の ldにすでに備わっている
「--as-needed」オプションは、
「糞みたいな益の無いアイデア」なんですね、わかります。

作り変えなくても、すでにそう作られてるんですが、、
598名無しさん@お腹いっぱい。:2009/09/23(水) 00:41:49
>>597
だから、お前のアホみたいなアイデアで作り変えたゲテモンをldと呼ぶなと言ってるんだ。
作り変えないならldそれはそもそものldだ、普通にldと呼べゴミカス
599名無しさん@お腹いっぱい。:2009/09/23(水) 00:43:36
>>597
へぇ、じゃあ現状のldはデフォルトで使ってないものをリンクしないんだね?
違うよね?お前の糞ソフトはldじゃないんだよ。
600名無しさん@お腹いっぱい。:2009/09/23(水) 00:47:37
>>598-599
見苦しいぞ。
--as-neededオプションをすぐに答えられなかった奴は素直に負けを認めとけww
601名無しさん@お腹いっぱい。:2009/09/23(水) 00:47:58
>>596
>「実行時じゃないと判断できない」とか

これは正しいだろ。--as-needed が使えるのは
プログラム側でシンボルテーブルを参照していない
限りにおいてのみだぜ。これも場合分けって奴だ。

当たり前だが GNU の ld 固有の機能だから環境依存に
注意して使ってくれ。
602名無しさん@お腹いっぱい。:2009/09/23(水) 00:49:56
あー、ちなみに Mac OS X では使えない。
必要とされていないのか、何か問題があるのかは知らん。
603名無しさん@お腹いっぱい。:2009/09/23(水) 01:02:27
as-needed がデフォルトの動作でなくて、オプション付けないと有効にならない
あたりから察しようぜ
604名無しさん@お腹いっぱい。:2009/09/23(水) 01:12:29
>>602

古い話で悪いが、自宅の 10.4 だと

% ld -v
Apple Computer, Inc. version cctools-622.9~2

と出たので、Mac OS X の ld は GNU ld ではないと思う。

sed なんかも GNU ではなくて BSD みたいだし。
605名無しさん@お腹いっぱい。:2009/09/23(水) 01:26:40
http://opensource.apple.com/source/ld64/

ソースを見てみても独自っぽい感じですね。
C++ で実装されてますし。
606名無しさん@お腹いっぱい。:2009/09/23(水) 03:37:07
>>600
見苦しいぞ、おまえ
607名無しさん@お腹いっぱい。:2009/09/23(水) 04:41:57
>>565
> libhoge.aの中身は使われず、libhoge.aを付けずに
> gcc -o prog prog.c でコンパイルしたのと同じバイナリができて、
> 無駄になりません。

何が無駄?

mmap された text/data segment はさわらなきゃ
主記憶に page in されへんと思ってたんやけど…
俺の認識違い???

教えて, えらい人.
608名無しさん@お腹いっぱい。:2009/09/23(水) 08:37:57
>>607
shared lib本体が主記憶に page in されないとか、そういう問題じゃないと思う。

たとえば、実際には呼んでない C++の古いバージョンのライブラリをリンクした
バイナリができてしまって、あとでライブラリがバージョンアップした時
コマンドが実行できなくなってしまうなどの問題がある。

実際に呼んでいて、ライブラリがないから実行できないのなら仕方ないが、
実際には呼んでないのにコマンド自体が実行できなくなってしまうのはおかしい。

それとも、実行時にリンクしてるライブラリが見つからなくても、
実際に呼び出していないならコマンド本体を実行させるような方法ってある? ないだろ。
609名無しさん@お腹いっぱい。:2009/09/23(水) 08:40:03
libhoge.so.* が不要なはずなのに -lhoge でリンクされていて
別のシステムで libhoge.so.* が無い場合に
上の prog.c だけが使いたい人にとっては
無駄に libhoge.c がどこで提供されてるか探してきて
そのコンパイルから何から必要になるじゃん?
だから不要なものはリンクしないで欲しいんだ
610名無しさん@お腹いっぱい。:2009/09/23(水) 10:51:30
>>608
へ?どうしても動かしたいならdynamic sectionの書き換えくらいするでしょ。
611名無しさん@お腹いっぱい。:2009/09/23(水) 11:20:31
>>608
>たとえば、実際には呼んでない C++の古いバージョンのライブラリをリンクした
>バイナリができてしまって、あとでライブラリがバージョンアップした時
>コマンドが実行できなくなってしまうなどの問題がある。

これはリンカー以前の問題だよ。
リンカーで解決しようとする前に開発環境を見直した方がいい。
そもそもこんな事が問題になる事自体がおかしいぜ。
古いバージョンのライブラリも同梱しておけば良いだけの話だし。
どんなOSを使ってるんだ?

それと、そのライブラリを絶対に使っていないと言う確信があるなら、
ダミーのライブラリを噛ませれば良いんじゃね?
612名無しさん@お腹いっぱい。:2009/09/23(水) 11:25:13
--as-needed で問題は解決済み。

元の質問は解決してるのに、
--as-needed を答えられなかった人は、
いつまで負け惜しみの言い訳を続けるんだww
613名無しさん@お腹いっぱい。:2009/09/23(水) 11:39:15
解決したと思ってるのが…
614名無しさん@お腹いっぱい。:2009/09/23(水) 11:49:10
>>612は釣りだろ、本人ならあれを解決したなんていわない
615名無しさん@お腹いっぱい。:2009/09/23(水) 12:35:39
>それと、そのライブラリを絶対に使っていないと言う確信があるなら、
>ダミーのライブラリを噛ませれば良いんじゃね?

まあそうだな
616名無しさん@お腹いっぱい。:2009/09/23(水) 18:17:14
gentooでas-neededつけると結構動かなくなるのがあったから使うの止めたよ.
-lの順番とか適当だと動かなくなったりするし。

検索したらヒットしたので貼っとく
--as-needed introduction and fixing guide
ttp://www.gentoo.org/proj/en/qa/asneeded.xml
617名無しさん@お腹いっぱい。:2009/09/24(木) 16:01:34
プログラムの話でなくてコンパイルの仕方のレベルの無駄話が続いているなぁ。
どうせhello worldかコピペしか作れない癖に
スレ違いだ。
618名無しさん@お腹いっぱい。:2009/09/24(木) 20:05:41
無駄話に無駄なオチがついたな。じゃあ次の質問よろしく。
619名無しさん@お腹いっぱい。:2009/09/24(木) 23:57:12
シェルスクリプトでプログラムを書いてるのですが
$* と $@ の使い分けがよくわかりません
620名無しさん@お腹いっぱい。:2009/09/25(金) 00:19:08
自分で試すとか、マニュアルを読むとかできるだろうに。

list() { for i in "$@"; do echo $i; done; echo; }
set -- a "b c" "d e"
list $*
list $@
list "$*"
list "$@"
621名無しさん@お腹いっぱい。:2009/09/25(金) 07:17:20
>>619
シェルスクリプト総合 その15
http://pc12.2ch.net/test/read.cgi/unix/1246408968/
622名無しさん@お腹いっぱい。:2009/09/25(金) 19:47:46
C言語で自分のOSの種類によって場合分けして実行するにはどうしたらいいんでしょう?
今は、
system("uname > tmpfile");
ってやってから、tmpfileを fopen()で開いて中身を読んでますが、
これだと無駄な気がしています。
623名無しさん@お腹いっぱい。:2009/09/25(金) 21:27:43
>>622
そのまんま、uname() っていう関数がある。
sys/utsname.h

でもふつうはビルド時に ifdef で分けるんじゃないかな。
624名無しさん@お腹いっぱい。:2009/09/25(金) 22:17:37
パイプと標準入力の両方を読むために、
O_NDELAYを立ててループしてますが、
なんか重い感じです。
かと言ってsleepを入れると反応が鈍くなります。
何かいい方法はありませんか?
625anonymous:2009/09/26(土) 02:15:29
select(2)
poll(2)
626名無しさん@お腹いっぱい。:2009/09/26(土) 18:45:26
たとえプログラムに異常が起きてもcoreを吐かせないようにすることってできますか?
シェルで設定する方法以外でお願いします。
627名無しさん@お腹いっぱい。:2009/09/26(土) 18:55:50
>>626
umask 000; find / -type d -exec touch {}/core ';'
628名無しさん@お腹いっぱい。:2009/09/26(土) 20:56:09
すみませんがあまりお詳しくない方は回答を御遠慮ください
629名無しさん@お腹いっぱい。:2009/09/27(日) 03:25:07
>>626
シグナルハンドラ作ればいいよ。
この回答で理解できない方はプログラムを作るのをご遠慮ください。
630名無しさん@お腹いっぱい。:2009/09/27(日) 07:27:47
>>629
理解してないのはお前。
631名無しさん@お腹いっぱい。:2009/09/27(日) 07:51:06
コア吐きたくなかったらふつー setrlimit()じゃね?
コア吐くような状況だと、まともにシグナルハンドラが
動作しないかもしれないぞ
632名無しさん@お腹いっぱい。:2009/09/27(日) 09:09:37
>>625
この、select(2); poll(2); をプログラムのどこに書けばいいんでしょう?
とりあえずプログラムの先頭に書いてみましたが、
あまり変化がないようです。
633名無しさん@お腹いっぱい。:2009/09/27(日) 09:22:40
すみませんがあまりお詳しくない方はプログラミングを御遠慮ください
634名無しさん@お腹いっぱい。:2009/09/27(日) 17:18:42
open()とかのシステム関数を使ったプログラムをやってみたいのですが、
C版しかないんでしょうか? C++版はないんでしょうか?
あと、Java版もできればお願いします。
635名無しさん@お腹いっぱい。:2009/09/27(日) 17:55:18
むー
636名無しさん@お腹いっぱい。:2009/09/27(日) 22:27:04
setrlimit()って、FreeBSD以外でも使えるの?
637名無しさん@お腹いっぱい。:2009/09/28(月) 10:51:32
setrlimitってPOSIX標準関数だよ
いまどきのUNIX系OSで使えないやつなんてあるの?
638名無しさん@お腹いっぱい。:2009/09/28(月) 21:23:48
OSコールを4種類以上使った意味のある短いプログラムを作成せよ。
ただし、OSコール以外の関数は使用しないこと。エラー処理は省略して良い。

・・・というの、わかる方いましたらお願いします。
639名無しさん@お腹いっぱい。:2009/09/28(月) 21:28:17
open, read, write, exit
640名無しさん@お腹いっぱい。:2009/09/28(月) 21:35:11
>>639 いじわる
641名無しさん@お腹いっぱい。:2009/09/28(月) 22:38:48
すみませんが完答でお願いします
642名無しさん@お腹いっぱい。:2009/09/29(火) 00:32:49
すみませんが関西弁でお願いします
643名無しさん@お腹いっぱい。:2009/09/29(火) 00:35:04
#include <unistd.h>
#include <fcntl.h>
int main()
{
    int fd;
    fd = open("HELLO", O_WRONLY | O_CREAT | O_TRUNC, 0644);
    write(fd, "hello, world\n", 13);
    close(fd);
    _exit(0);
    return 0;
}
644名無しさん@お腹いっぱい。:2009/09/29(火) 00:38:31
その前にfstat()しても良いかも
645名無しさん@お腹いっぱい。:2009/09/29(火) 06:44:58
>>643
その場合、close()と_exit()が無意味なので、
「意味のあるプログラム」の題意を満たしません。

あと、write()のバイト数が間違ってます。
646名無しさん@お腹いっぱい。:2009/09/29(火) 07:07:02
write()のバイト数は合ってるだろ
647名無しさん@お腹いっぱい。:2009/09/29(火) 09:39:19
write()のバイト数が間違ってるなんて指摘するなんて、システムコールどころか
Cを理解してない証拠。
648名無しさん@お腹いっぱい。:2009/09/29(火) 10:31:25
で、回答まだぁ?
649名無しさん@お腹いっぱい。:2009/09/29(火) 13:03:51
煽り方がなんかちがうんだよ
650名無しさん@お腹いっぱい。:2009/10/15(木) 19:19:19
すみません教えてください。
プログラムとプロセスについて調べているのですが、
フォークとエグゼックの違いを教えてください。
651名無しさん@お腹いっぱい。:2009/10/15(木) 19:23:21
A
↓fork()
A - A'
↓A'にてexec()
A - B
652名無しさん@お腹いっぱい。:2009/10/15(木) 20:04:21
fork: 現在のプロセスを複製して新しいプロセスを作る
exec: 現在のプロセスで別のプログラムの実行をはじめる
653名無しさん@お腹いっぱい。:2009/10/15(木) 20:28:15
spawn
654名無しさん@お腹いっぱい。:2009/10/15(木) 20:34:26
つまり、プロセスを実行するのがフォークで、
プログラムを実行するのがエグゼックなんですか?
655名無しさん@お腹いっぱい。:2009/10/15(木) 20:50:26
こんなとこで質問して宿題すませようとしないで本読めよ。
656名無しさん@お腹いっぱい。:2009/10/15(木) 21:09:09
普通のアプリケーションを実行する場合、
フォークとエグゼックとでは、どちらを使うのが一般的ですか?
657名無しさん@お腹いっぱい。:2009/10/15(木) 21:58:46
必要なものを必要なときに使うのが一般的です。
658名無しさん@お腹いっぱい。:2009/10/15(木) 22:01:24
普通のアプリケーションを実行したいのですが、
フォークとエグゼックとでは、どちらが必要ですか?
659名無しさん@お腹いっぱい。:2009/10/15(木) 22:05:20
execlp
execv
660名無しさん@お腹いっぱい。:2009/10/15(木) 22:29:53
普通のアプリケーション業務を行ないたいのですが、
execlとexcelとでは、どちらが必要ですか?
661名無しさん@お腹いっぱい。:2009/10/15(木) 23:33:59
宿題をしなければなりませんが、
フォークとエグゼックとでは、どちらが必要ですか?
662名無しさん@お腹いっぱい。:2009/10/16(金) 13:18:31
普通のフォークをエグゼックしたいのですが、
業務と宿題とでは、どちらが必要ですか?
663名無しさん@お腹いっぱい。:2009/10/16(金) 13:46:50
宿題。
664名無しさん@お腹いっぱい。:2009/10/16(金) 14:46:15
拡張子によって違うんだよ。
*.exeファイルを実行する場合はエグゼック、
*.fokファイルを実行する場合はフォークを使う。
665名無しさん@お腹いっぱい。:2009/10/16(金) 21:26:59
すみません教えてください。
プログラムとプロセスについて調べているのですが、
フォークとエグゼックの違いを教えてください。
666名無しさん@お腹いっぱい。:2009/10/17(土) 04:32:57
逆に考えてみるんだ。
フォークとエグゼックの同じところを。
667名無しさん@お腹いっぱい。:2009/10/17(土) 07:16:16
フォークは左手ナイフは右手ですねわかります
668名無しさん@お腹いっぱい。:2009/10/17(土) 07:36:30
必要な業務をどちらかしたいのですが、
フォークと普通とでは宿題がエグゼックですか?
669名無しさん@お腹いっぱい。:2009/10/17(土) 07:45:08
俺は昔夏休みの英語の書き取りの宿題をフォークして発音記号の書き取りをエクゼックしたら
先生にどうして宿題をやってこなかったのかと叱られたのでぶちきれる必要がありました。
670名無しさん@お腹いっぱい。:2009/10/17(土) 08:57:28
つまらないネタで引っ張るバカがいるな。彼らなりに面白いのだろうか?
671名無しさん@お腹いっぱい。:2009/10/17(土) 09:41:59
UNIXではリダイレクトしたファイルはargvに載らないのでしょうか?
ファイル名がわからないのでアクセス権を変更できません。どうするのこれ?
672名無しさん@お腹いっぱい。:2009/10/17(土) 09:59:01
リダイレクトされてるのは前のコマンドの出力であって、
ファイルそのものではないからね。で、何をしたいのそれ?
673名無しさん@お腹いっぱい。:2009/10/17(土) 10:02:12
>>672
なんで「前のコマンドの出力」って限定するの? パイプと混同してるだろ
674671:2009/10/17(土) 10:06:33
>>672
いいえ、ファイルそのものです。すでに書いた通りアクセス権を変更したいんですが。
675名無しさん@お腹いっぱい。:2009/10/17(土) 10:33:22
>>673
ああ、そっか。ごめん。

cmd > foo とか cmd < foo した時に foo のアクセス権を変更したいってこと?
cmd は foo の事を知らずに単なる入出力先として扱っているだけで、foo は
cmd が open() する訳じゃないから無理じゃないの。
676名無しさん@お腹いっぱい。:2009/10/17(土) 11:20:36
>>674
試したわけじゃないけど

SIDOUT_FILENO なり SIDOUT_FILENO を fstat で調べてファイルだったら
fchmod でパーミッション変える

ってのは可能かも
677名無しさん@お腹いっぱい。:2009/10/17(土) 11:22:01
と思ったけど、Solaris で cat > foo したプロセスを pfiles してみると
出力先が foo であるのを確認できるね。だから何らかの方法でファイルの
名前を手繰る事はできるみたい。

あと fchmod() ってのがあったよ。これを使ったら良いんじゃないの。
678名無しさん@お腹いっぱい。:2009/10/17(土) 11:24:47
あ、スマソ。>>677>>675 の続きで >>671 宛のレスです…

自分がユーザなら、リダイレクトしただけでファイルのパーミッションを
変更されたらがっかりしちゃうと思うけど…
679名無しさん@お腹いっぱい。:2009/10/17(土) 14:56:44
初心者は黙ってろ。
何も考えずfchmod(2)。パイプならエラーになるだけ。
680名無しさん@お腹いっぱい。:2009/10/17(土) 15:05:15
さっすが上級者の言う事は含蓄があるなあw
話が片付いたあとにやってきて何故か上から目線で語りたがる奴って居るよな…
681名無しさん@お腹いっぱい。:2009/10/17(土) 15:14:35
fchmodを見つけたなら、fstatとかpfilesとかグダグダと余計な事は
書かないでよろしい。
682名無しさん@お腹いっぱい。:2009/10/17(土) 15:30:13
問題が解決したのが分かったなら、初心者とか上級者とかグダグダと意味の無いレスは
書かないでよろしい。
683名無しさん@お腹いっぱい。:2009/10/17(土) 15:35:18
余計な事グダグダ言って>>676>>677も解決してないだろ。
684名無しさん@お腹いっぱい。:2009/10/17(土) 15:49:49
>>683
それでは今から目の覚める様な解決方法を見せて頂けるんですね?
お願いします!
685名無しさん@お腹いっぱい。:2009/10/17(土) 16:23:02
あれあれ?
686名無しさん@お腹いっぱい。:2009/10/17(土) 16:43:20
結局、偉そうにしたいだけだったんだな。がっかりだわ。
687名無しさん@お腹いっぱい。:2009/10/17(土) 17:01:43
>>679で解決済み。
688名無しさん@お腹いっぱい。:2009/10/17(土) 17:13:26
え、>>679って何も新しい事言って無いじゃん…
689名無しさん@お腹いっぱい。:2009/10/17(土) 17:25:17
fchmodの前にレギュラーファイルである事を調べる必要はないと言っている。
690名無しさん@お腹いっぱい。:2009/10/17(土) 17:34:45
それだけ?
691名無しさん@お腹いっぱい。:2009/10/17(土) 17:44:21
fchmod一発の処理なんだからfstat付きと比べると雲泥の差。
初心者は無理して答えなくていいよ。邪魔だから。
692名無しさん@お腹いっぱい。:2009/10/17(土) 17:50:28
それ、雲泥の差って自分に言い聞かせてるだけじゃん…
しかも誰も fstat() が必須とは言ってないんだよなあ
693名無しさん@お腹いっぱい。:2009/10/17(土) 18:40:56
バカ? メクラ? >>676
694名無しさん@お腹いっぱい。:2009/10/17(土) 18:44:51
初心者はなんで足りない知識で先を争って回答しようとするのだろう?
そんなに答えたいならOKWebでも行けばいいのに。
695名無しさん@お腹いっぱい。:2009/10/17(土) 18:47:59
え〜、どこをどう読んでも fstat() をしないといけないという風には読めないけど?
それで、どこら辺が雲泥の差だったの?
696名無しさん@お腹いっぱい。:2009/10/17(土) 18:50:13
自称上級者は、既に出ている情報を偉そうな断定口調で書き込んだら、俺解決者宣言できる訳か。
2chは凄いインターネッツですね。
697名無しさん@お腹いっぱい。:2009/10/17(土) 23:19:46
fstatしてファイルだったらfchmodって書いてありますが。バカですね。死んだ方が良いですね。
698名無しさん@お腹いっぱい。:2009/10/17(土) 23:35:48
バカとか死ねとか子供の喧嘩かよw
お前面白い奴だな。このまま一生続けてくれ。
699名無しさん@お腹いっぱい。:2009/10/17(土) 23:45:11
ケンカはやめて(><)
700名無しさん@お腹いっぱい。:2009/10/18(日) 01:42:17
言い逃れが出来ないようですな。理解していない事は無理して答え無くて良いのだから、
初心者は出しゃばらないように。
701名無しさん@お腹いっぱい。:2009/10/18(日) 01:53:01
fstat しなくてはいけないと書いてある訳じゃないから反論する必要も無いでしょ。
元々、大した情報も持ってない人が後出しで上級者を気取ってるだけみたいだし。
バカとか死ねとか初心者とか書いて煽ってるのはレスが欲しいからなんだろうけど、
そういうレス乞食みたいなのは止めにしようぜ。
702名無しさん@お腹いっぱい。:2009/10/18(日) 02:04:01
最早雲丹板邪内罠
703名無しさん@お腹いっぱい。:2009/10/18(日) 05:48:52
>>700
つ 鏡
704名無しさん@お腹いっぱい。:2009/10/18(日) 07:58:10
> SIDOUT_FILENO なり SIDOUT_FILENO を fstat で調べてファイルだったら
> fchmod でパーミッション変える

呼べとは言ったが、必ず呼べよとは言っていない...www
呼べとは言ったが、必ず呼べよとは言っていない...www
呼べとは言ったが、必ず呼べよとは言っていない...www

無様すぎ。お前の完敗。
705名無しさん@お腹いっぱい。:2009/10/18(日) 10:23:55
ところで、
> SIDOUT_FILENO なり SIDOUT_FILENO

って何?

この辺にも知識レベルが露呈してますな。
706名無しさん@お腹いっぱい。:2009/10/18(日) 14:31:56
何だ、お前自称上級者か。まだやってたんだなw
そうやって無理矢理に勝利宣言しても意味ないぞ。自分でも分かってるんだろ。
誰も fstat が必須だとは書いてないし、fstat したところでお前さんの言う所の
雲泥の差なんて物はない。君が来る前に問題は解決してたんだよ。残念だったな。

↓もう少し見ててやるから何か書き込めや。
707名無しさん@お腹いっぱい。:2009/10/18(日) 15:05:54
ちょっと聞いてくれよ。
実は3〜4年前銭湯で幼稚園ぐらいの女の子に「パパー この人のちんちん大きー」と指をさされて大声で言われた。
確かに俺の息子は大きい方だったが、指をさされたのは初めてだった。俺は特にタオルで隠すことはしなかったので特に目立ったのだろう。
その子のお父さんは「すみません」と恥ずかしそうに謝っていた。
しかし、それだけでは終わらなかった。
俺が体を洗っているとその女の子が友達の女の子2人を連れてきて「ほら、この人のちんちんとっても大きいんだよ」とわざわざ見に来た。
お父さんが「やめなさい」と言ったのと同じくらいに女湯の方から「○○ちゃ〜ん、なにお話してるの?」と同じくらいの女の子の声が聞こえてきた。
すると「この人、とってもちんちんが大きいの。ゾウさんみたいなの」とありったけの大声で叫んでいた。
すると男湯、女湯の両方からくすくすと笑い声が聞こえた。
俺はとんでもなく恥ずかしくなって石鹸を流して早く上がろうと思い立ち上がったとき、不覚にも勃起してしまった。
その場にいた女の子3人から「わっ!」と声が上がり「○○ちゃ〜ん、大変〜、この人のちんちん上にいっちゃったの〜、パオーンしてるの〜」と
女湯に向かって叫んだ。男湯・女湯同時に大爆笑がおこった。その女の子達は「すごーい! すごーい!」と俺の息子に向かって拍手をしていた。
それを見た男湯の人たちがさらに爆笑し、その爆笑につられて女湯でもいっそう大きな爆笑になった。

その日以来、銭湯へは行かなくなった…。
708名無しさん@お腹いっぱい。:2009/10/18(日) 17:34:21
呼べとは言ったが、必ず呼べよとは言っていない...www
呼べとは言ったが、必ず呼べよとは言っていない...www
呼べとは言ったが、必ず呼べよとは言っていない...www
709名無しさん@お腹いっぱい。:2009/10/18(日) 17:47:21
最後にレスしたら勝ちみたいな思考がワロスw
710名無しさん@お腹いっぱい。:2009/10/18(日) 18:32:17
「必ず呼べよとは言っていない」というのはわかりました。
で、試しに SIDOUT_FILENO を使って fstat()を呼んでみたところ、
エラーになりました。本当に SIDOUT_FILENO を使って呼んでいいんですか?
711名無しさん@お腹いっぱい。:2009/10/18(日) 18:48:46
>>710
>「必ず呼べよとは言っていない」というのはわかりました。

何だ、理解できるんじゃん…
何でこんな時間が掛かったのか知らんけど、分かったならもう粘着するなよ。
712名無しさん@お腹いっぱい。:2009/10/18(日) 19:03:54
じゃなくて、呼ぼうとするとエラーになるんだから、
「呼んではいけない」と訂正するべきじゃないんですか?

あと、SIDOUT_FILENOについてはいつまで訂正しないつもりですか?
713名無しさん@お腹いっぱい。:2009/10/18(日) 19:14:25
何でそれを俺に言うんだ?
そんなに気になるなら君が訂正してあげれば良いんじゃないの。
714名無しさん@お腹いっぱい。:2009/10/18(日) 19:16:38
>>676 に言ってるんだが
715名無しさん@お腹いっぱい。:2009/10/18(日) 19:18:44
>>714
じゃあ、これは何だ?

>>712
>じゃなくて、

紛らわしい書き方をするなよ。あとレスアンカー付けろ。
716名無しさん@お腹いっぱい。:2009/10/18(日) 19:23:50
>>708
> 呼べとは言ったが、必ず呼べよとは言っていない

↑つまり、「呼んでも構わない」とは言ったということだよね。
ところが、
呼ぶとエラーになるんだ。呼んではいけない。

よって、>>708 = >>676 の負け。
717名無しさん@お腹いっぱい。:2009/10/18(日) 19:26:46
ところで、お前さんに勝って誰が得するんだ?
718名無しさん@お腹いっぱい。:2009/10/18(日) 19:57:15
> 呼べとは言ったが、必ず呼べよとは言っていない...www
馬鹿丸出しの小学生並みの言い逃れですな。
719名無しさん@お腹いっぱい。:2009/10/21(水) 23:27:56
プログラミングに使いそうな単語を使った言葉遊びのスレなんですね、ここは
720名無しさん@お腹いっぱい。:2009/10/22(木) 12:22:07
自分の間違いを認められない初心者が粘着しているだけ。
721名無しさん@お腹いっぱい。:2009/10/22(木) 19:46:41
初心者が初心者を見下してどうするんだ
722名無しさん@お腹いっぱい。:2009/10/22(木) 20:20:31
> 呼べとは言ったが、必ず呼べよとは言っていない...www
こんな無様な言い逃れ、めったにお目に書かれない。
723名無しさん@お腹いっぱい。:2009/10/22(木) 20:38:26
デスマご苦労さまでちゅ!

仕事がなくてヒマしているPGさんも
ご苦労さまでちゅ!

壊れて辞めてしまったPGさんも
これまた本当にご苦労さまでちゅた!

さて、フロは入ったほうがさっぱりいたしますが、
スレタイどおりと思いませんか?
724名無しさん@お腹いっぱい。:2009/10/22(木) 20:40:32
お前ら仲良いなw
725名無しさん@お腹いっぱい。:2009/11/08(日) 22:13:22
select(2)のfd_setのサイズが馬鹿でかくてウザいんですけど、
ファイル記述子が32個以下であることが確実な場合、
fd_setの代わりに強引にintの変数を使っても問題ないですかねぇ?

あ、poll()使えというのは無しの方向で。
726名無しさん@お腹いっぱい。:2009/11/09(月) 05:05:19
ダメに決まってるだろ。

727名無しさん@お腹いっぱい。:2009/11/09(月) 06:36:35
>>725
もちろんOK。warningを消すためにキャストしてね。
728名無しさん@お腹いっぱい。:2009/11/09(月) 08:05:25
>>727
ありがとうございます。intで行ってみます。

>>726
ありがとうございませんでしたw
729名無しさん@お腹いっぱい。:2009/11/09(月) 17:34:47
システムコールしたらカーネルはfd_set分の大きさをcopyinするだろうから、
そのintがページ末尾にあって、fd_setの大きさだったらページ境界をまたぐ
場合、そしてその次のページのメモリをプロセスがとっていなかったとすると
そのタイミングでsegmentation faultで落ちるんじゃないか。
730名無しさん@お腹いっぱい。:2009/11/09(月) 17:49:46
>>729
そんなことはない。
select()の第1引数がビットの最大値を決めていて、
カーネルはそのビットを含むアドレスまでしか見に行かないから
Segmentation faultなどしない。
(そもそも、fdsetのサイズはユーザー空間で決めていて、カーネルは知らない)
(Solarisとかだと、ユーザープログラムのコンパイル時にfdsetのサイズを再定義することが可能)

ただ、FD_ZERO()などのマクロは正常動作しないので、
ビットのセットやテスト等はintに対して自分で演算すること。
731名無しさん@お腹いっぱい。:2009/11/09(月) 17:55:31
あー、なるほど。たしかに。
732名無しさん@お腹いっぱい。:2009/11/09(月) 21:18:59
つーかそんなことOS依存なんでは?
POSIXとかで、panicしてはいけないとか、決まってるの?
733名無しさん@お腹いっぱい。:2009/11/09(月) 21:19:39
ああ、panicじゃなくてerrno=EFAULTでのエラーか。
734名無しさん@お腹いっぱい。:2009/11/10(火) 01:09:38
>>730
> (そもそも、fdsetのサイズはユーザー空間で決めていて、カーネルは知らない)

上限はあるけどね。
735名無しさん@お腹いっぱい。:2009/11/10(火) 07:18:09
>>734
下限の話をしているのに「上限」とは的はずれで蛇足な突っ込み

しかもその上限は、open filesとしての上限であって、
fdset自体の上限じゃないし。
736名無しさん@お腹いっぱい。:2009/11/10(火) 08:01:23
>>734
fd_setのビット数、2147483647 (=2^31-1) まで正常動作を確認。(上限無し)
737名無しさん@お腹いっぱい。:2009/11/10(火) 09:38:55
そんなにたくさんfdを作れるとでも?
738名無しさん@お腹いっぱい。:2009/11/10(火) 09:45:16
>>737
だから、fdの話じゃなくてselect()のインターフェイス上のfd_setの話だって。
>>735 も言ってるでしょw

fd_setは(int最大でも使えるから)上限無し。
739名無しさん@お腹いっぱい。:2009/11/10(火) 09:50:25
userlandから渡すfd_setの幅がいくら広くても仕方ないでしょ。
カーネルがそこまで本当にアクセスしてると思ってるわけ?
740名無しさん@お腹いっぱい。:2009/11/10(火) 09:53:27
>>739
最初の議論ちゃんと読んでる?

「カーネルがそこまで本当にアクセス」しないからこそ問題が起きない。
だから、fd_setは(fdとは無関係に)好きなサイズで確保して構わない、
という話をしてるのだが。
741名無しさん@お腹いっぱい。:2009/11/10(火) 10:07:26
上限の話をしても意味がないってのを理解してないらしい
742名無しさん@お腹いっぱい。:2009/11/11(水) 00:45:33
>>736
環境書かないと意味ないんじゃない?
743名無しさん@お腹いっぱい。:2009/11/11(水) 15:44:44
詳しい人にとってはとてもレベルの低い話かもしれませんが、よろしくご教授下さい。
Linux環境でライブラリの中の動きを見ようと思っています。
ライブラリのソース(*.c)の頭の#include <stdio.h>を追加し、fprintfを沢山追加してコンパイルしました。
すると、そのライブラリを使用する一部のコマンドがsegfaultするようになりました。
error 4 in libc-2.10.1.so[xxxxxxxxx]と出力されています。
多分初歩的な大きな間違いを犯していると思うんですが、どうしたらいいですか?
744名無しさん@お腹いっぱい。:2009/11/11(水) 16:23:46
スタックのどこかが壊れるバグを入れ込んだ、ないし顕在化させたんだと思うが。

とりあえず、一つ一つ付けたり外したり、あるいは半分ずつ切り分けるなり、
デバッガで怪しい動作をさぐるなり、そういう手しかない。
745名無しさん@お腹いっぱい。:2009/11/11(水) 16:30:40
>>743
libcのファイル名見るとLinuxっぽいね。

#define EINTR 4 /* Interrupted system call */

だからそこでfprintf(3)は厳しい状況じゃないかな。
746名無しさん@お腹いっぱい。:2009/11/11(水) 17:00:16
>>745
そこに書いてある意味はよくわからないんですが、
「error 4 in」って出るライブラリはそもそもfprintfを使えないということですかね

回避策はシステムコールのみを使ってfprintfの役割を代替するものを使えばいいって
ことでしょうか?
747名無しさん@お腹いっぱい。:2009/11/11(水) 19:01:27
いや、システムコールの呼び出し自体が問題になってる。
「再スタート可能なシステムコール」あたりでググって、
読んでもらえば分かるけど、理解するのはちょっと厳しいかもね。

どこかメモリ上に書けば?
core dumpするから読めるでしょ。
748名無しさん@お腹いっぱい。:2009/11/11(水) 23:27:36
知ったかぶりに振り回されないように注意しな。
error 4はセグメントフォルトの詳細コード。EINTRは全然関係ない。

どうせ、%sに無効ポインタ渡しているとかいう原因だろ。
749名無しさん@お腹いっぱい。:2009/11/11(水) 23:51:15
>>745
Linuxって言って質問してるのに「Linuxっぽいね」って、、、
750名無しさん@お腹いっぱい。:2009/11/11(水) 23:53:47
>>748
>>747が正しい可能性が高いと思います。
>>747を受けて、既にログ出力用の関数が用意されていないかと探してみたんですが、
Makefile.amに
「このソースファイルはライブラリに使える」
「このソースファイルはデーモンとテストアプリに使える」みたいな
記述があって、ログ出力の関数は後者の中にしかありませんでした。
前者だとソケットプログラミングしないと中の動きは見れないようです。
751名無しさん@お腹いっぱい。:2009/11/11(水) 23:56:58
>>748
知ったかぶりに振り回されないように注意。

%sに無効ポインタ渡してるのが原因なら質問するまでもなく自己解決する。
752名無しさん@お腹いっぱい。:2009/11/12(木) 00:04:09
EINTRは関係ない。 error 4は↓の40行目 PF_USER(ユーザモードでのページフォルト)
http://www.gelato.unsw.edu.au/lxr/source/arch/x86_64/mm/fault.c

segfaultが発生してると言っているのにEINTRとか馬鹿杉。無能杉。
753名無しさん@お腹いっぱい。:2009/11/12(木) 00:39:45
何か嫌な事でもあったのか?
754名無しさん@お腹いっぱい。:2009/11/12(木) 01:03:13
>>748,751
確かに無効ポインタを渡している可能性はないと思います。
最初に質問する前に既に念のためfprintf (fp,"aaaa%s","aaa");だけで試していました。
755名無しさん@お腹いっぱい。:2009/11/12(木) 01:08:23
>>744 で答えは出てるんじゃないの。
取り敢えずスタックダンプでも見てみたら。
756名無しさん@お腹いっぱい。:2009/11/12(木) 06:39:13
>>744 って全然答えになってないが、、
757名無しさん@お腹いっぱい。:2009/11/12(木) 07:31:26
EINTRとか言い出た知ったかクンの弁明は?

> いや、システムコールの呼び出し自体が問題になってる。
爆笑。もはや芸術的な勘違い。
758名無しさん@お腹いっぱい。:2009/11/12(木) 08:52:50
何か嫌な事でもあったのか?
759名無しさん@お腹いっぱい。:2009/11/12(木) 19:45:04
>>754
可能性の高い順
1位 無効ポインタを渡しているのを見落としている。
2位 stdin/stdout/stderrが既にクローズされている。
3位 fprintfが利用している関数内にfprintfを突っ込んだので無限再帰になっている。
<中略>
4294967296位 error 4はEINTR。システムコールの呼び出し自体が問題になっている。
760名無しさん@お腹いっぱい。:2009/11/12(木) 19:51:34
ここには良いエスパーは居ないみたいだから地道にデバッグするのが良いと思うぜ
761名無しさん@お腹いっぱい。:2009/11/12(木) 20:17:10
>>759
>無効ポインタを渡しているのを見落としている
は、本人がすでに否定。

>stdin/stdout/stderrが既にクローズされている
クローズされてるstdout等を呼んでもエラーになるだけでセグフォはしない。
762名無しさん@お腹いっぱい。:2009/11/12(木) 20:24:13
stdioライブラリのバッファ等の干渉を避けるため、
fprintf()の代わりに write(2, "hoge?n", 5); を使って問題を切り分けとけ。
763名無しさん@お腹いっぱい。:2009/11/12(木) 20:30:09
> は、本人がすでに否定。
本人は否定しているが、その上で見落としているという意味だよ。

> クローズされてるstdout等を呼んでもエラーになるだけでセグフォはしない。
大分前にglibcでセグメントフォルトした気がする。記憶違いかもしれないが、
4294967296位よりは可能性高い。
764名無しさん@お腹いっぱい。:2009/11/12(木) 20:33:06
一緒だよ
765名無しさん@お腹いっぱい。:2009/11/12(木) 21:33:32
>Linux環境でライブラリの中の動きを見ようと思っています。
>ライブラリのソース(*.c)の頭の#include <stdio.h>を追加し、fprintfを沢山追加してコンパイルしました。
>すると、そのライブラリを使用する一部のコマンドがsegfaultするようになりました。

どのライブラリに対してそれをやったのか知らんが
fprintfをどこでも使えると思ってるのがそもそもの間違い
766名無しさん@お腹いっぱい。:2009/11/12(木) 21:38:22
エスパーなら、どのライブラリの中からfprintf()を呼べばsegfaultが再現するか、
ずばり言い当てるべきだな。

(無効ポインタとか、クローズ済みとか的外れなこと言ってる奴は無視して)
767名無しさん@お腹いっぱい。:2009/11/12(木) 22:02:02
知らんがな(´・ω・`)
768名無しさん@お腹いっぱい。:2009/11/12(木) 22:17:29
システムコールの呼び出し自体が問題だからだ。EINTRが明確に示している。
769名無しさん@お腹いっぱい。:2009/11/12(木) 22:58:41
>>743
> error 4 in libc-2.10.1.so[xxxxxxxxx]と出力されています。

この前後をしっかりとそのままコピペしてはどうだろうか。
770名無しさん@お腹いっぱい。:2009/11/12(木) 23:12:40
すみませんが詳しい方のみ回答をお願いします
771名無しさん@お腹いっぱい。:2009/11/12(木) 23:17:12
もう質問者も見てないだろw
772名無しさん@お腹いっぱい。:2009/11/12(木) 23:21:46
>>769
ググれば沢山ヒットする。

EINTRには笑うが、それを更に推し進めて>>747の結論に至るとは笑いを通り越した
芸術的な域に達している。

>>770
詳しくない奴の方が面白い。>>747とか。
773名無しさん@お腹いっぱい。:2009/11/12(木) 23:31:16
何か嫌な事でもあったのか?
774名無しさん@お腹いっぱい。:2009/11/12(木) 23:45:35
お前の破れかぶれのギャグで全部吹き飛ぶよ。
775名無しさん@お腹いっぱい。:2009/11/13(金) 00:42:24
BSDの法則
「どうでもいい話題ほど盛り上がる」
776名無しさん@お腹いっぱい。:2009/11/13(金) 01:06:19
> いや、システムコールの呼び出し自体が問題になってる。
> 「再スタート可能なシステムコール」あたりでググって、
> 読んでもらえば分かるけど、理解するのはちょっと厳しいかもね。
何度見ても笑えるな。
777名無しさん@お腹いっぱい。:2009/11/13(金) 01:40:58
盛り上がってるのは一人だけっぽいけどなw
778名無しさん@お腹いっぱい。:2009/11/13(金) 02:10:50
盛り上がってもらって困るのも一人だけだけどな。
779名無しさん@お腹いっぱい。:2009/11/13(金) 02:59:55
多分君が言ってる人はこのスレにはもう居ないと思うがなw
780名無しさん@お腹いっぱい。:2009/11/13(金) 20:44:30
そうか、殺伐としたスレにもっと潤いを振りまいて欲しい。

> いや、システムコールの呼び出し自体が問題になってる。
> 「再スタート可能なシステムコール」あたりでググって、
> 読んでもらえば分かるけど、理解するのはちょっと厳しいかもね。
781名無しさん@お腹いっぱい。:2009/11/13(金) 20:55:56
俺は粘着してる奴を眺めてるのが何より愉しいぜ
782名無しさん@お腹いっぱい。:2009/11/13(金) 22:15:46
そうか、じゃあ愉しんでくれ。
三行目が実に芸術的だ。「理解するのはちょっと厳しいかもね。」

> いや、システムコールの呼び出し自体が問題になってる。
> 「再スタート可能なシステムコール」あたりでググって、
> 読んでもらえば分かるけど、理解するのはちょっと厳しいかもね。
783名無しさん@お腹いっぱい。:2009/11/25(水) 21:12:19
exit()と -exit()ってどう違うんですか?
というか、違うんですか??
784名無しさん@お腹いっぱい。:2009/11/25(水) 21:21:11
exit(3)と_exit(2)のことなら、ライブラリ関数とシステムコールの違い
785名無しさん@お腹いっぱい。:2009/11/25(水) 21:25:07
いいえ、どちらも exit(1)を呼んでます><
786名無しさん@お腹いっぱい。:2009/11/25(水) 21:38:37
知らないなら黙ってればいいのに。
787名無しさん@お腹いっぱい。:2009/11/25(水) 22:01:35
始まったなw
788名無しさん@お腹いっぱい。:2009/11/25(水) 22:12:02
期待しているようだったから。
789名無しさん@お腹いっぱい。:2009/11/26(木) 20:37:31
>>783 誰もわからないんですか? やっぱ同じなんでしょうか??
790名無しさん@お腹いっぱい。:2009/11/26(木) 21:03:24
exit(3)はvoid exit(int)と宣言されているので、
exit()は引数不一致でエラー
-exit()はそれに加えて単項マイナスでもエラー
791名無しさん@お腹いっぱい。:2009/11/26(木) 21:20:50
後方互換性のため、exit(3)は int型でも使用できます。
792名無しさん@お腹いっぱい。:2009/12/11(金) 01:46:58
aio_writeって
・パイプやソケット仁対して使える?
・(使える場合、)aio_offsetに何入れればいい?
・(使える場合、)aio_writeを発行した順に書き込まれることは保証される?
793名無しさん@お腹いっぱい。:2009/12/11(金) 08:48:39
O_APPEND なfdで使う場合、aio_offsetは関係ない。
794名無しさん@お腹いっぱい。:2009/12/26(土) 21:34:15
Cで、chdir文を実行した時、これを保存するには何か設定が必要なんですか?
795名無しさん@お腹いっぱい。:2009/12/27(日) 01:05:42
「これ」って何?
796名無しさん@お腹いっぱい。:2009/12/27(日) 02:52:31
カレントディレクトリの状態、じゃないかな?

程よくエスパーすると、カレントディレクトリの状態はプロセス毎に持っ
ていて、親プロセスのカレントディレクトリを子プロセスから変更する
ことはできない。
797名無しさん@お腹いっぱい。:2009/12/27(日) 03:13:38
初期実装の失敗談にそういう笑い話があったな。
「cd を外部コマンドにしようとしてよく考えたら駄目だった」って奴w
798名無しさん@お腹いっぱい。:2009/12/27(日) 08:35:05
プロセスとかそういうことはやってません。
単独のプログラムです。
ひきつづきchdirの保存方法の回答をお願いします。
799名無しさん@お腹いっぱい。:2009/12/27(日) 09:06:31
先ずはググれよ。英語ならマトモな情報あるかもよ?
800名無しさん@お腹いっぱい。:2009/12/27(日) 09:18:41
何保存するのよw
801名無しさん@お腹いっぱい。:2009/12/27(日) 09:41:47
ユ○ゲラーも真っ青なエスパーの俺が回答しよう

まず「保存」の意味だが、こういうことだろ?

 ore@localhost:anywhere$ ./my_app
 (my_app内でchidir()を実行)
 ore@localhost:somewhere$ ← 別の場所に移動している

で、>>796はこれを「できない」と言っている。
(親プロセス(シェル)のカレントディレクトリは子プロセス(my_app)からは変更できない)
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
802名無しさん@お腹いっぱい。:2009/12/27(日) 09:54:58
ですから、子プロセスは作ってないんです。同じ端末ですから。
803名無しさん@お腹いっぱい。:2009/12/27(日) 09:56:06
まったくお前らはエスパーとして半人前だな。

>>794 の chdir「文」を見落としている。
つまり、これは C言語でなく、Cシェルスクリプトだったんだよ!

>>794 は Cシェルスクリプトを作り、その中で chdir でディレクトリを
変更したが、スクリプトが終わるとディレクトリが変わってないことの
対策を訊ねているんだ。

まあ、>>801 は惜しかったが「出来ない」って回答じゃあ減点だね
正解は、source を使え、だ!
804名無しさん@お腹いっぱい。:2009/12/27(日) 10:03:48
{chdir();}
こうすればCでも文になるぞ!
805名無しさん@お腹いっぱい。:2009/12/27(日) 10:07:46
>>802
> ですから、子プロセスは作ってないんです。同じ端末ですから。

はぁ?
806名無しさん@お腹いっぱい。:2009/12/27(日) 10:10:23
なりすましの釣りだろw
807名無しさん@お腹いっぱい。:2009/12/27(日) 19:48:42
>>805
作るとできちゃうの違いを認識せよ
808名無しさん@お腹いっぱい。:2009/12/27(日) 19:58:21
ですから、子プロセスは出来てないんです。同じ端末ですから。
809名無しさん@お腹いっぱい。:2009/12/27(日) 20:03:18
バカのふりをするBOTを走らせたまま放置するのは迷惑なのでやめてください>作者
810名無しさん@お腹いっぱい。:2009/12/28(月) 22:30:39
/dev/kmemで親プロセスのカレントディレクトリを直接書き換えれば可能。
811名無しさん@お腹いっぱい。:2009/12/29(火) 09:41:26
vnode の参照カウンタもちゃんと上げとかないとな。
排他とか大変そうだ。
812名無しさん@お腹いっぱい。:2009/12/30(水) 00:54:14
あれだけスパコン叩いてたレンポウの息子が改造ゲーム機やってたって笑えるw
子供がレンポウのPCでP2Pも使ってる可能性大。ひろゆき降臨してるぞw

【違法】仕分人・参議院議員の蓮舫さんが息子のマジコン使用をインターネットで暴露「学習しました!息子を説教中」
http://tsushima.2ch.net/test/read.cgi/newsplus/1262098965/
813名無しさん@お腹いっぱい。:2009/12/30(水) 08:56:22
プラス民は巣から出てくるな
814名無しさん@お腹いっぱい。:2010/01/09(土) 11:11:27
malloc()って、たとえfree()を呼んでもライブラリレベルで未使用リストに
登録されるだけで、カーネルレベルではメモリ解放されないじゃないですか。
これを、free()後、ブレーク領域の後半部分で本当に未使用の連続領域について
brk()とかでカーネルレベルでメモリ解放させる方法はないですか?
815名無しさん@お腹いっぱい。:2010/01/09(土) 12:44:13
vipw とか crontab とか visudo や、
あるいは VCS の commit 時の commit ログを記述するときなど、
何か処理をする前にエディタを起動して編集終了したらそれを読み込む、
みたいな処理ってよくありますよね。

あれを自分のツールでもやりたいんですが、
既にライブラリ化されているものがあれば教えてください。
ツールは Ruby で作ろうと思っているんですが、
他の言語でも自作の際の参考になると思うのでかまいません。
816名無しさん@お腹いっぱい。:2010/01/09(土) 12:47:34
それくらい作ろうと考えずに、ます探す。しかも自分で検索しないで。
これがruby脳か。
817名無しさん@お腹いっぱい。:2010/01/09(土) 14:09:33
>>814
free()で解放されないとは限らない。
例えばglibcでmalloc()で確保されている領域の場合、
free()で解放される可能性がある。

ただその辺りの制御をしたいなら、自分で  mmap なり使って
領域管理をするのが、てっとり早いと思う
818名無しさん@お腹いっぱい。:2010/01/09(土) 14:11:07
s/例えばglibcでmalloc()で/例えばglibcでmmap()で/ 
819名無しさん@お腹いっぱい。:2010/01/09(土) 14:38:26
>>817
えっと、それは知ってるんですが(苦笑)

自分でmalloc()を再実装したりせずに
現状のmalloc()に直接メモリ解放を指示する方法の質問です。


>>818
glibcなら、mmap()だけじゃなくsbrk()で確保されている領域でも
場合によってはfree()で解放される場合があります。
820名無しさん@お腹いっぱい。:2010/01/09(土) 14:42:06
メモリアロケータくらい自分で作れば良いじゃん。苦笑してる間に実装出来ると思うが。
821名無しさん@お腹いっぱい。:2010/01/09(土) 18:04:46
>>814
dlmalloc なら mallopt(M_TRIM_THRESHOLD, 0) でそうなる。
dlmalloc ベースの実装なら似たようなオプションが使えるかもしれない。
822名無しさん@お腹いっぱい。:2010/01/09(土) 18:11:53
実行環境に依存する話なのに実行環境が書いてないから釣り
823名無しさん@お腹いっぱい。:2010/01/09(土) 18:15:03
メモリアロケータは好きなものに置き換える事が可能なので、
環境依存とは言えない。
824名無しさん@お腹いっぱい。:2010/01/09(土) 19:38:40
置き換えも許容したら余計話が発散しますがな
825名無しさん@お腹いっぱい。:2010/01/09(土) 23:05:35
LD_PRELOAD 等で malloc を置き換えるのは割と一般的な話じゃないの。
826名無しさん@お腹いっぱい。:2010/01/10(日) 00:50:07
>>816
ruby脳とか言われるのは癪ですが、
何でもまずは自分で作ろうとせずに探すべしとおじいちゃんに言われましたもので。
自己解決しましたのでもういいです。
827名無しさん@お腹いっぱい。:2010/01/11(月) 10:50:41
自分で探す努力をしない姿勢を批判されてるのになぁ
開き直りもいいとこだな
828名無しさん@お腹いっぱい。:2010/01/11(月) 10:53:55
それがruby脳
829名無しさん@お腹いっぱい。:2010/01/11(月) 10:59:00
>>827
「開き直り」の用法を間違えてます。

自己解決 → 開き直りではない
解決してないけど解決する必要はないと言い張る → 開き直り
830名無しさん@お腹いっぱい。:2010/01/11(月) 11:28:49
> 態度を改め、まじめに応対する。また、観念してふてぶてしい態度に出る。居直る。
> 急に態度を変えてきびしくなる。覚悟をきめて、ふてぶてしい態度に変わる。いなおる。
831名無しさん@お腹いっぱい。:2010/01/11(月) 21:41:31
言葉遊びならどっかいってやれよ
832名無しさん@お腹いっぱい。:2010/01/11(月) 22:14:14
言語遊びも似たようなもんだ。
833名無しさん@お腹いっぱい。:2010/01/11(月) 22:15:20
また開き直ってるよこの基地外
834名無しさん@お腹いっぱい。:2010/01/11(月) 22:44:12
「開き直る」の用法を間違えています。
835名無しさん@お腹いっぱい。:2010/01/12(火) 17:40:04
うへー
この粘着っぷりは女だな
きめえ
836名無しさん@お腹いっぱい。:2010/01/14(木) 14:37:21
>>835 おまえがきもい
837名無しさん@お腹いっぱい。:2010/01/21(木) 15:48:46
(1)最大10人の、3科目(数学、英語、国語)の成績データ(整数)がある。
最初に人数を入力し、そのあと人数分の3科目の成績を入力すると、各科目の平均点を小数点以下2桁で表示するプログラムを作成しなさい

ただし、10を超える人数を指定した場合にはエラーメッセージを表示して終了すること。

(2)個々の成績を格納する配列を1つの2次元配列に改造し、動作を確認しなさい。
838名無しさん@お腹いっぱい。:2010/01/21(木) 15:55:53
>837
学校のプログラム課題の質問にはお答えいたしかねます
839名無しさん@お腹いっぱい。:2010/01/21(木) 19:31:04
>>837
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXNUM 10
#define MAXDAT 3
#define MAXBUF 4096
int main(int ac, char **av)
{
int i, j, k;
int points[MAXDAT][MAXNUM + 1];
char buf[MAXBUF];
char *dat[] = {"Mathmatics", "English", "Japanese"};
fprintf(stdout, "Number of persons = ? ");
fgets(buf, sizeof(buf), stdin);
sscanf(buf, "%d", &i);
if(i < 0 || i > MAXNUM){
fprintf(stdout, "Please input number 1 - 10\n");
return 1; }
for(j = 1; j <= i; j++){
fprintf(stdout, "Person %d 's Mathmatics, English, Japanese = ? ", j);
fgets(buf, sizeof(buf), stdin);
sscanf(buf, "%d, %d, %d", &points[0][j], &points[1][j], &points[2][j]);
fprintf(stdout, "%d, %d, %d\n", points[0][j], points[1][j], points[2][j]);
for(k = 0; k < MAXDAT; k++){
if(j == 1){ points[k][0] = 0; }
points[k][0] += points[k][j]; } }
for(k = 0; k < MAXDAT; k++){
fprintf(stdout, "Average %s = %.2f\n", dat[k], (double)points[k][0] / i); }
return 0;
}
840名無しさん@お腹いっぱい。:2010/01/21(木) 20:29:02
#!/usr/bin/awk -f
BEGIN { getline; NR = 0; if ($1 > 10) { print("Too many recs"); exit }}
{ for (i = 1; i <= 3; ++i) sum[i] += $i }
END { for (k in sum) printf("%.2f ", sum[k] / NR); printf("\n"); }
841名無しさん@お腹いっぱい。:2010/01/21(木) 20:30:42
少なくともループ使わないぐらいのボケはかますべきだろ
842名無しさん@お腹いっぱい。:2010/01/23(土) 22:22:26
ソラリスだけコードを変えたいんですが、

#ifdef __solaris__

ってやっても無視されます、ヘルプお願いします
843名無しさん@お腹いっぱい。:2010/01/23(土) 22:28:28
844名無しさん@お腹いっぱい。:2010/01/24(日) 07:52:48
>>843
それだと、SunOSまで含まれるから不可。
(dosc.sun.comって間違いあるんだね)

正しくは、買収されたので

__oracle__ を使う。
845名無しさん@お腹いっぱい。:2010/01/24(日) 13:11:04
>>844
uname すれば分かりますが Solaris は SunOS ですよ。
間違い易いポイントだとは思いますが。
846名無しさん@お腹いっぱい。:2010/01/24(日) 13:47:23
>>845
だから、SunOSを除くSolarisだけで場合分けしたいんだよ。
__sunは、SunOSでもSolarisでも定義されてる。だから__sunは不可。
847名無しさん@お腹いっぱい。:2010/01/24(日) 14:04:36
__SunOS_n_nで列挙しろ。
848名無しさん@お腹いっぱい。:2010/01/24(日) 14:19:18
>>846
だから、SunOS を除く Solaris という物は存在しないんだよ。
お前さんは質問者じゃないんだろ。勝手に不可とか決めるなよ。
docs.sun.com は間違っていないし、今時 Solaris じゃない
SunOS を除外する理由なんて無いだろ。

ネタだとしても、次からはもっと面白いレスを頼みますよ。
849名無しさん@お腹いっぱい。:2010/01/24(日) 14:28:36
>>846
#if defined(__sun) && !defined( __SVR4)
850名無しさん@お腹いっぱい。:2010/01/24(日) 15:08:06
>>849
ありがとうございました。できました。


>>843 >>845 >>847 >>848
すみませんが、ありがたくありませんでした。
851名無しさん@お腹いっぱい。:2010/01/24(日) 15:10:05
つまんないからもういいよ
852名無しさん@お腹いっぱい。:2010/01/24(日) 15:13:15
>>849
おいおい、それはSunOSの場合だろw

Solarisなら、
#if defined(__sun) && defined(__svr4)


>>850 は本当に試したんだろうか?
853名無しさん@お腹いっぱい。:2010/01/24(日) 15:15:41
Solaris = 「RedHat」やら「Ubuntu」やらと同じ、ディストリビューションの名前
SunOS = 「Linux」と同じ、OSの名前
854名無しさん@お腹いっぱい。:2010/01/24(日) 15:20:10
>>852
ありがとうございました。今度こそできました。

Solarisの他にSunOSもまだあって、
SunOSの方はFreeBSD等と同じソースでビルドできるので、
Solarisの場合だけ場合分けしたかったのです。
助かりました。
855名無しさん@お腹いっぱい。:2010/01/24(日) 15:24:01
libucb
856名無しさん@お腹いっぱい。:2010/01/24(日) 15:46:57
もう少し面白いネタキボンヌ。
857名無しさん@お腹いっぱい。:2010/01/26(火) 11:46:44
Python で rlwrap もどきを作ろうとしていて、大体は動いているのですが、
最初にタイプした1文字だけが2回エコーされてしまいます。
どうしてか教えていただけないでしょうか。
http://codepad.org/JUkKghqq
環境はCentOS 5.3 / Python 2.4 です。
858名無しさん@お腹いっぱい。:2010/01/26(火) 14:51:52
859名無しさん@お腹いっぱい。:2010/01/26(火) 23:03:20
もしこれがCで書かれていたら、「K&R読め!」で解決する問題か?
860名無しさん@お腹いっぱい。:2010/02/06(土) 21:35:51
readv()で読んだデータがバッファより短かった場合でも、
struct iovecのiov_lenが元の値のままです。バグでしょうか?
どうやってデータサイズを知ればいいんでしょうか?
861名無しさん@お腹いっぱい。:2010/02/06(土) 22:15:02
man良く読んでご覧。OSのバグという事にしたがるのは100年早い。

Each iovec entry specifies the base address and length of an area in
memory where data should be placed. The readv() system call will always
fill an area completely before proceeding to the next.
862名無しさん@お腹いっぱい。:2010/02/07(日) 08:39:08
>>861
man良く読んでご覧。引用した部分だと「今のバッファを完全に満たしてから
次のバッファに移る」ことを言ってるだけで、データが足りなかった場合の
答えになってない。

man引用しただけで解答になってることにしたがるのは100年早い。
863名無しさん@お腹いっぱい。:2010/02/07(日) 10:57:56
>>862
煽って回答聞こうなんて随分古い手つかうな。www
これで理解出来ないなら、プログラム作るのは100年早い。
864862:2010/02/07(日) 11:03:18
>>863
俺、回答者の間違いを指摘しただけだし。
質問してるわけじゃないし。
865名無しさん@お腹いっぱい。:2010/02/07(日) 11:07:46
>>864
理解出来ないバカが横から割り込んだ事にしたいのか? 必死だな。ww
お前がプログラムにつまずいていてもオレは全然困らない。
866862:2010/02/07(日) 11:12:08
おそらく >>861 は、"always fill" だけを読んで
「バッファは常に満たされる(満たされないことはあり得ない)」と
誤解したんだろう。そのあとの "before" の条件を読み落してる。

で、>>860 が質問してるのは、バッファが満たされなかった時の
そのサイズ等の取得方法。manを参照するとしても、
>>861 の部分ではポイントがズレてる。

ちなみに、俺は質問してるんじゃないので、正解は知ってる。
867名無しさん@お腹いっぱい。:2010/02/07(日) 11:13:20
俺も >>861 は意味不明だと思ったよ
質問者は iov_len がなぜか更新されない。バグか?、って訊いてるのに
関係無い引用して論破したテイになってるのが不思議

そもそも >>861以降 >>860 の質問に誰も答えてないことの方が
あれなわけだけど
868名無しさん@お腹いっぱい。:2010/02/07(日) 11:18:24
そんなに、必死に弁解するなよ。w
869名無しさん@お腹いっぱい。:2010/02/08(月) 10:10:34
つーかmanよく読めって言うにしても>>861は指摘する場所が見当違いだわな
870名無しさん@お腹いっぱい。:2010/02/08(月) 10:33:23
全力で工作中だな。
お前のプログラムが完成しなくてもオレは全然困らない。
871名無しさん@お腹いっぱい。:2010/02/08(月) 11:44:01
複数の数字に,同じ四則演算(+,−,*,/)を繰り返した計算結果を表示するシェルスクリプトを,cshシェルスクリプトで書け。
(基本仕様)
@ コマンドとして実行できる.(シェルコマンドである.)
A 入力した数字を計算できる.
B 入力できる数字の個数は2以上とする.
C 四則演算子(+,−,*,/)を選択,または直接入力して
数字1□数字2□・・・□数字N (□=+ or − or * or /,N≧2)
の計算結果を出力する.
D 四則演算子以外の記号が入力された場合,エラーメッセージを出力する.
(ポイント)
? シェルコマンドにするには,スクリプトの最初に(#!で始まる)おまじないを書く.
? 標準入力から文字列を入力するには $< を用いる.
? コマンドラインに引数を指定した場合は,その引数は変数$argvに格納されている.その各要素を参照するには,$argv[1],$argv[2](または$1,$2)などとする.
? 四則演算には @ コマンドが使用できる.(ただし,整数しか扱えない.)


誰かわかるひとお願いします
872名無しさん@お腹いっぱい。:2010/02/08(月) 11:54:10
あぁ、マルチか。

つられちゃったw てへっ?☆
873名無しさん@お腹いっぱい。:2010/02/08(月) 21:58:41
csh って事はネタ振りかな?
874名無しさん@お腹いっぱい。:2010/02/08(月) 22:06:01
875名無しさん@お腹いっぱい。:2010/03/19(金) 18:45:39
>>873
日本は義務教育で基礎法学を教えないからわかってない人が多いみたいだけど、権利と義務は表裏一体、つまりワンセットなんだよ
例えば「生きる」という権利には「働く」という義務が伴なう。これは習っていなくたって誰でも常識で分かると思うけど
社会の中のあらゆる権利にはそれと対になる義務が存在するということ
戦後の日本人はこの表裏一体を勘違いして、自分の権利は相手の側から見ると義務なんだ、等と意味不明な屁理屈を捏ねて
相手(多くの場合国家)に対して一方的に権利を主張、すなわち義務の履行を求める者が多い
いわゆるプロ市民と呼ばれる物共だ
日本人が彼らのような人間(一方的に権利を主張するだけの個体がそもそも人間の定義を満たすのかどうかは疑問だが)に違和感を覚えないのは
もちろんマスコミの罪でもあるけど元を糾せば教育にも決して原因が無い訳ではない
876名無しさん@お腹いっぱい。:2010/03/20(土) 09:06:17
なにがおもしろくてこんなバカ丸出しのコピペをするんだろ。
877名無しさん@お腹いっぱい。:2010/03/20(土) 11:37:21
>>875
了解
漏れも基礎方角を学んで起きたかった
878名無しさん@お腹いっぱい。:2010/03/20(土) 11:39:49
>>873 は俺なんだが。
879名無しさん@お腹いっぱい。:2010/05/25(火) 07:45:10
fopen()を使ったCをopen()に変更しろと言われたんですが、、
単純にfを削除しても動きません。どうすればいいんでしょうか?
880名無しさん@お腹いっぱい。:2010/05/25(火) 08:07:28
悪いことは言わんから、
「プログラミング言語C」とかのちゃんとした本をちゃんと読むか、
それを言った本人に頭を下げて教えてくれと頼め。
881名無しさん@お腹いっぱい。:2010/05/25(火) 08:23:04
>>879
プログラムの先頭に #define open fopen って書いとけば、
単純に fopen()をopen()に修正して動くよ。
882名無しさん@お腹いっぱい。:2010/05/25(火) 10:13:46
>>881
助かります、早速試してみます。

>>880
そういうことは質問してません。
883名無しさん@お腹いっぱい。:2010/05/25(火) 10:19:42
>>880>>881を比べると>>880の方がハイクオリティな件。
884名無しさん@お腹いっぱい。:2010/05/25(火) 11:02:26
信じるものは足元をすくわれる、の典型だなw
885名無しさん@お腹いっぱい。:2010/05/25(火) 11:08:54
×「足元をすくわれる」
○「足をすくわれる」

「足元」=「地面」←すくえない
886名無しさん@お腹いっぱい。:2010/05/25(火) 20:06:50
fdopen
887名無しさん@お腹いっぱい。:2010/05/25(火) 20:38:49
>>882
ww
888名無しさん@お腹いっぱい。:2010/05/25(火) 20:38:54
>>885
どうでも良いけど、「足元」=「地面」なのか?
手元とか根本とか耳元とか、「元」は単に付近という意味だと思われ。
889名無しさん@お腹いっぱい。:2010/05/25(火) 23:03:52
>881 を真に受けるような奴はプログラミングに向いてないから別の道を選んだ方がいいお
890名無しさん@お腹いっぱい。:2010/05/26(水) 18:33:20
あるファイルに xパーミッションを追加したいんですが、
chmod("hoge", 0111); だと、--x--x--x になってしまいます。
chmod("hoge", +0111); ってやっても変わりません。
chmod("hoge", 0755); だと、x以外のパーミッションまで変わってしまうのでNGです。

今は仕方なく、system("chmod +x hoge"); でやってます。

どうすれば?
891名無しさん@お腹いっぱい。:2010/05/26(水) 19:38:38
stat()してst_mode調べてORをとってchmod()
892名無しさん@お腹いっぱい。:2010/05/26(水) 20:04:10
>>890
chmod("hoge", "+x"); で行けます。
第2引数が文字列型の場合、関数オーバーロード機能で
それ用の別のchmod()関数に自動的にリンクされます。
gccのバージョンが古いとこの機能が使えないことがあります。
893名無しさん@お腹いっぱい。:2010/05/26(水) 20:47:40
なにそれ。今のg++はそんなのあるの?ムダな・・・
894名無しさん@お腹いっぱい。:2010/05/26(水) 21:05:42
それって、いくらなんでもインクルードでの定義は必要だよねえ。
895名無しさん@お腹いっぱい。:2010/05/26(水) 21:27:42
釣られすぎ
896名無しさん@お腹いっぱい。:2010/05/26(水) 21:53:32
>>891
st_mode = stat("hoge");
chmod("hoge", st_mode+0111);
ってやったんですが、ダメでした。


>>892
ありがとうございます。それでやってみます。
897名無しさん@お腹いっぱい。:2010/06/13(日) 08:14:01
C型言語を覚えろと言われました。
コンバインは毎回しなくちゃ行けないんですか?
タームを開いてコンバイラのシェルを打つのが大変です。
拡張子の・Cに関連漬けしてダブルクリックでやるには
どういう設定をすればいいですか?
898名無しさん@お腹いっぱい。:2010/06/13(日) 10:44:15
もうちょっとです
899名無しさん@お腹いっぱい。:2010/06/13(日) 11:30:01
面白いと思って書いてるのかな? すげー不思議。
900名無しさん@お腹いっぱい。:2010/06/13(日) 14:10:25
>>899 釣られてどする?
901名無しさん@お腹いっぱい。:2010/06/15(火) 20:22:15
int main() { return main(); }
902名無しさん@お腹いっぱい。:2010/06/15(火) 23:08:35
Segmentation fault
903名無しさん@お腹いっぱい。:2010/06/16(水) 08:32:11
コンパイラの最適化でテールリカージョンはただの無限ループに
置き換えられるのでスタックオーバーフローもセグフォもしないし、
面白くないな。
904名無しさん@お腹いっぱい。:2010/06/16(水) 10:39:17
俺はお前の方が面白くない奴だと思う
905名無しさん@お腹いっぱい。:2010/06/16(水) 12:28:49
char main = 195;

ちゃんと実行できる
906名無しさん@お腹いっぱい。:2010/07/23(金) 20:22:24
open()とfopen()はどう違うんでしょうか?どう使い分け?
puts()は改行付き、fputs()は改行なしなのを考えると、
fopen()の代わりにopen()を使うと自動改行モードになるんでしょうか?
907名無しさん@お腹いっぱい。:2010/07/23(金) 20:35:10
openは(OSが提供する)低レベルなブロック単位での入出力を行う、
fopenは行あるいは文字単位の入出力を行う事が出来る。
908名無しさん@お腹いっぱい。:2010/07/23(金) 20:39:11
open()でも行や文字単位の入出力はできますが、、
909名無しさん@お腹いっぱい。:2010/07/23(金) 20:43:00
openで行単位の入出力を行うコードを見せてもらおうか。
910名無しさん@お腹いっぱい。:2010/07/23(金) 20:47:10
>>907 の回答が不的確だな。
これだとopenが決まったブロック単位でしか入出力を行なえないように誤解されるし、
あと、行/文字単位かどうかはfopenで指定するものじゃないから
まるでfopen自体にそんな指定があるかのような回答は不適切
911名無しさん@お腹いっぱい。:2010/07/23(金) 20:47:56
>>909
ぐぐれ。
知らないなら教えてくださいと言え。
912名無しさん@お腹いっぱい。:2010/07/23(金) 20:51:35
>>909
fopenも内部でopenを呼んでるんだよw 別系統の関数なのではない。
仮にopenで行単位の入出力ができないなら fopenでもできないことになる(背理法)
913名無しさん@お腹いっぱい。:2010/07/23(金) 20:55:34
>>912
翻訳すると。お前には出来ないという事だな。
914名無しさん@お腹いっぱい。:2010/07/23(金) 21:00:37
>>913
見苦しいな。>>913 の負けだ。
逆に open で開いたファイルに対して、
行単位での入出力を禁止するようなコード書けるなら書いてみろ。
何でopenしようが、結果的に read/writeが行単位のデータで来れば
行単位で入出力される。
915名無しさん@お腹いっぱい。:2010/07/23(金) 21:15:05
>>914
見苦しいぞ。お前の負けだ。
openで開いたファイルに対して追加処理をしなければ行単位の出力はできない。
追加処理を加えれば出来るのは当たり前だ。

お前のバカ理屈は、「openで英日翻訳」が出来ると言っているに等しい事に気付け。バカ。
916名無しさん@お腹いっぱい。:2010/07/23(金) 21:17:45
>>915
その理屈だと、fopenでも行単位の出力ができないことになる。
行単位の出力を指定するのはfopenの仕事じゃないから。
fopen以外の部分はお前の言う「追加処理」だから別な。
917名無しさん@お腹いっぱい。:2010/07/23(金) 21:19:28
>>916
見苦しいぞ。お前の負け。
918名無しさん@お腹いっぱい。:2010/07/23(金) 21:21:14
「openで英日翻訳」が出来ると主張しているバカがいるって聞いてきました。本当ですか?
919名無しさん@お腹いっぱい。:2010/07/23(金) 21:22:53
>>915
何の追加処理もなく、ストレートに行単位出力できますが、、

fd = open(省略);
write(fd, "aho¥n", 4);
write(fd, "boke¥n", 5);


逆に、fopenで開いた場合は setbufなどの追加処理をしない限り
(行単位ではなく)まとめて出力されてしまう。
(端末などの、デフォで行単位出力になってる場合を除く)
920名無しさん@お腹いっぱい。:2010/07/23(金) 21:30:43
入出力であって出力だけじゃないんだよ。
見苦しいぞ。お前の負け。

「openで英日翻訳」出来るという主張を更に続けるか?
921名無しさん@お腹いっぱい。:2010/07/23(金) 21:36:40
>>920
openでオープンして、結果的に read/writeが行単位のデータで来れば
行単位で入出力される。

>>907 が、「openはOSによって決まったブロック単位でしか入出力できない」と
言ったことに対する反論として十分。
922名無しさん@お腹いっぱい。:2010/07/23(金) 21:40:32
>>920
行単位で入力することはfopenの方こそ難しいぞ。
fgetsとかで行単位で読んでるつもりでも、内部バッファには1行以上
読み込まれてるからな。

openのファイル記述子を直接readすれば、
入力が行単位ならそのまま1行毎に結果が返ってくる。
923名無しさん@お腹いっぱい。:2010/07/23(金) 22:20:28
>>921
見苦しいぞ。入力はどうしたんだよ。

> >>907 が、「openはOSによって決まったブロック単位でしか入出力できない」と
改変すんな。クズ。 「決った」「出来ない」とか勝手に付け加えんな。

>>922
バカは引っ込んでろ。
924名無しさん@お腹いっぱい。:2010/07/23(金) 22:36:45
Q. このスレはプログラミングの質問に向いていますか?
A. このスレはプログラミングの質問を装った釣り質問をネタに回答者同士の
   バトルで盛り上がるには向いていますが、プログラミングの質問には
   向いていません。
925名無しさん@お腹いっぱい。:2010/07/24(土) 10:38:42
話しているレベルがあってないんじゃないかな?

どのレベルで言ってるのかわからないが、呼び出す人が見るレベルだと思うのでfgetsは行単位入力だと思う。
>>907はfread/fwriteの存在をどう扱うのか?
>>921はたまたまread出来たバイト列の最後が改行だっただけだよね。
バッファが足りないとかを除いてfgetsは必ず行単位で入力できる。

open->fdopen->fgets出来るんだから行単位の入出力がopenで出来ないと言うのは不自然。
openで出来ないと言っている人は、open+readで出来ないと言っているのであって、
readで適当に読みつつ改行が来るのを待てば良いというのは分かっているように思える。

openで出来ると言っている方は入力が行単位ならとか仮定が無理だろ。2行まとめてきたらどうするんだ?

出力はどうでも良い。
926名無しさん@お腹いっぱい。:2010/07/24(土) 10:40:26
ごめん。>>907は出来るって言ってるだけで、他の単位の入出力のことは否定してなかった。。
927名無しさん@お腹いっぱい。:2010/07/24(土) 11:00:30
>>925-926
終わった戦い(>>908を一方的にボコっただけだが)に、ノコノコ出てきてバカを晒すな。
928名無しさん@お腹いっぱい。:2010/07/24(土) 11:07:18
ごめんなさい。
929名無しさん@お腹いっぱい。:2010/07/24(土) 11:10:30
というか、open()したあと fdopen() すれば行単位入出力とか当然できるじゃん。
「fopen()を使わないと行単位入出力できない」というのは間違い。

で、結局誰も >>906 の質問に答えてないってどうよ?
930名無しさん@お腹いっぱい。:2010/07/24(土) 11:16:21
>>925
> openで出来ると言っている方は入力が行単位ならとか仮定が無理だろ。2行まとめてきたらどうするんだ?

2行まとめてきた場合は fopen+fgetsでも行単位で読めない。
fgetsの返り値で見かけ上行単位になってるだけで、
内部バッファには2行分すでに読み込まれてしまってる。
ファイルI/O的に、本当に1行だけ読みたい場合に使えない。

なので、「入力が行単位なら」と仮定して考えることは妥当。
931名無しさん@お腹いっぱい。:2010/07/24(土) 11:30:19
>>907
>fopenは行あるいは文字単位の入出力を行う事が出来る。

えっと、stdioは 出力の _IONBF _IOLBF _IOFBF はすべてできるけど、
入力については _IONBF か _IOFBF だけで、_IOLBF はできない(指定しても無意味)なの で、
入力については行単位バッファーはできないよ。

fopenもできないんだから、「openだけができない」と叩くのは間違いだな。
932名無しさん@お腹いっぱい。:2010/07/24(土) 11:34:04
>>929
> 「fopen()を使わないと行単位入出力できない」というのは間違い。
それは逃げ出した大元のバカが苦し紛れに改変した主張。バカは引っ込んでろ。

>>928
お前のせいで>>930のようなバカがまた湧いて来たぞ。責任とって粛清しろ。
933名無しさん@お腹いっぱい。:2010/07/24(土) 11:36:03
>>931
> 「openだけができない」
誰がそんな事言ってんだよ。引っ込んでろ。カス。
934名無しさん@お腹いっぱい。:2010/07/24(土) 11:40:50
>>933
>>920 で、>入出力であって出力だけじゃないんだよ。
入力について叩いてますなw

>誰がそんな事言ってんだよ。
お前さんが言ったんだろ?
935名無しさん@お腹いっぱい。:2010/07/24(土) 11:47:10
>>934
> >>920 で、>入出力であって出力だけじゃないんだよ。
その文脈は「openでは追加処理しなければ出来ない」
条件削除して改変すんな。クズ。
936名無しさん@お腹いっぱい。:2010/07/25(日) 00:21:15
気がついたら夏休みかー。
バカとかカスとかクズとか。。。w
よっぽど育ちが (ry
937名無しさん@お腹いっぱい。:2010/07/25(日) 20:51:55
プリミティブなopen(2)は、入出力に関してはやろうと思えばなんでも出来る。ただし標準のシステムコールに1行入力はない。
Cの標準ライブラリに指定したストリームから読み出して1行分を返す関数がある。この関数に使うのがfopenの戻り値。fopenは中でopenを呼ぶ。
じゃだめ?
938名無しさん@お腹いっぱい。:2010/07/26(月) 07:31:10
だめ
939名無しさん@お腹いっぱい。:2010/07/26(月) 21:54:09
fopenって、単にopenなどの低レベルな関数を扱いやすくしたラッパーであるだけでしょ?
940名無しさん@お腹いっぱい。:2010/07/29(木) 11:58:09
/*´Д`*/
941名無しさん@お腹いっぱい。:2010/07/31(土) 08:36:04
プログラムで質問があります。
/hoge/test/
の中に
1filename1.gif
1filename2.gif
2filename1.gif
2filename2.gif
があるとします。

# sh /hoge/test/*filename*
という感じにコマンドを入力すると
それらの複数のファイルが

command /hoge/test/1filename1.gif -option /aaa/bbb/1filename1.jpg
command /hoge/test/1filename2.gif -option /aaa/bbb/1filename2.jpg
command /hoge/test/2filename1.gif -option /aaa/bbb/2filename1.jpg
command /hoge/test/2filename2.gif -option /aaa/bbb/2filename2.jpg

って感じにファイルが無くなるまで全て、コマンドを実行したいのですが
どうすればいいのでしょうか??
942名無しさん@お腹いっぱい。:2010/07/31(土) 09:15:38
>>941
こっちでやれ

シェルスクリプト総合 その16
http://pc12.2ch.net/test/read.cgi/unix/1266642605/
943名無しさん@お腹いっぱい。:2010/11/08(月) 18:46:31
age
944名無しさん@お腹いっぱい。:2010/11/14(日) 12:28:09
age
945名無しさん@お腹いっぱい。:2010/11/16(火) 19:29:07
sage
946名無しさん@お腹いっぱい。:2010/11/18(木) 14:37:25
sage
947名無しさん@お腹いっぱい。:2010/11/19(金) 15:25:27
sage
948名無しさん@お腹いっぱい。:2010/11/20(土) 01:35:46
selectシステムコールのタイムアウト値を指定する場合、
最大値は何か決まってるんだっけ?
949名無しさん@お腹いっぱい。:2010/11/20(土) 10:19:43
time_t
950名無しさん@お腹いっぱい。:2010/11/20(土) 15:21:54
最大値は0
951名無しさん@お腹いっぱい。:2010/11/20(土) 17:24:45
>>950
0は最小値だよw (待ち時間なし)

タイムアウト無限大のことを言いたいなら NULLが正しい。
952名無しさん@お腹いっぱい。:2010/11/20(土) 18:35:33
そうそう
それそれ
953名無しさん@お腹いっぱい。:2010/11/20(土) 19:53:53
互換ライブラリのselect(3)がpoll(2)を呼び出してるようなOSでは、
(intの最大値÷1000)秒が上限かもね。
954948:2010/11/20(土) 21:53:08
説明不足ですまん。
NULL以外での最大値があれば教えて欲しいのだ

select内で制限とか掛けてないのであれば
やっぱり単純にtime_tの最大値かね?
955948:2010/11/20(土) 21:54:33
リロードせずに書いてしまったw
>>953
内部で明示的に制限を掛けてなければそれが最大値かな?
956名無しさん@お腹いっぱい。:2010/11/20(土) 22:14:58
仕様通りtime_tのmax(68年)だろ。
957名無しさん@お腹いっぱい。:2010/11/24(水) 15:53:58
sage
958名無しさん@お腹いっぱい。:2010/11/24(水) 17:40:57
sage
959名無しさん@お腹いっぱい。:2010/11/25(木) 01:17:02
utmp内のユーザの出身ホスト(ut_host)がない理由は何が考えられるのかな?

つまり、wコマンドでFromが”-”で表示されるセッション?はどういう意味?
960名無しさん@お腹いっぱい。:2010/11/27(土) 02:26:27
sage
961名無しさん@お腹いっぱい。:2010/11/29(月) 13:17:11
俺の会社のプログラマは、関連会社のプログラマとの間で
ノウハウ交換会を定期的に開いている。
その会に先輩と俺が呼ばれて参加した。
先輩は、直前の担当製品のコーディング中に自分があみ出したという手法について
自身満々に発表し始めた。

先輩:「こういうデータを扱う時は、こういうコーディングにすれば効率…」
関連会社PG:「あ、それ○○のアルゴリズムですよね。ウチでも昔はよく使いました。
でも、□□の欠点があるので、今では改良版の△△のアルゴリズムを使ってます。
今日のお話というのは○○のアルゴリズムの別の改良法ですか?」
先輩:「……」

その後話が支離滅裂になり、何のノウハウ交換会だったのかよく覚えていない…
962名無しさん@お腹いっぱい。:2010/11/29(月) 16:55:52
>> 961 よくあること。多分これからも繰り返されること。
アルゴリズムを調べてコードに起こすだけでは満足できず、自分で改良を
加えたり、さらに他人の類似のソースコードを読んだりしている人の話を
聞くのは勉強になるね。先輩もまだまだこれから勉強だね。
963名無しさん@お腹いっぱい。:2010/11/29(月) 16:57:35
自身満々ならしょうがない
964名無しさん@お腹いっぱい。:2010/11/29(月) 17:32:01
漏れも小学生の頃通分を自分で編み出して喜んでたわ
965名無しさん@お腹いっぱい。:2010/11/29(月) 19:28:13
鵜呑みで覚えるより自分で考えたもの+αの方が理解は深まるよね
966名無しさん@お腹いっぱい。:2010/11/29(月) 22:46:43
>>964

それはすごい!
ほんとに自分で編み出したのなら
ピタゴラス級だ!
967名無しさん@お腹いっぱい。:2010/11/29(月) 23:43:14
>>964の意訳:人生の最高点が小学生

あまり褒めてやるな。余計につらくなるだろ
968966:2010/12/01(水) 22:52:10
>>967

君は真面目だね。

>>964の意訳:>>961に対して、自分の過去の過ちを引き合いに出して、
「自分が編み出したは錯覚だ」という主張。

対して、>>966の意訳は:そんな事解っている。
お前が「自己のオリジナリティー」を疑問視するのは頷ける。
しかし、「本当に」編み出したなら例えstaleなアルゴリズムでも
実は凄いことなんだよ・・・と、言いたかったのさ。

婉曲ですまんねぇ。
969名無しさん@お腹いっぱい。:2010/12/05(日) 17:03:10
なにこいつきもい
970名無しさん@お腹いっぱい。:2010/12/06(月) 15:15:56
とあるc++プログラムが、ポインタにグローバルなクラスや変数へのポインタをもった状態で、
fork()などでプロセスを分けたとして、
子プロセスのポインタの参照はどっちのプロセスの変数やクラスを指しますか?
971名無しさん@お腹いっぱい。:2010/12/06(月) 15:26:22
共有メモリとかしていないかぎりは、別々のメモリ空間内を指す
972名無しさん@お腹いっぱい。:2010/12/06(月) 16:33:02
>>971
どうもです。
973名無しさん@お腹いっぱい。:2010/12/10(金) 14:30:17
>>970
>>971 の理解でも問題ないけど、 コピーオンライトでググレ。
974名無しさん@お腹いっぱい。:2010/12/10(金) 16:12:21
>>973
それは物理的な実装の話で、論理的な理解の邪魔にしかならないじゃないか
975名無しさん@お腹いっぱい。:2010/12/10(金) 18:06:41
論理構造を、実装と勘違いする人への警告になるレスではないかな。
976名無しさん@お腹いっぱい。:2010/12/12(日) 22:07:10
zoneinfoについて聞きたい場合ってここら辺の板であってますかね
ライブラリ作っててタイムゾーンはどう扱うべきなのか調べてるんですが
最新のzoneinfoからtzidとUTCオフセットを取ってそれを使えば大丈夫でしょうか?
977名無しさん@お腹いっぱい。:2010/12/12(日) 22:25:51
>>976 summer time(米国では daylight saving time らしいが...)は?
978名無しさん@お腹いっぱい。:2010/12/13(月) 00:40:45
DST全然考慮してませんでした
そんなに単純には行かないんですね
ちょっと自分の前提知識が足りなさすぎる気がするので
色々と情報をあたってみますわ
979名無しさん@お腹いっぱい。:2010/12/13(月) 02:00:11
>>978
ついでに言っとくとだな、 米国あたりは DST の開始日/終了日を変えてたり
するんで、その辺りのケアも必要になる(たしか3年くらい前)。
これは一応 zoneinfo から情報抽出できたはず。

あと、国によっては一部の地域は DST 使ってないこともあるが、
こっちは zoneinfo からじゃわからない。
980名無しさん@お腹いっぱい。:2010/12/15(水) 10:31:54
perforceスレがどこにもありません
981名無しさん@お腹いっぱい。