UNIXプログラミング質問すれ Part7
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2005/09/22(木) 16:16:45前スレ
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/
ネットワークプログラミング相談室 Port13
http://pc8.2ch.net/test/read.cgi/tech/1109793931/
マルチスレッドプログラミング相談室 その3
http://pc8.2ch.net/test/read.cgi/tech/1098268137/
関連板
http://pc8.2ch.net/unix/
http://pc8.2ch.net/linux/
0002デフォルトの名無しさん
2005/09/22(木) 16:17:57板違いです
UNIX板
http://pc8.2ch.net/unix/
0003デフォルトの名無しさん
2005/09/22(木) 16:18:15The 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/
0004デフォルトの名無しさん
2005/09/22(木) 16:19:26http://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
0005デフォルトの名無しさん
2005/09/22(木) 16:19:44【死ね】configure大嫌い【RMS】
http://pc8.2ch.net/test/read.cgi/tech/1114223450/
0006デフォルトの名無しさん
2005/09/22(木) 16:21:33>ネットワークプログラミング相談室 Port13
>http://pc8.2ch.net/test/read.cgi/tech/1109793931/
>マルチスレッドプログラミング相談室 その3
>http://pc8.2ch.net/test/read.cgi/tech/1098268137/
まったく関連スレじゃないけど?
いいかげんなこと書くなよ
0007デフォルトの名無しさん
2005/09/22(木) 16:23:48どうせ過疎スレになる運命だしUNIX板で引き取るべきだよん。
XWindowプログラミング 質問箱
http://pc8.2ch.net/test/read.cgi/tech/1127340315/
0008デフォルトの名無しさん
2005/09/22(木) 16:27:52UNIX厨が出てくると逆に話がややこしくなるスレだよな。
そこってw
0009デフォルトの名無しさん
2005/09/22(木) 16:33:270010デフォルトの名無しさん
2005/09/22(木) 16:44:30悪いけど板違いだそうです。
以下へ誘導してください。
UNIX板
http://pc8.2ch.net/unix/
0011デフォルトの名無しさん
2005/09/22(木) 16:54:03今になって板違いとか騒いでるのは一体何なの?
0012デフォルトの名無しさん
2005/09/22(木) 16:56:020013デフォルトの名無しさん
2005/09/22(木) 17:00:54おれも移動には賛成するよ。
UNIX板に「プログラミング質問すれ」立てればいい。
0014デフォルトの名無しさん
2005/09/22(木) 17:02:380015デフォルトの名無しさん
2005/09/22(木) 17:10:250016デフォルトの名無しさん
2005/09/22(木) 17:10:390017デフォルトの名無しさん
2005/09/22(木) 17:16:310018デフォルトの名無しさん
2005/09/22(木) 17:20:14で立てようとしたけど無理だった。
どっか依頼してこようか?
0019デフォルトの名無しさん
2005/09/22(木) 17:23:000020デフォルトの名無しさん
2005/09/22(木) 17:24:310021デフォルトの名無しさん
2005/09/22(木) 17:26:19UNIXはダメ!
0022デフォルトの名無しさん
2005/09/22(木) 17:28:410023デフォルトの名無しさん
2005/09/22(木) 17:29:53この板にあるのは、なんか違うんじゃないかって。
0024デフォルトの名無しさん
2005/09/22(木) 17:35:43なぜ?
0025デフォルトの名無しさん
2005/09/22(木) 17:35:52このスレを忘れてもらっては困ります。
責任取ってください。
【死ね】configure大嫌い【RMS】
http://pc8.2ch.net/test/read.cgi/tech/1114223450/
0026デフォルトの名無しさん
2005/09/22(木) 17:36:47がうざいから。
0027デフォルトの名無しさん
2005/09/22(木) 17:37:21理由になってませんね
0028デフォルトの名無しさん
2005/09/22(木) 17:37:54がうざいから。
0029デフォルトの名無しさん
2005/09/22(木) 17:38:11現実問題としてS/N比はUNIX板にある場合の方がずっと高そうだ。
0030デフォルトの名無しさん
2005/09/22(木) 17:39:230031デフォルトの名無しさん
2005/09/22(木) 17:41:08隔離板へどうぞ
0032デフォルトの名無しさん
2005/09/22(木) 17:50:17だな
0033デフォルトの名無しさん
2005/09/22(木) 17:52:52*NIX厨がこの板へ足を運ぶことが問題。
0034デフォルトの名無しさん
2005/09/22(木) 17:59:55厨房ってのはwinにしろunixにしろウザいから俺は賛成だ。
0035デフォルトの名無しさん
2005/09/22(木) 20:33:06プログラミング質問すれ Part1
http://pc8.2ch.net/test/read.cgi/unix/1127388574/
0036デフォルトの名無しさん
2005/09/22(木) 20:42:500037デフォルトの名無しさん
2005/09/22(木) 20:46:410038デフォルトの名無しさん
2005/09/22(木) 20:48:200039デフォルトの名無しさん
2005/09/22(木) 21:07:080040デフォルトの名無しさん
2005/09/27(火) 07:22:39関連してるだろ。てゆうか Port13 建てたの俺だし。
0041デフォルトの名無しさん
2005/09/27(火) 10:50:12プロセスの仮想メモリ使用サイズを取得する
システムコール、ライブラリ関数は無いのでしょうか?
調べたところ、 /proc のファイルを読み込んで解析すれば
望む結果は得られそうなんですが、面倒なうえに
処理速度も問題になりそうな場面で、
関数呼び出しで済ませたいと思っています。
0042デフォルトの名無しさん
2005/09/27(火) 10:50:430043デフォルトの名無しさん
2005/09/27(火) 11:40:48せめてOSくらいは書けよ。だから犬厨と言われるんだ。
それからmanくらい読め。
man getrlimitの一番下に関連する項目がある。
Linuxは知らんが、man getrusageしてみろ。
004441
2005/09/27(火) 11:55:10すいません Linux です。
getrusage は最初に見たのですが、仮想〜で探していたので
ru_maxrss を見つけて、RAMに割り当てられたものしかないのかと
勘違いしてしまいました。
今、再度確認して ru_minflt を見つけました。
これが望む値になりそうで Linux でも使えるようです。
(この変数名の意味はさっぱりわかりませんが。 flt は、 fault ?)
とりあえずこれで試してみます。
ありがとうございました。
0045デフォルトの名無しさん
2005/10/01(土) 17:36:550046デフォルトの名無しさん
2005/10/01(土) 18:31:41remove()
0047デフォルトの名無しさん
2005/10/01(土) 22:01:08とか書いてみる
0048デフォルトの名無しさん
2005/10/02(日) 08:10:030049デフォルトの名無しさん
2005/10/02(日) 08:11:590050デフォルトの名無しさん
2005/10/03(月) 01:39:060051デフォルトの名無しさん
2005/10/03(月) 01:41:190052デフォルトの名無しさん
2005/10/03(月) 01:59:03>このために関数作るのもな。
ハゲワラ
0053デフォルトの名無しさん
2005/10/03(月) 03:25:210054デフォルトの名無しさん
2005/10/03(月) 03:36:22あなたの想像、予想、妄想なんて興味ありませんよ
0055デフォルトの名無しさん
2005/10/03(月) 08:20:36だから何?
0056デフォルトの名無しさん
2005/10/03(月) 08:29:11ls.cの中
0057デフォルトの名無しさん
2005/10/03(月) 10:00:290058デフォルトの名無しさん
2005/10/03(月) 11:19:410059デフォルトの名無しさん
2005/10/03(月) 12:46:05まあ好きにしる
0060デフォルトの名無しさん
2005/10/03(月) 23:17:11chmod(2)
2ってなんですか?
これでは表示されないみたい
0061デフォルトの名無しさん
2005/10/03(月) 23:23:370062デフォルトの名無しさん
2005/10/03(月) 23:44:49aclが関係しているんですか?
0063デフォルトの名無しさん
2005/10/04(火) 04:42:30この strmode() がそれなんだが、そんなに難しいか?
ttp://cvsweb.netbsd.org/bsdweb.cgi/src/lib/libc/string/strmode.c?rev=1.16&content-type=text/x-cvsweb-markup
C言語の勉強をやり直した方がいい気がする…
0064デフォルトの名無しさん
2005/10/04(火) 09:32:49man man
0065デフォルトの名無しさん
2005/10/04(火) 09:35:280066デフォルトの名無しさん
2005/10/05(水) 13:27:590067デフォルトの名無しさん
2005/10/05(水) 13:32:530068えすぱぁ
2005/10/05(水) 13:41:530069デフォルトの名無しさん
2005/10/05(水) 20:28:420070デフォルトの名無しさん
2005/10/05(水) 20:37:22それは何度も繰り返し質問されている議題です
0071デフォルトの名無しさん
2005/10/05(水) 20:50:390072デフォルトの名無しさん
2005/10/06(木) 06:57:430073デフォルトの名無しさん
2005/10/06(木) 07:01:040074デフォルトの名無しさん
2005/10/06(木) 07:18:080075デフォルトの名無しさん
2005/10/06(木) 11:08:09コマンドの終了を待たずに、プログラムを正常に終了するにはどのようにしたらよいのでしょうか?
0076デフォルトの名無しさん
2005/10/06(木) 12:54:46007775
2005/10/06(木) 15:59:390078デフォルトの名無しさん
2005/10/06(木) 16:03:08> そのコマンドが終了する前にプログラムを終了すると、
これは余分な条件。孫と祖父の関係だからゾンビ関係ない。
0079デフォルトの名無しさん
2005/10/06(木) 20:59:26そのうち消えるのに
0080デフォルトの名無しさん
2005/10/06(木) 21:07:200081デフォルトの名無しさん
2005/10/06(木) 21:24:490082デフォルトの名無しさん
2005/10/06(木) 23:27:27>>75
システム的に、正常終了するためにゾンビになってwait()待機中なんだが…
0083デフォルトの名無しさん
2005/10/07(金) 02:50:24Windowsでは経験があるのですが、Unixの場合どのようにすればよいのでしょうか?
0084デフォルトの名無しさん
2005/10/07(金) 03:41:10Windowsと同じ要領でいいと思います。
0085デフォルトの名無しさん
2005/10/07(金) 03:58:30じゃなきゃ、ファイルをロックする。
実行ファイル自身を消す。
/sbinにでも置く、とどめにinit 1をコールする。
0086デフォルトの名無しさん
2005/10/07(金) 04:09:49もう少し詳しく教えていただけないでしょうか?
具体的には、ミューテックスの作成方法がわかりません。
0087デフォルトの名無しさん
2005/10/07(金) 04:41:01Windowsと同じ要領でいいと思います。
0088デフォルトの名無しさん
2005/10/07(金) 04:52:290089デフォルトの名無しさん
2005/10/07(金) 09:19:23ドラエもんなら、/var/run/ドラエもん名.pidにpidを書いとく。
ユーザアプリなら、~/.アプリ名/lockをO_EXCLで作成かな。
0090デフォルトの名無しさん
2005/10/07(金) 09:27:00> ユーザアプリなら、~/.アプリ名/lockをO_EXCLで作成かな。
しょぼ。
0091デフォルトの名無しさん
2005/10/07(金) 09:29:34こんな基本的なシステム関数すら提供されてないとは
0092デフォルトの名無しさん
2005/10/07(金) 09:39:31>こんな基本的なシステム関数すら提供されてないとは
...
009341
2005/10/07(金) 09:42:38/proc/self/statm を scanf するのが最善手なのかもしれません。
0094デフォルトの名無しさん
2005/10/07(金) 14:06:040095デフォルトの名無しさん
2005/10/07(金) 14:08:21それのどこがプログラミングの質問ですか?
つーか、IP Messengerでいいんでない?
0096デフォルトの名無しさん
2005/10/07(金) 14:09:560097デフォルトの名無しさん
2005/10/07(金) 14:33:29Messengerプロトコルを知らん馬鹿は黙ってろ
0098デフォルトの名無しさん
2005/10/07(金) 16:01:530099デフォルトの名無しさん
2005/10/07(金) 16:15:410100デフォルトの名無しさん
2005/10/07(金) 17:38:330101デフォルトの名無しさん
2005/10/07(金) 23:37:05UNIXプログラミングではないと思い込んでいるジジイ
がいるようですね
0102デフォルトの名無しさん
2005/10/08(土) 00:19:190103デフォルトの名無しさん
2005/10/08(土) 00:50:190104デフォルトの名無しさん
2005/10/08(土) 01:10:470105デフォルトの名無しさん
2005/10/08(土) 01:23:140106デフォルトの名無しさん
2005/10/09(日) 11:07:050107デフォルトの名無しさん
2005/10/09(日) 11:14:280108デフォルトの名無しさん
2005/10/09(日) 11:25:49は?
0109デフォルトの名無しさん
2005/10/09(日) 11:30:560110デフォルトの名無しさん
2005/10/09(日) 11:34:26lsがGNUのだとして、(以下*BSDは無視で)
$ ls --color=always | hexdump -C
man terminfo
man ncurses (Linux)
man curses
0111デフォルトの名無しさん
2005/10/09(日) 11:36:580112デフォルトの名無しさん
2005/10/09(日) 11:55:11「は?」じゃねえよボケ!
0113デフォルトの名無しさん
2005/10/09(日) 12:08:430114デフォルトの名無しさん
2005/10/09(日) 20:52:53出力先がファイルかどうかを見て、ファイルだったらエスケープ
シーケンスを吐かないような処理をしてるので、単にリダイレクト
するだけじゃ駄目。>>110 のようにするとか、script コマンドで
ログを取るとかしないと。
0115デフォルトの名無しさん
2005/10/09(日) 21:27:36マニュアル探した方が早いな。
0116デフォルトの名無しさん
2005/10/10(月) 17:28:19てめ、調子こいてんじゃねえぞ?
0117デフォルトの名無しさん
2005/10/10(月) 17:34:140118デフォルトの名無しさん
2005/10/10(月) 18:11:18正直こんな感じ悪いスレならいらないけど。
>107とか変な奴ばっかり。
0119デフォルトの名無しさん
2005/10/10(月) 18:17:19そんなんだからWINDOWSにシェアで負けるんだよ
0120デフォルトの名無しさん
2005/10/10(月) 18:24:43じゃあWindowsのプログラミング技術関係も板違いなのか?
0121デフォルトの名無しさん
2005/10/10(月) 18:25:04それはお前のことだ
0122デフォルトの名無しさん
2005/10/10(月) 18:27:08お前が消えればまったく問題無い事ですね。
0123デフォルトの名無しさん
2005/10/10(月) 18:30:07UNIX板にスレを建てた誘導しようとしていた
キチガイが必死に自作自演していたなw
うまいことキチガイを隔離できててよかったんだがなあ
0124デフォルトの名無しさん
2005/10/10(月) 19:03:33UNIXenでも違いが増えてきたから、少しづつ統一していってくれないかな…
0125デフォルトの名無しさん
2005/10/10(月) 19:13:54Windowsで育ったやつが同じスレで仲良くできるわけがないのだ。
双方キチガイ呼ばわりして荒れるのが自然の摂理。
と、重いマスタ。
0126デフォルトの名無しさん
2005/10/10(月) 19:18:47UNIXに興味がないんだったら用はないはずだと思うけどな。
至って単純な話だと思うんだが。
0127デフォルトの名無しさん
2005/10/10(月) 20:01:51仲良くできないよな
0128デフォルトの名無しさん
2005/10/10(月) 20:02:26ひねた奴ばっかりです
0129デフォルトの名無しさん
2005/10/10(月) 20:06:42そんなことはないだろ
0130デフォルトの名無しさん
2005/10/10(月) 20:09:120131デフォルトの名無しさん
2005/10/10(月) 20:10:52納得。
0132デフォルトの名無しさん
2005/10/10(月) 20:12:390133デフォルトの名無しさん
2005/10/10(月) 20:13:360134デフォルトの名無しさん
2005/10/10(月) 20:19:030135デフォルトの名無しさん
2005/10/10(月) 20:22:33板的にもApacheとかPerlとかUNIX発のsoftwareに恩恵受けている人が多いから。
これが「Mac OSプログラミング質問スレ」だったら大変なことに…
0136デフォルトの名無しさん
2005/10/10(月) 20:28:400137デフォルトの名無しさん
2005/10/10(月) 20:37:38つまりキチガイが煽ったり暴れたりしているわけだ
IDがついていればあっさりあぼーんしているところだな
0138デフォルトの名無しさん
2005/10/10(月) 23:15:49わざわざこっちまで出張して来るなよ。
こういう奴は ID 変えながらカキコするから、ID 制になっても無駄なんだよ。
0139デフォルトの名無しさん
2005/10/10(月) 23:28:07そういう真性以外には効果があるということでよろしいか?
0140デフォルトの名無しさん
2005/10/10(月) 23:38:260141デフォルトの名無しさん
2005/10/10(月) 23:39:090142デフォルトの名無しさん
2005/10/10(月) 23:42:18出張して来るも何も、
ここのスレが建つときに荒らされそうになって危なかったから、
こっちからわざわざIDスレに出向いているんだが?
0143デフォルトの名無しさん
2005/10/11(火) 00:01:410144デフォルトの名無しさん
2005/10/11(火) 00:09:06解決してやるから問題点を述べてください
0145デフォルトの名無しさん
2005/10/11(火) 00:09:590146デフォルトの名無しさん
2005/10/11(火) 00:13:26まず最初にお前がうざい。消えろ
0147デフォルトの名無しさん
2005/10/11(火) 00:13:500148デフォルトの名無しさん
2005/10/11(火) 00:19:55たしかにそろそろアホは放置して
普通の質疑に戻らないといけませんね。
0149デフォルトの名無しさん
2005/10/11(火) 06:32:340150デフォルトの名無しさん
2005/10/11(火) 07:12:22#include <sys/file.h>
#include <stdio.h>
int main(int argc, char *argv[])
{
int lockfd;
if (argc != 2) { // check the argument
printf("usage: ./a.out filename\n");
return 0;
}
lockfd = open(argv[1], O_RDONLY); // open file in read-only mode,
if (lockfd == -1) { // of course, you can use other mode.
printf("cannot open file \"%s\"\n", argv[1]);
return 0;
}
if (flock(lockfd, LOCK_EX | LOCK_NB) == -1) { // try lock the file as non blocking
printf("file is already locked\n");
return 0;
}
printf("file is locked! please enter to exit\n");
getchar(); // wait
return 0; // to unlock and close file is done by operating system :)
}
0151デフォルトの名無しさん
2005/10/11(火) 21:25:330152デフォルトの名無しさん
2005/10/12(水) 07:37:38グローバル変数だらけってイメージしかない
0153デフォルトの名無しさん
2005/10/12(水) 09:16:310154デフォルトの名無しさん
2005/10/12(水) 09:57:59gotoを使ったり長い関数を使いまくっているが目的を達成しているプログラム
0155デフォルトの名無しさん
2005/10/12(水) 11:15:58何の問題もない。
0156デフォルトの名無しさん
2005/10/12(水) 12:24:18それは正しい。だが
「それを使うパターン」というのが人によって違うという点が・・・
0157デフォルトの名無しさん
2005/10/12(水) 13:26:33前提条件がオカシイ。
gotoを使わず短い関数で綺麗に設計された目的を達成しているプログラム
gotoを使ったり長い関数を使いまくっているが目的を達成しているプログラム
0158デフォルトの名無しさん
2005/10/12(水) 13:34:17ま、俺は goto は C++ でも平気で使うけど。
0159デフォルトの名無しさん
2005/10/12(水) 13:38:24それはパターンとは言わないんじゃないか。
>>158
C++だと間に変数定義の関係でジャンプできなかったりするのがちょっと不便ねえ。
まあずらせばいいんだけどさ。
0160デフォルトの名無しさん
2005/10/12(水) 13:50:35ブロックで囲めば飛び越せるよ。
0161デフォルトの名無しさん
2005/10/12(水) 14:07:400162デフォルトの名無しさん
2005/10/12(水) 15:45:090163デフォルトの名無しさん
2005/10/12(水) 20:05:170164デフォルトの名無しさん
2005/10/12(水) 20:06:040165デフォルトの名無しさん
2005/10/12(水) 20:45:01期待に反する答えでしたか?
0166デフォルトの名無しさん
2005/10/12(水) 21:15:16俺はアンチがいるみたいなんだ使わないが。
0167デフォルトの名無しさん
2005/10/13(木) 00:13:03X:
〜S〜
goto Y;
Y:
〜T〜
goto X;
この構造でgotolessにするにはコードのコピーが必要。
この還元不能が有名かな。
けど実際こんなケースはまったく遭遇しなくて、
例外処理の大域脱出、(これは例外や多段breakで済む場合が多い)
エラー処理の一本化、状態マシン実装くらいじゃないかな?
後はCでの多段continue。
0168デフォルトの名無しさん
2005/10/13(木) 00:14:53使い方による。
無計画なグローバル変数と計画的なgotoとかな。
スローガンを自分の中で消化せずにただ叫んでるだけって無意味だと思うが。
発展途上の極東地域の教育がそんな感じだな。旧日本とか北朝鮮とか。
0169デフォルトの名無しさん
2005/10/13(木) 01:43:48gotoを使い短い関数で綺麗に設計された目的を達成しているプログラム
に対する言及が抜けているような気が
0170デフォルトの名無しさん
2005/10/13(木) 01:50:300171デフォルトの名無しさん
2005/10/13(木) 08:54:24あと、末尾再帰のつもりで関数先頭付近にgoto、というのもある。
0172デフォルトの名無しさん
2005/10/13(木) 18:47:48女子供はJavaでも使ってろ
0173デフォルトの名無しさん
2005/10/13(木) 19:10:05ほぼ無くなる筈。
Cの場合はしょーがない。
0174デフォルトの名無しさん
2005/10/13(木) 19:36:38しかも最適化される処理系はほとんど無い。
0175デフォルトの名無しさん
2005/10/13(木) 20:57:530176デフォルトの名無しさん
2005/10/13(木) 23:55:270177デフォルトの名無しさん
2005/10/14(金) 00:47:07あくまで例外時にしか使わんのでパフォーマンスにはこだわらん。
0178デフォルトの名無しさん
2005/10/14(金) 01:28:17そうなんだけどC自体で保証されるわけじゃないからねえ。
gccもLispコンパイラ並にきちんとやってくれるわけじゃなく、場合によって
やらない(Cのセマンティクスを守るため?)ので、ジャンプに最適化するのを
期待する場合は一応アセンブリ出力を確認する必要がある。
>>177
例外機構は例外が発生しなくてもパフォーマンスに影響するんだが……
0179デフォルトの名無しさん
2005/10/14(金) 01:51:02最近の gcc なら実行速度に関しては例外が投げられない限りペナルティは無いよ。
コードサイズが増えるのは逃げられないけど。
0180デフォルトの名無しさん
2005/10/14(金) 02:55:25These two values are not changeable in Linux and their argument size is always fixed to 1 byte. getsockopt is able
to read them; setsockopt will always return ENOPROTOOPT.
とあったのですが実際にsetsockoptで2以上の値を設定してもENOPROTOOPTは返って来なかったので
getsockoptで確認してみたら設定した値になっていました
manが古いってことなんでしょーか
0181デフォルトの名無しさん
2005/10/14(金) 09:29:090182デフォルトの名無しさん
2005/10/14(金) 18:44:22大変申し訳ないのですが、こちらにマルチさせていただきます。
たとえば、sigaction()でSIGSEGVを捕捉したい時に、そのハンドラを
sigaction構造体のsa_handlerで設定しますよね。
でも、これを設定してしまうと、今度はSEGVした時にcoreを吐かなく
なってしまうと思います。
coreを吐かせるようにする(捕捉した関数の動作+元の動作も行いたい)
にはどうしたらいいのでしょうか?
0183デフォルトの名無しさん
2005/10/14(金) 18:48:410184デフォルトの名無しさん
2005/10/14(金) 19:30:42http://ktarn.www.linux.or.jp/JM/html/LDP_man-pages/man2/sigaction.2.html
0185182
2005/10/14(金) 19:31:10sa_flagsにSA_RESETHANDをセットして、ハンドラ内でraiseすればいいのではと思い
やってみたら何とかできたようです。
0186デフォルトの名無しさん
2005/10/14(金) 19:43:120187デフォルトの名無しさん
2005/10/14(金) 20:58:31write()やsend()、recv()などを実行している時にsignalによって割り込まれ、-1が返ってEINTRが設定された時は
-1が返っているのでデータの書き込み、読み込み等は全くされていない
データが途中まで書き込み/読み込み、又は受信/送信されている
どちらが正しいんでしょうか
もし後者のような状態が正しいなら何byteまで書き込み、読み込みされたかを調べる方法はありますか?
0188デフォルトの名無しさん
2005/10/14(金) 21:04:47EINTRがどんなときに設定されるか書いてあるぞ。
0189デフォルトの名無しさん
2005/10/14(金) 23:17:25あの役立たずなmanのことか?あ?
0190デフォルトの名無しさん
2005/10/15(土) 00:48:53write()やsend()、recv()はそれぞれ何バイト読み書きするのかというパラメータを渡しています。
それぞれのシステムコールが失敗してー1が帰ってきたということは、
指定したサイズ分の読み書きに失敗したという意味です。
よって、データの読み書きがまったくされていないかも知れないし、
途中まで読み書きしている途中なのかも知れません。
また、このとき、何バイトまで処理できたかを知ることは出来ませんし、
きちんとしたエラー処理がプログラムでなされていれば、それを知る
必要もないと思います。
0191デフォルトの名無しさん
2005/10/15(土) 00:50:560192デフォルトの名無しさん
2005/10/15(土) 00:52:430193デフォルトの名無しさん
2005/10/15(土) 01:11:38入出力がアトミックでないのならばエラー回復なんて無理ですよね。
0194デフォルトの名無しさん
2005/10/15(土) 01:37:15と(たぶんほとんどの)マニュアルに書いあるんだから
EINTRのときは一切出力してないんじゃないの?
0195デフォルトの名無しさん
2005/10/15(土) 01:43:23嘘を書く前にAPUEを読め
0196デフォルトの名無しさん
2005/10/15(土) 01:47:36>必要もないと思います。
勝手に思っててください。
0197デフォルトの名無しさん
2005/10/15(土) 02:48:54>>188が正しい。
>>187
英語苦手ですか? write(2)には
> EINTR The call was interrupted by a signal before any data was written.
とありますが?
つまり「before any data was written」でなければ、signalで中断されることはないのです。
0198デフォルトの名無しさん
2005/10/15(土) 02:50:16> signalで中断されることはないのです。
言いすぎた…
帰り値が-1になってerrnoがEINTRに設定されることはないのです。
0199デフォルトの名無しさん
2005/10/15(土) 03:05:180200デフォルトの名無しさん
2005/10/15(土) 12:48:310 で帰ってくることを言わなくていいのか?
0201デフォルトの名無しさん
2005/10/15(土) 13:06:39それ以前に、そんな忠告するぐらいだったら最初から全部答えろやカスが。
0202デフォルトの名無しさん
2005/10/15(土) 13:08:260203デフォルトの名無しさん
2005/10/15(土) 13:19:56騙りさんですかw
0204デフォルトの名無しさん
2005/10/15(土) 13:22:09>>201
0205デフォルトの名無しさん
2005/10/15(土) 13:26:49スレ住人の皆様も少しはこのスレの存在意義を考えた発言をお願いします。>ALL
0206デフォルトの名無しさん
2005/10/15(土) 13:30:41そんなあなたも
そんなこと言われなくてもわかってます。
それ以前に、そんな忠告するぐらいだったら最初から全部答えろやカスが。
といわれてしまいます。
0207デフォルトの名無しさん
2005/10/15(土) 13:33:53>最初から全部答えろやカスが
>>190のことか?
0208デフォルトの名無しさん
2005/10/15(土) 13:36:44わからないからってそんなことしちゃダメですよw
0209デフォルトの名無しさん
2005/10/15(土) 13:36:480210デフォルトの名無しさん
2005/10/15(土) 13:39:100211デフォルトの名無しさん
2005/10/15(土) 13:43:430212デフォルトの名無しさん
2005/10/15(土) 13:55:02write(2), send(2), recv(2)のどれか
読めばあっさり解決することだし。
0214デフォルトの名無しさん
2005/10/15(土) 13:58:230215デフォルトの名無しさん
2005/10/15(土) 14:06:54そんなこと言われなくてもわかってます。
それ以前に、そんな忠告するぐらいだったら最初から黙っとれやカスが。
0216デフォルトの名無しさん
2005/10/15(土) 14:43:21You should at first answer it without such a meaningless comment.
You good-for-nothing.
0217デフォルトの名無しさん
2005/10/15(土) 15:09:35reading manual is the only way.
so, reading manual is your way.
if the answer is in the manual.
0219デフォルトの名無しさん
2005/10/15(土) 16:04:56どきやー >>218
あてーは、高知九反田の侠客、鬼龍院政五郎の、鬼政の娘じゃきー、
なめたら、なめたらいかんぜよ!
0220デフォルトの名無しさん
2005/10/15(土) 16:05:46おめでとうございます。
0221デフォルトの名無しさん
2005/10/15(土) 16:06:47なんかスゲェですよ
0222デフォルトの名無しさん
2005/10/15(土) 16:14:07そのコメントをコピペしなおしてあるところがまたイタイ
俺的にはこれ以来の阿呆発言でした(笑)
http://pc8.2ch.net/test/read.cgi/unix/1016025117/54-
022341
2005/10/18(火) 13:41:13毎回オープンしても、オープンしたままで lseek() で巻き戻しても、
処理時間にあまり差がありませんでした。
Linux で自プロセスの現在の仮想メモリサイズ(または物理メモリ使用量)を取得する方法を
/proc ファイルを読む方法以外で知っている人がいたら教えてください。
0224デフォルトの名無しさん
2005/10/18(火) 14:46:10getrusage(2)
0225デフォルトの名無しさん
2005/10/18(火) 22:39:35どなたか知らないでしょうか?
whoコマンド以外で
できればIPのみを出力する感じがいいです・・・
0226デフォルトの名無しさん
2005/10/18(火) 22:55:060227すいません・・・
2005/10/18(火) 22:58:44掲示板にかきこみできなくなっちゃいました。
ボブって奴らしいんですけど。ボブってなんですか?
0228デフォルトの名無しさん
2005/10/18(火) 23:06:220229すいません・・・
2005/10/18(火) 23:07:140230デフォルトの名無しさん
2005/10/19(水) 06:39:130232デフォルトの名無しさん
2005/10/23(日) 03:49:060233デフォルトの名無しさん
2005/10/23(日) 04:04:43/tmp
じゃなくて?
0234デフォルトの名無しさん
2005/10/23(日) 04:39:04ちんぽディレクトリはWindowsならTEMPやらTMPといった環境変数に
書いてあるのが通例だけど、Linuxだとそういうのは無くていきなり
/tmpがちんぽだという暗黙の了解しかない。
>>232
環境変数を参照してTMPやTEMPがあればそちらを、なければ/tmpを
ちんぽディレクトリとすればいいよ。
0235デフォルトの名無しさん
2005/10/23(日) 06:25:47なければ/tmpで、shell scriptでは通常 ${TMPDIR:-/tmp} と書く。
0237デフォルトの名無しさん
2005/10/23(日) 06:56:25/var/tmp はリブートしても消えない*かもしれない*
環境変数TMPDIRがあればそっちを使うと親切、くらいだな。
でも結局OSによるので man hier しる
0238デフォルトの名無しさん
2005/10/23(日) 10:50:50あと、実際にテンポラリファイルを作るときには、
mktemp(3)はセキュリティ的な問題(race condition)があるから使うな。
代わりにmkstemp(3)を使うよろし。
0239デフォルトの名無しさん
2005/10/23(日) 11:30:070240デフォルトの名無しさん
2005/10/23(日) 13:01:24『AAA BBB CCC DDD
AAA BBB SSS DDD
AAA BBB CCC DDD』
ってファイルに対して
SSSが入っているやつ以外の最後にSSSを付け足す
とかってできんの?
0241デフォルトの名無しさん
2005/10/23(日) 13:04:530242デフォルトの名無しさん
2005/10/23(日) 13:09:16ed filename <<EOF
v/SSS/s/$/ SSS/
w
q
EOF
0243デフォルトの名無しさん
2005/10/23(日) 13:31:04UNIXというかperlだが…
0244デフォルトの名無しさん
2005/10/23(日) 14:19:33UNIXはどうだか知らないけど
0245デフォルトの名無しさん
2005/10/23(日) 16:14:360246デフォルトの名無しさん
2005/10/23(日) 17:18:04残っているのはpythonとawkくらいかな
0247デフォルトの名無しさん
2005/10/23(日) 17:34:02条件逆やし、書き換えてないし。
$ sed -e '/SSS/n' -e 's/$/ SSS/' filename
で、条件は合う。けどこれ板違いじゃないか? プログラミングとは言いがたいし。
0248デフォルトの名無しさん
2005/10/23(日) 19:19:000249デフォルトの名無しさん
2005/10/23(日) 19:21:24AAA BBB XXXSSSXXX CCC DDD
みたいな行でダメじゃないか
0250デフォルトの名無しさん
2005/10/23(日) 19:28:18意味わかんねえ。何がダメ?
>>243の-aはなくていいが。
0251デフォルトの名無しさん
2005/10/23(日) 19:30:090252デフォルトの名無しさん
2005/10/23(日) 19:33:520253デフォルトの名無しさん
2005/10/23(日) 19:35:42こういうことか?
0254デフォルトの名無しさん
2005/10/23(日) 19:37:47あ、-a忘れた。
perl -ape '{ foreach $i (@F) { next LINE, if $i =~ /^SSS$/; } s/$/ ZZZ/; }'
0255デフォルトの名無しさん
2005/10/23(日) 20:08:440256デフォルトの名無しさん
2005/10/23(日) 21:09:50後ろのnextはなくても大丈夫だね。
単語境界を使うとperlは、
perl -pe '{ next, if /\bSSS\b/; s/$/ XXX/; }'
だな。\bは行頭、行末も大丈夫。
0257デフォルトの名無しさん
2005/10/24(月) 12:22:120258デフォルトの名無しさん
2005/10/24(月) 12:37:500259デフォルトの名無しさん
2005/10/24(月) 13:58:390260デフォルトの名無しさん
2005/10/24(月) 19:34:48GetModuleFileNameと互換性のあるAPIありませんか?
0261デフォルトの名無しさん
2005/10/24(月) 19:37:59その関数の仕様は?
いきなり関数名だけ提示されてそれと互換性云々聞かれてもね。
0262デフォルトの名無しさん
2005/10/24(月) 19:46:30http://www.google.co.jp/search?hl=ja&q=GetModuleFileName&lr=
0263デフォルトの名無しさん
2005/10/24(月) 21:10:39http://www.adl.nii.ac.jp/%7Emoro/unix-programmer/faq-j_2.html#SEC23
ありません
0264デフォルトの名無しさん
2005/10/25(火) 11:27:05鬼車はUcharみたいですし…
0265デフォルトの名無しさん
2005/10/25(火) 11:43:30ググれよ
0266デフォルトの名無しさん
2005/10/25(火) 11:50:120267デフォルトの名無しさん
2005/10/25(火) 12:02:05wchar_tは出来損ない
この型を使った時点で負け
0268デフォルトの名無しさん
2005/10/25(火) 12:41:56間違ってないよ
>>261は回答者の風上にも置けないやつだ
0269デフォルトの名無しさん
2005/10/25(火) 12:46:35ここはUNIXのスレなんだから回答者にはそんな知識は期待されてない。
したがってそういうのは質問者がなるべく情報を提供して回答者の負担を
軽減するべきだし、そうすればこそ答えてもらえる可能性も高くなる。
0270デフォルトの名無しさん
2005/10/25(火) 13:13:580271デフォルトの名無しさん
2005/10/25(火) 13:21:41そんな区別もつかずに逆ギレとは、キティはどうしようもないねえ。
0272デフォルトの名無しさん
2005/10/25(火) 13:34:23この世に不要だよ・・・
0273デフォルトの名無しさん
2005/10/25(火) 13:39:430274デフォルトの名無しさん
2005/10/25(火) 13:40:090275デフォルトの名無しさん
2005/10/25(火) 13:55:48何バイトかを知りたいのですが、statfsしてf_bsizeを見ればいいのでしょうか?
0277デフォルトの名無しさん
2005/10/25(火) 15:09:540278デフォルトの名無しさん
2005/10/25(火) 15:21:56マニュアルぐらい見ろよ、カス。
0279264
2005/10/25(火) 15:22:08結局wchar_tは使わないほうがいいってことなんですかね
0280デフォルトの名無しさん
2005/10/25(火) 15:24:420281デフォルトの名無しさん
2005/10/25(火) 15:31:40逆切れしてるなw
0282デフォルトの名無しさん
2005/10/25(火) 15:42:080283デフォルトの名無しさん
2005/10/25(火) 16:12:08boost::regexは?C++ですが。
サロゲート使わなくていいんなら、wchar_tで問題ないとおもうけど。
0284デフォルトの名無しさん
2005/10/25(火) 18:15:08statfsがあるシステムではそれでも可(某Lの字だけ異端だが実際はほぼ無問題)。
ただしstatfsはPOSIXでは定義されていないので、
POSIXならstatvfsしてf_frsize。またはpathconf(path, _PC_ALLOC_SIZE_MIN)。
>>281
275の質問はまともだろ。質問がまともかどうかもわからないのでは、
自分でもろくな質問ができないのだろうな。かわいそうに。
0285ヽ(´ー`)ノ ◆.ogCuANUcE
2005/10/25(火) 18:59:090286デフォルトの名無しさん
2005/10/25(火) 21:40:44http://laurikari.net/tre/index.html
> TRE is a lightweight, robust, and efficient POSIX compliant regexp matching library with some exciting features such as approximate (fuzzy) matching.
0287264
2005/10/25(火) 23:15:36ありがとうございます
>>283
「Cのライブラリ」と書くのを忘れてました。すいませんでした。
携帯からで出来るだけ文章を短くしようとしていたとは言え
こんな重要なことを書き忘れた自分の無能さに鬱
0288デフォルトの名無しさん
2005/10/26(水) 00:03:23文字コードとは変換できるが)、wchar_t は使わない方が良い。
0289デフォルトの名無しさん
2005/10/26(水) 00:07:57Lの字しか知らんバカ
0290デフォルトの名無しさん
2005/10/26(水) 04:48:08> 任意の文字コード <-> wchar_t の変換
(゚Д゚)ハァ?
wchar_tて型ですが変換するんですかあ?
0291デフォルトの名無しさん
2005/10/26(水) 15:00:190292ヽ(´ー`)ノ ◆.ogCuANUcE
2005/10/26(水) 15:02:39何か問題が?
struct statvfs の f_frsize は POSIX 互換だと思うけど。
0293デフォルトの名無しさん
2005/10/26(水) 16:05:250294デフォルトの名無しさん
2005/10/26(水) 18:27:20はいはい。statvfsという答えが出てからそんなこと言ってもなー。
バカはLinux板で遊んでてね。
0295デフォルトの名無しさん
2005/10/26(水) 18:33:36> はいはい。statvfsという答えが出てからそんなこと言ってもなー。
変な人…
0296デフォルトの名無しさん
2005/10/26(水) 18:36:510297デフォルトの名無しさん
2005/10/26(水) 18:56:110298デフォルトの名無しさん
2005/10/26(水) 19:03:570299ヽ(´ー`)ノ ◆.ogCuANUcE
2005/10/26(水) 19:10:140300デフォルトの名無しさん
2005/10/26(水) 19:16:390301デフォルトの名無しさん
2005/10/28(金) 00:53:46>>300
0302デフォルトの名無しさん
2005/10/29(土) 12:41:42(゚Д゚)ポカーン
0303デフォルトの名無しさん
2005/10/30(日) 08:44:420304デフォルトの名無しさん
2005/10/30(日) 23:01:44荒れてきたらスルーしとけ。
0305デフォルトの名無しさん
2005/11/06(日) 14:28:190306デフォルトの名無しさん
2005/11/06(日) 15:29:53禿同。
このスレといいajaxスレといい、明らかに板違いなくせに
ム板に居ついてる香具師が多すぎ。
0307デフォルトの名無しさん
2005/11/06(日) 16:56:510308デフォルトの名無しさん
2005/11/07(月) 16:14:430309デフォルトの名無しさん
2005/11/07(月) 16:18:460310デフォルトの名無しさん
2005/11/07(月) 16:36:06…
helo 2ch.net
250 OK
mail from:<[email protected]>
250 OK
rcpt to:<[email protected]>
250 OK
data
354 Enter mail body, end with '.'
Subject: test
This is a test.
by [email protected]
.
250 OK mail accepted.
quit
0311デフォルトの名無しさん
2005/11/08(火) 05:37:32それで添付ファイルを付ける方法を僕に教えて!
0312デフォルトの名無しさん
2005/11/08(火) 05:50:08OEのメッセージのプロパティ/ソースなどを見れ
0313デフォルトの名無しさん
2005/11/08(火) 08:31:46uuencodeして適当に放り込む。
0314デフォルトの名無しさん
2005/11/08(火) 13:31:03#include <acml_mv_m128.h>
をインクルードしようとすると、
error: '__m128' does not name a type
というエラーが出てコンパイルできません。どのようにしたらよいのでしょうか?
0315デフォルトの名無しさん
2005/11/08(火) 14:00:440316デフォルトの名無しさん
2005/11/08(火) 22:07:15スレ(板?)違いです。
Linux板のくだ質あたりが適切じゃないかと。
0317デフォルトの名無しさん
2005/11/09(水) 00:06:37ありがとうございます。
#include <xmmintrin.h>
を追加したら、エラーは出なくなりました。
ところが別の問題が出て、コンパイルすると
/tmp/ccZFaKu6.o: In function `main':
/tmp/ccZFaKu6.o(.text+0x11): undefined reference to `fastexp'
collect2: ld returned 1 exit status
というエラーが出てコンパイルできません。
コンパイルオプションには
g++ -m64 -I/opt/acml2.7.0/gnu64/include test.cpp -L/opt/acml2.7.0/gnu64/lib -lacml -lg2c -lacml_mv
を付けているのですが、他に何かオプションを付ける必要があるのでしょうか?
0318デフォルトの名無しさん
2005/11/09(水) 00:58:360319デフォルトの名無しさん
2005/11/09(水) 01:08:510320デフォルトの名無しさん
2005/11/09(水) 02:16:040321デフォルトの名無しさん
2005/11/09(水) 04:43:010322デフォルトの名無しさん
2005/11/09(水) 13:03:120323デフォルトの名無しさん
2005/11/09(水) 14:31:27騙された、全くやる気のないbinutilsが居た
/usr/ucbは一体何?
0324デフォルトの名無しさん
2005/11/09(水) 16:51:050325デフォルトの名無しさん
2005/11/10(木) 14:42:30例えばこうゆうプログラムを作って実行します。
int main(void){
int pid;
pid = fork();
if(!pid){
printf("child dakedo owari!\n");
exit(0);
}
printf("parent ikinokori!\n");
sleep(10000);
printf("parent owari!\n");
exit(0);
}
するとsleep(10000)の間中以下のようにゾンビが出来ます。
# ps afx | grep a.out
21716 pts/1 S 0:00 | \_ ./a.out
21717 pts/1 Z 0:00 | \_ [a.out] <defunct>
ここで親(21716)をkill -KILLで終了します。すると子(21717)は残る
と思ったのですがきれいに終了してしまいます。
どうしたらゾンビを残すことが出来ますでしょうか?
0326325
2005/11/10(木) 14:43:160327デフォルトの名無しさん
2005/11/10(木) 15:53:420328325
2005/11/10(木) 16:02:340329デフォルトの名無しさん
2005/11/10(木) 16:05:310331デフォルトの名無しさん
2005/11/10(木) 16:50:230332以下、名無しにかわりましてVIPがお送りします
2005/11/10(木) 16:52:33forkしてwaitしてfork先でforkしてexitすれば最後のforkが生き残る
0333デフォルトの名無しさん
2005/11/10(木) 17:07:28無理でしょ?
0334デフォルトの名無しさん
2005/11/10(木) 17:28:320335以下、名無しにかわりましてVIPがお送りします
2005/11/10(木) 18:05:28>>332の方法で出来るお
(最後のforkの身元引受人がinitになる)
>>334
それをいうならSIGCHLDをSIG_IGN
(移植性なんて見えやしねー)
0336デフォルトの名無しさん
2005/11/10(木) 18:11:03exit をひとつ忘れてませんか?
0337デフォルトの名無しさん
2005/11/10(木) 18:14:43それってゾンビの他に生きたプロセスが残るんだよね?
だめじゃん。
0338以下、名無しにかわりましてVIPがお送りします
2005/11/10(木) 18:20:45・・・あ、できるかも
0339デフォルトの名無しさん
2005/11/10(木) 18:28:090340325
2005/11/10(木) 19:14:08やっぱり無理なんですね…
ただ、不思議なのが、たまにこういうinitの子になってしまう
ゾンビプロセスって出来ることありますよね。
あれは何なんでしょう。
0341デフォルトの名無しさん
2005/11/10(木) 19:18:42いつまでもいるならそれはバグ。
0342デフォルトの名無しさん
2005/11/11(金) 02:12:50マルチスレッドと呼んでいいのかな??
0343デフォルトの名無しさん
2005/11/11(金) 02:13:490344デフォルトの名無しさん
2005/11/11(金) 02:16:49オブジェクト指向で用いるものなのかな
0345デフォルトの名無しさん
2005/11/11(金) 02:20:06それはマルチプロセス。
マルチスレッドは単一のプロセス内で複数スレッドが動くものをそう呼ぶ。
0346デフォルトの名無しさん
2005/11/11(金) 02:22:54素早いレスありがとうございます。
私のUNIX_Cの教科書には、スレッドの説明が載ってないのです
0347デフォルトの名無しさん
2005/11/11(金) 02:28:560348デフォルトの名無しさん
2005/11/11(金) 02:40:090349デフォルトの名無しさん
2005/11/11(金) 02:43:02ごめんね。
http://image.blog.livedoor.jp/riyu3303/imgs/7/e/7e726713.jpg
0350デフォルトの名無しさん
2005/11/11(金) 02:52:06このsageない基地外なんか過去から全部同じ椰子じゃないかとまで思ってしまう。
(ネタがつまらんのが致命的にキモイ)
0351デフォルトの名無しさん
2005/11/11(金) 10:00:45./ \
.| ^ ^ |
| .>ノ(、_, )ヽ、.| <あまり私を怒らせない方がいい
__! ! -=ニ=- ノ!___
/´ ̄ ̄ .|\`ニニ´/ `ヽ
{ .|__  ̄ ̄ヾ }
i;;',,, r---イ /|,、_,, ,',;:',i
.l;';',;,, } /;\ / ヽ / ,;,;;',;l
.|;;',;, } ./;;;,, \ / ;;;;;;ヽ ,,;;','i
i;',, / /;;,',';; ノ--, ',',;;::',',゙i ,,';';i
i;,'; /./,',',';;" / \ ',',',;;,'i ,;',i
/ / i 、 / ヽ ',;::'、| \
ヽヽヽヾ丿 〈 ヽ'' {////
```` ト, i | 、 i´´´
|',',;; } ! ',',;;i
|,','、 / ヽ',',','|
!;;', / !,',;,;'|
0352デフォルトの名無しさん
2005/11/11(金) 12:00:070353デフォルトの名無しさん
2005/11/11(金) 14:46:130354デフォルトの名無しさん
2005/11/11(金) 16:47:17http://images.google.co.jp/images?q=%E3%83%86%E3%83%B3%E3%83%86%E3%83%B3
0355デフォルトの名無しさん
2005/11/11(金) 17:33:060356デフォルトの名無しさん
2005/11/14(月) 19:15:20色とか誰が認識してるわけ?
0357デフォルトの名無しさん
2005/11/14(月) 19:19:190358デフォルトの名無しさん
2005/11/14(月) 19:29:24kterm みたいな端末エミュレータとか。
0359デフォルトの名無しさん
2005/11/14(月) 19:37:010360デフォルトの名無しさん
2005/11/14(月) 23:59:41237 :デフォルトの名無しさん :2005/11/14(月) 23:38:29
さあ話をそらしにかかりました
0361デフォルトの名無しさん
2005/11/16(水) 19:44:11指定DIR配下のファイル削除を行うプログラムを作成しています。
再帰的にファイルを探す処理まで出来ているのですが
肝心のファイルを削除する関数を知りませんでした。おしえてください。
0362デフォルトの名無しさん
2005/11/16(水) 19:50:16子プロセスを生むんだい?スレッドではできないのかい?
0363デフォルトの名無しさん
2005/11/16(水) 20:17:35出来るよ。
fork() を使えば、スレッドに比べれば細かい事を考えなくていいから
サンプルプログラムなんかでよく使われてるだけだ。
0364デフォルトの名無しさん
2005/11/16(水) 21:02:40$make
で、ビルドしたものは、デバッグ可能でしょうか?
gcc -g hoge.c
gccではなくmakeを使ってコンパイルしたものでは勝手はどう変わるのでしょうか?
0365デフォルトの名無しさん
2005/11/16(水) 21:23:53釣りは逝ってよし
0366デフォルトの名無しさん
2005/11/16(水) 21:56:09makefileに書いとけばいい
0367デフォルトの名無しさん
2005/11/16(水) 23:17:54これでうまくいったら教えてくれ
char *unko="a.txt"
system("rm "unko);
0368デフォルトの名無しさん
2005/11/16(水) 23:44:29remove(3)
unlink(2)
0369デフォルトの名無しさん
2005/11/16(水) 23:44:49あなたが無知だから知らないだけ。
0370デフォルトの名無しさん
2005/11/17(木) 00:04:40無知の知。良い言葉だよな。
0371デフォルトの名無しさん
2005/11/17(木) 09:29:590372デフォルトの名無しさん
2005/11/17(木) 12:03:540373デフォルトの名無しさん
2005/11/17(木) 19:07:24ステートメントってありますでしょうか?
0374デフォルトの名無しさん
2005/11/17(木) 20:05:360375デフォルトの名無しさん
2005/11/17(木) 20:22:050376デフォルトの名無しさん
2005/11/17(木) 23:39:01さみしいな。矮小ども。
0377デフォルトの名無しさん
2005/11/18(金) 00:04:190378デフォルトの名無しさん
2005/11/18(金) 00:12:380379373
2005/11/18(金) 00:26:43UNIX(空)で シャットダウン前にwhoを叩いたときに表示されている
ユーザー名のようなIDです。
起動したユーザのIDを取得したいです
0380373
2005/11/18(金) 00:27:580381デフォルトの名無しさん
2005/11/18(金) 00:59:47windowsがユーザーやグループを番号で管理するためのもの
unixのuidやgidの進化版、って認識であってる?
だからgetuid(2)とかかな
0382デフォルトの名無しさん
2005/11/18(金) 01:45:040383デフォルトの名無しさん
2005/11/18(金) 05:31:44> ユーザー名のようなIDです。
「のような」て…
プログラミング向いてないんじゃないの?
0384デフォルトの名無しさん
2005/11/18(金) 10:48:140385デフォルトの名無しさん
2005/11/18(金) 16:14:540386デフォルトの名無しさん
2005/11/18(金) 21:16:020387デフォルトの名無しさん
2005/11/18(金) 21:32:300388デフォルトの名無しさん
2005/11/19(土) 03:50:250389デフォルトの名無しさん
2005/11/19(土) 05:40:21telnetdとかsshdとかxtermとかいろいろ。
0390デフォルトの名無しさん
2005/11/19(土) 09:16:340391デフォルトの名無しさん
2005/11/30(水) 09:22:12./ \
.| ^ ^ | <あまり私を怒らせない方がいい
_| .>ノ(、_, )ヽ、.|___
/´ ̄ ̄_! ! -=ニ=- ノ! `ヽ
i;;',,, r--- .|\`ニニ´/ヾ_,, ,',;:',i
.|;;',;, } ./イ /|;;;;ヽ ,,,'i
i;,'; /./,',',';;;,,\ _ / ',',',;;,'i ,;',i
/ / i 、 ;;" / \ ',;:'、| \
ヽヽヽヾ丿 / ヽ'' {////
```` ト, i | 、 i
0392デフォルトの名無しさん
2005/12/02(金) 22:26:43この流れは
終了
0393デフォルトの名無しさん
2005/12/02(金) 23:23:480394デフォルトの名無しさん
2005/12/04(日) 14:04:510395デフォルトの名無しさん
2005/12/04(日) 14:15:090396デフォルトの名無しさん
2005/12/04(日) 15:16:220397デフォルトの名無しさん
2005/12/04(日) 16:54:430398デフォルトの名無しさん
2005/12/04(日) 23:51:100399デフォルトの名無しさん
2005/12/05(月) 00:15:530400デフォルトの名無しさん
2005/12/05(月) 00:29:330401デフォルトの名無しさん
2005/12/05(月) 00:44:48UNIXサーバにいたっては年々減少しています
0402デフォルトの名無しさん
2005/12/05(月) 00:47:030403デフォルトの名無しさん
2005/12/05(月) 00:47:17荒らす意図がなくてやってるなら以後控えてくれ
0404デフォルトの名無しさん
2005/12/05(月) 01:03:020405デフォルトの名無しさん
2005/12/05(月) 01:04:17そろそろ勘弁してくれ
0406デフォルトの名無しさん
2005/12/05(月) 01:07:00お前何秒でレスしてるんだよw
0407デフォルトの名無しさん
2005/12/05(月) 04:48:120408デフォルトの名無しさん
2005/12/05(月) 06:20:440409デフォルトの名無しさん
2005/12/05(月) 08:10:470410デフォルトの名無しさん
2005/12/08(木) 13:54:46/ \
/ ヽ
l:::::::::. |
|:::::::::: (●) (●) |
|::::::::::::::::: \___/ |
ヽ:::::::::::::::::::. \/ ノ
\ / ♪
/ ::::i \
/ / ::::|_/
\/ ::|
| ::::| キュム
i \ ::::/ キュム
\ |::/
|\_//
\_/
0411デフォルトの名無しさん
2005/12/08(木) 14:00:110412デフォルトの名無しさん
2005/12/08(木) 14:00:360413デフォルトの名無しさん
2005/12/08(木) 14:00:540414デフォルトの名無しさん
2005/12/08(木) 14:08:230415デフォルトの名無しさん
2005/12/08(木) 14:10:01キチガイさんに用はないですよ
0416デフォルトの名無しさん
2005/12/08(木) 21:00:400417デフォルトの名無しさん
2005/12/08(木) 21:39:300418デフォルトの名無しさん
2005/12/08(木) 21:44:030419デフォルトの名無しさん
2005/12/08(木) 22:27:45>>418
いや、今は新しくSTL勉強してる訳だが?
0420デフォルトの名無しさん
2005/12/08(木) 22:30:420421デフォルトの名無しさん
2005/12/08(木) 22:53:43お前まだいたのかよ
0422デフォルトの名無しさん
2005/12/09(金) 01:10:420423デフォルトの名無しさん
2005/12/09(金) 02:07:34また、あなたの言う「メモリ使用量」の意味を明確に
定義しないことには方法を提示できません
0424デフォルトの名無しさん
2005/12/09(金) 09:04:310425デフォルトの名無しさん
2005/12/10(土) 12:50:070426デフォルトの名無しさん
2005/12/10(土) 12:56:130427デフォルトの名無しさん
2005/12/10(土) 14:41:21> 自分のプログラムの実行パスを得たいのですがよろしく。
環境依存。ここに少しだけ載っている。
http://shinh.skr.jp/binary/b2con.html
抜粋すると:
Linux :
readlink("/proc/self/exe")
MacOSX:
_dyld_get_image_name
Win32 :
HMODULE h = LoadLibrary(NULL);
GetModuleFileName(h, buf, 1024);
0428デフォルトの名無しさん
2005/12/10(土) 22:29:21/proc/プロセス番号/psinfo を sys/procfs.h にしたがって読む。
0429デフォルトの名無しさん
2005/12/11(日) 20:26:17>389-390 のご回答で納得なんですが
これって機構を用意しただけで
使うかどうかは特に決められてないもんなの?
0430デフォルトの名無しさん
2005/12/11(日) 21:00:380431デフォルトの名無しさん
2005/12/15(木) 13:17:28UNIXもLinuxも同じと聞いたので教えてください。
ちなみにUNIX系のプログラムはずぶの素人です。
Dual構成のマシンを使い、あるスレッドを指定のCPUでのみ
動作させたいと思ってます。
Win32(VC++)だと「SetThreadAffinityMask()」と言う関数で
提供されているのですが、UNIX(orLinux)では同様の処理は
ありますか?あれば教えて頂きたいのですが。
また参考サイトなんか教えて頂けると幸せです。
宜しくお願いしまふ。
0432デフォルトの名無しさん
2005/12/15(木) 14:27:12お薦めサイトはグーグル
0433431
2005/12/15(木) 14:49:21感謝感激雨あられです。m(__)m
確かにgoogle最強ですね。
助かりました。
0434デフォルトの名無しさん
2005/12/15(木) 21:56:48死ねよ
0435774ワット発電中さん
2005/12/15(木) 22:37:17英語で検索すれば結構引っかかるよ
0436デフォルトの名無しさん
2005/12/16(金) 00:13:18英語のできない中卒にはつらいか・・・
とはいえ、Windowsプログラマでも技術英語読めないんじゃ底辺だよなw
0437デフォルトの名無しさん
2005/12/16(金) 00:15:120438デフォルトの名無しさん
2005/12/16(金) 00:26:22ドキュメント読むくらいのことは自然となんとかなるようになってこね?
0439デフォルトの名無しさん
2005/12/16(金) 00:44:44googleで、キーワード site:linux.or.jp あるいは site:jp.freebsd.orgで検索するとか、
docs.sun.comで検索するとか。
0440デフォルトの名無しさん
2005/12/16(金) 00:51:37解決できない人は疑問しか書き残さない
だから 行き詰ると どの国の言葉でも
出来ないわからない しか検索に引っかからない
ドイツ人は自己解決しても結構まめに回答まで書き残すんだよな
0441デフォルトの名無しさん
2005/12/16(金) 00:56:440442デフォルトの名無しさん
2005/12/16(金) 01:03:14ごめん
フランス人も結構残してた
0443デフォルトの名無しさん
2005/12/16(金) 17:49:12関数で操作するにはどうすればいいですか?
開こうとすると
Can't open : hogehoge
って言われます。
よろしくお願いします。
0444デフォルトの名無しさん
2005/12/16(金) 18:07:290445デフォルトの名無しさん
2005/12/16(金) 18:16:27LargeFile
で検索しなさい
0446デフォルトの名無しさん
2005/12/16(金) 18:20:490447デフォルトの名無しさん
2005/12/16(金) 21:23:11でかいファイルだからってfopen()で失敗するなんてことはない。
0448デフォルトの名無しさん
2005/12/17(土) 23:01:31Tru64 や *BSD なら確かにその通りだが、それ以外の UNIX や
Linux だと、エラーコード EFBIG で fopen() が失敗する。
対処方法は
ttp://www.unix.org/version2/whatsnew/lfs20mar.html
にある。
0449デフォルトの名無しさん
2005/12/19(月) 13:08:02user> ./a.out < a000001.txt > result.txt
で結果をtxt化しているのですが、a000001.txtをa100000.txtまで処理させて
一個一個の結果をresult.txtに足していきたいのです。
どのようにしたら良いのでしょうか?
(初心者なのでお手数おかけします)
ちなみにresult.txtの中身は
1 0 3
2 4 3
3 7 7
4 8 3
5 8 1
6 2 8
7 0 4
8 2 3
となっています。一列目は固定で、順に足していきたいのは2列目と3列目です。
0450デフォルトの名無しさん
2005/12/19(月) 13:18:55$ ./a.out < a000001.txt
がresult.txtの二列目
$ ./a.out < a000002.txt
が三列目ってこと?
>a.outに関する質問です。
「a.outに関する質問」か?
0451449
2005/12/19(月) 13:31:57レスありがとうございます。
a000001.txtは一列目から三列目まで出力されます。
同様にa000002.txtにも一列目から三列目まで出力されます。
10万ある各ファイルの二列目と三列目だけを足していきたいのです。
a.outに関する質問じゃなかったですか(^^;;
0452デフォルトの名無しさん
2005/12/19(月) 14:26:200453デフォルトの名無しさん
2005/12/19(月) 14:31:57シェルプログラミングだと思えばいいよ
>>451
./a.out <$f |head -n 2|tail -n 2 >> result.txt
1〜100000は自力でがんばれ
0454デフォルトの名無しさん
2005/12/19(月) 14:43:09そのheadとtailは意味あるの?
というか列と行間違えてない?
0455デフォルトの名無しさん
2005/12/19(月) 14:56:470456デフォルトの名無しさん
2005/12/19(月) 15:18:200457449
2005/12/19(月) 15:20:05a000001.txtは以下のように出力されたとします。
1 0 3
2 4 3
3 7 7
4 8 3
5 8 1
6 2 8
7 0 4
8 2 3
a000002.txtも以下のように出力されたとします。
1 0 3
2 2 6
3 4 7
4 6 3
5 2 2
6 6 9
7 1 1
8 1 2
0458デフォルトの名無しさん
2005/12/19(月) 15:20:351 0 6
2 6 9
3 11 14
4 14 6
5 10 3
6 8 17
7 1 5
8 3 5
0459449
2005/12/19(月) 15:40:33ご迷惑おかけしました。
0460デフォルトの名無しさん
2005/12/19(月) 16:46:45Cでつくれば?こんなの初心者だって出来るでしょ
0461デフォルトの名無しさん
2005/12/19(月) 16:49:230462デフォルトの名無しさん
2005/12/19(月) 17:09:060463デフォルトの名無しさん
2005/12/19(月) 17:36:23実行は2分くらいかかるかもな。
0464デフォルトの名無しさん
2005/12/19(月) 17:37:360465デフォルトの名無しさん
2005/12/19(月) 21:07:48PerlでもCでもコーディング量はそんなに変わらん気がする
main() {
int loop, i, n, m;
char fn[100];
static long a[9], b[9];
FILE *fp;
for(loop=0; loop<100000; loop++) {
sprintf(fn, "a%06d.txt", loop);
fp = fopen(fn,"r");
while(fscanf(fp, "%d %d %d", &i, &n, &m) == 3)
a[i]+=n;
b[i]+=m;
}
fclose(fp);
}
for(i=1; i<=8; i++)
printf("%d %d %d\n", i, a[i], b[i]);
}
0466デフォルトの名無しさん
2005/12/19(月) 21:11:190467デフォルトの名無しさん
2005/12/19(月) 21:31:170468デフォルトの名無しさん
2005/12/19(月) 21:40:050469デフォルトの名無しさん
2005/12/19(月) 21:40:57だよな
0470449
2005/12/19(月) 21:54:39説明足らずで皆様に混乱を招きました。(特に>>465さんすいません)
a000001.txt(a000001.txtも同様)を自作のプログラムで処理すると、数字が三列ある結果を出力します。
ここで問題となっているのが、私が作ったプログラムでは
while(fgets(str,500,stdin) != NULL){
sscanf (str,"%s %s %s %s %s %s",a,b,c,d,e,f,);
でファイルを読み込ませているので、./a.outした時に一つのファイルしか処理できません。
10万回もa.outは物理的に無理なので、一度に10万個のファイルを読み込んで各一ファイルごとに
処理した結果の2列目と3列目を足していきたいのです。
C言語では無理でしょうか?
0471449
2005/12/19(月) 21:56:26user > ./a.out < a000000.txt > result.txt
で実行しています。(result.txtに数字が3列ある結果が入っています)
0472デフォルトの名無しさん
2005/12/19(月) 22:08:570473デフォルトの名無しさん
2005/12/19(月) 22:18:060474デフォルトの名無しさん
2005/12/19(月) 22:20:210475デフォルトの名無しさん
2005/12/19(月) 23:45:10でいいんじゃないのか?
0476449
2005/12/20(火) 00:04:35皆さんのおかげで無事解決出来ました。
スレ違いもいいとこですが、それにも関わらず丁寧にアドバイスを頂き
本当にありがとうございました。
>>475さん
その方法は前に試していたのですが、Argument list too longと出て
実行できなかったんですよ。
0477デフォルトの名無しさん
2005/12/20(火) 00:20:210478デフォルトの名無しさん
2005/12/20(火) 07:31:32このスレ的な回答だと思うんだけど…
0479デフォルトの名無しさん
2005/12/20(火) 09:57:251.なんでもかんでもフィルタで解決する
というUNIX的プログラミング精神に反するからだろ
ソースの改造は2番目
0480デフォルトの名無しさん
2005/12/20(火) 11:54:070481431
2005/12/22(木) 13:55:24早速使ってみたのですが動作しました。(プロセス単位で。)
ですが最終的にはスレッド単位でCPUの動作を割り振りしたいのです。
ttp://www.linux.or.jp/JM/html/LDP_man-pages/man2/sched_setaffinity.2.html
↑のサイトの「注意」項目で、「各スレッド単位に独立して調整することが
できる。」とあるので、pthread_create()で作成されるスレッド内で、
setaffinity()を行ったのですがCPUの割り振りをしてくれません。
(設定してもいつも同じ方のCPUの負荷が上がってる。エラーは無し。)
またそれ以前の話かも知れませんが、プロセスIDは妥当な値を取得出来る
のですが、createの際のthreadIDが「-1215315313」等と言ったアドレス
っぽい値を取得します。pthread_tってINTの別名じゃないんでしょうか?
setaffinity()の第一引数のpidはスレッドIDでも良いみたいなので、
渡す事が出来れば動くのかな?と思っているのですが・・・。
素人なりにやっているのですが相当苦労してます。orz。
(viも超〜基本しか使えない程度です。)くだらない質問で
申し訳ありませんが、どなたか回答頂けるとうれしいです。
ちなみにOSはRedHatからFedora4に変えました(別に違いありませんよね?)
宜しくお願いしますm(__)m
0482431
2005/12/22(木) 14:19:400483デフォルトの名無しさん
2005/12/22(木) 18:31:56ちがいます。
つーか gettid(2) 使えって書いてあるじゃん。
0484デフォルトの名無しさん
2005/12/25(日) 00:27:31(m。_。)m オネガイシマスコンパイルと実行環境はcygwin+GCCです。
main()
{
printf("hoge1");
printf("hoge1\n");
if(fork()){/*親プロセス*/
printf("hoge2");
printf("hoge2\n");
}
else{/*子プロセス*/
printf("hoge3");←出力されてない
printf("hoge3\n");
}
}
実行結果:
hoge1hoge1
hoge2hoge2
hoge3
となってしまいます。
子プロセスで改行なしの標準出力がされません。なぜでしょうか?
調べてみると改行があると出力されるようなのですが・・・
また回避策もお願い致します。
(子プロセスの標準出力を親プロセスとのパイプにつなぐとか・・・)
どうか御教授の方宜しくお願い致します。
0485デフォルトの名無しさん
2005/12/25(日) 00:33:48微妙に親が早く死ぬんじゃね?
でも、うちだとちゃんと出力されたお。
0486デフォルトの名無しさん
2005/12/25(日) 00:37:25えぇ〜まじっすか?
0487デフォルトの名無しさん
2005/12/25(日) 00:41:59printf("hoge")をすべてfprintf(stderr, "hoge")に変えてみるとか
子プロセスの終了をwaitで待つとか
いろいろやってみ
0488デフォルトの名無しさん
2005/12/25(日) 00:47:44うちのlinuxだとちゃんと出力されるからわからんが、改行無しでprintfする場合、直後に
fflush(stdout);
を加えてみたら。
0489デフォルトの名無しさん
2005/12/25(日) 00:52:39cygwin でやってみたけど、全部出た。
0491デフォルトの名無しさん
2005/12/25(日) 11:54:25欠けることがあった。プロンプトにESCシーケンス使ってると、
変になるかもね。(つーか、waitしろよ)
$ ./a.exe
hoge1hoge1
hoge2hoge2
foo@bar ~/srcoge3hoge3
0492デフォルトの名無しさん
2005/12/25(日) 12:13:44同意w
0493デフォルトの名無しさん
2005/12/25(日) 13:18:46>fflush(stdout);
>を加えてみたら。
同意w
0494デフォルトの名無しさん
2005/12/25(日) 15:43:10waitするしないも関係ないだろ。
0495デフォルトの名無しさん
2005/12/25(日) 16:07:26この場合は親子そろって普通に終了してるのも問題かもね。
_exit()
0496デフォルトの名無しさん
2005/12/25(日) 16:24:280497デフォルトの名無しさん
2005/12/25(日) 18:41:150498デフォルトの名無しさん
2005/12/25(日) 19:26:12パイプを使って対話型のプログラムを親プロセスから
操作したいと思ってテストプログラムを作ったのですが
うまくいきません。
子供はfgetsでループして取ってきた文字列をstdoutに出力
するという単純なプログラムです。親はforkして以下の図の
ようになるようにpipe処理をした後、適当な文字列をwrite
して直後にreadしています。
+------+ +------+
|親 |---(stdin)-->|子 |
| |<--(stdout)--| |
+------+ +------+
最終的な理想は、親が子にさまざまなコマンドを発行して
操作し、結果を取得するということをアプリケーションが
終わるまで行うことです。
テストプログラムではreadした瞬間止まってしまっているようなの
ですが双方向パイプでコマンドと対話するのはなにかコツの
ようなものが必要なのでしょうか?。
テストで作った子(メッセージ欄に貼り付け)と親プログラム(添付txt)
のソースは以下のURIにあります。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi?mode=thr&no=1344
0499デフォルトの名無しさん
2005/12/25(日) 19:52:33その名もハッシュソート。
だいたいどんなのかわかりますよね?
ありますか。
0500デフォルトの名無しさん
2005/12/25(日) 19:57:30いわゆるBucket sortのことか?
0501デフォルトの名無しさん
2005/12/25(日) 20:01:18それです!すでにありましたか。
0502デフォルトの名無しさん
2005/12/25(日) 20:03:350503デフォルトの名無しさん
2005/12/25(日) 20:03:55親が送る文字列、'\0'つけたらダメなんじゃね?
0504499
2005/12/25(日) 20:09:13配列をその5倍くらいとっておいて
データを数字1〜5nに分布させるような関数を
用意すれば6n位のオーダでソート出来ます。
あんまり配列が小さいと頻繁に衝突して効率が悪くなります。
0505デフォルトの名無しさん
2005/12/25(日) 20:11:310506499
2005/12/25(日) 20:24:57どなたかプログラム出来る方、ハッシュソートを作ってもらえませんでしょうか?
これなら数十分だと思うのですが。
0507デフォルトの名無しさん
2005/12/25(日) 20:31:370508デフォルトの名無しさん
2005/12/25(日) 20:35:07sortじゃね?
0509499
2005/12/25(日) 20:41:04これと
http://www.vector.co.jp/soft/dos/util/se007577.html
これなんですが
http://park15.wakwak.com/~yu-ki/help/sota2/index.htm
いろいろ試して速いのはこの二つでした。アルゴリズムはわかりません。
0510デフォルトの名無しさん
2005/12/25(日) 20:45:150511デフォルトの名無しさん
2005/12/25(日) 20:45:39なんで MS-DOS/Windows 用なんだよ
0512499
2005/12/25(日) 20:47:51いまWindows XPを使っています。
0513デフォルトの名無しさん
2005/12/25(日) 20:50:040514デフォルトの名無しさん
2005/12/25(日) 20:50:36すれ違い
0515499
2005/12/25(日) 20:55:450516デフォルトの名無しさん
2005/12/25(日) 21:00:05C言語はこっち
0517デフォルトの名無しさん
2005/12/25(日) 21:01:48子はstdinがパイプなので行バッファリングではなく完全バッファリングするためfgetsでブロック。
親は子から入力がこないのでreadでブロック。
というデッドロック。
そういうときは疑似端末を使うらしい。
0518499
2005/12/25(日) 21:02:18どうもです
0519デフォルトの名無しさん
2005/12/25(日) 21:07:14> 子はstdinがパイプなので行バッファリングではなく完全バッファリングするためfgetsでブロック。
ここがまちがい。
0520デフォルトの名無しさん
2005/12/25(日) 23:03:07あるプログラムで、mallocを数千回連続で実行すると
mallocがセグメンテーションエラーになります。
これを回避する方法ってありますでしょうか?
printf("before\n");
hoge = (struct hoge *)malloc(sizeof(struct hoge));
printf("after\n");
$ ./a.out
before
after
before
after
before
after
before
Segmentation fault
0521デフォルトの名無しさん
2005/12/25(日) 23:05:01これは何?何でfflush(stdout)じゃないの?
0522デフォルトの名無しさん
2005/12/25(日) 23:11:15親の、
read(out[R], buf, BUFSIZ);
は、BUFSIZ書かれるまで帰ってこない
親もfgetsすればいいんじゃないの?
0523デフォルトの名無しさん
2005/12/25(日) 23:13:52環境がうんこ
てか環境かけよ
0524デフォルトの名無しさん
2005/12/25(日) 23:20:24> read(out[R], buf, BUFSIZ);
> は、BUFSIZ書かれるまで帰ってこない
これもまちがい。
つか >>503 に正解が書いてあるのに。
0525デフォルトの名無しさん
2005/12/25(日) 23:24:30失礼しました。
環境は次の通りです。
ハード:P3-800MHz MEM:384MB
OS:Debian serge kernel 2.6 i686 GNU/Linux
コンパイラ:gcc-3.3.5
0526デフォルトの名無しさん
2005/12/25(日) 23:26:45struct hogeの具体的なサイズと実行してるシェルの
ulimit -aの出力を書いてください
0527デフォルトの名無しさん
2005/12/25(日) 23:34:12いやまぁ503も間違いだから全部まちがいだな
0528デフォルトの名無しさん
2005/12/25(日) 23:35:23その環境なら書き込んだ瞬間に実際のメモリの確保が行なわれるので、
Segmentation fault が起きるなんてありえないと思うんだが。
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
struct hoge {
char s[INT_MAX];
};
int main()
{
int i;
struct hoge * tmp = NULL;
for (i = 0 ; i < 100000000 ; ++i) {
tmp = (struct hoge *)malloc(sizeof(struct hoge));
}
return 0;
}
まずこれは問題なし。tmp に書き込んでないから。
0529デフォルトの名無しさん
2005/12/25(日) 23:36:43#include <stdlib.h>
#include <limits.h>
struct hoge {
char s[INT_MAX];
};
int main()
{
int i;
struct hoge * tmp = NULL;
for (i = 0 ; i < 100000000 ; ++i) {
tmp = (struct hoge *)malloc(sizeof(struct hoge));
tmp->s[0] = '\0';
}
return 0;
}
これは Segmentation fault。
メモリが確保出来なくなった時点で malloc が NULL を返すので、
そこに書き込んだ瞬間にアウト。
0530デフォルトの名無しさん
2005/12/25(日) 23:37:51#include <stdlib.h>
#include <limits.h>
struct hoge {
char s[INT_MAX];
};
int main()
{
int i;
struct hoge * tmp = NULL;
for (i = 0 ; i < 100000000 ; ++i) {
tmp = (struct hoge *)malloc(sizeof(struct hoge));
if (tmp) {
tmp->s[0] = '\0';
}
}
return 0;
}
これは malloc が NULL を返すが、if で対応してるので問題ない。
結論から言うと、メモリが確保できなかった場合のエラー処理を
適切に行いなさいってこった。
0531デフォルトの名無しさん
2005/12/25(日) 23:49:06ぬるぽ
0532497
2005/12/26(月) 00:22:25・・・ああ!確かにそのとおりです。
で、strlen(msg) + 1の+1を削除してみたところうまく行きました。
ただクライアントでfflushをしてやらないと止まってしまうようですが・・・。
もうちょっと調査をしてみます。
>> 517
アドバイスありがとうございます。擬似端末についても調べてみます。
>> 522
fdopenでFILE*に変換できるのでしたっけ。こちらも試してみます。
>> 519
>> 524
>> 527
すいません、知識不足でどこが問題なのかわかっていません。
もうちょっと勉強してみます。
# あまりパイプに関する資料が見つからなくて困っているのです…
0533532=498
2005/12/26(月) 00:23:42前の書き込みは498です…。
0534デフォルトの名無しさん
2005/12/26(月) 00:45:54core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
file size (blocks, -f) unlimited
max locked memory (kbytes, -l) unlimited
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) unlimited
virtual memory (kbytes, -v) unlimited
>>528-530
場合分けによる提示ありがとうございます。
しかし、今回は、malloc自体がセグメンテーションエラーになっているようなのです。
こんな事ってあるのでしょうか?
struct hoge *hoge;
printf("before\n");
hoge = (struct hoge *)malloc(sizeof(struct hoge));
printf("after\n");
if (!hoge) exit(1);
$ ./a.out
before
after
before
Segmentation fault
0535525
2005/12/26(月) 00:53:45具体的なstruct hoge のサイズは次の通りです。
struct hoge {
struct hoge *next;
unsigned int fuga;
struct foo *foo;
}
struct foo {
struct foo *next;
unsigned int *bar;
}
0536デフォルトの名無しさん
2005/12/26(月) 01:09:10gdbで見てみたら?
0537デフォルトの名無しさん
2005/12/26(月) 01:12:12領域が既に壊れている場合。malloc以外の場所にバグが
あってそれが偶然mallocの中で発言したってことが多い。
なんだかんだ言って、本当にmallocだけのプログラムでは
試してないでしょう? 再現する最小限のプログラムまで
落とし込むことを勧める。
0538デフォルトの名無しさん
2005/12/26(月) 01:15:56-あんたのプログラムにバグがあってメモリを壊している
-不正なポインタに対してfree()を呼んだ
のどちらか
0539デフォルトの名無しさん
2005/12/26(月) 01:30:26> # あまりパイプに関する資料が見つからなくて困っているのです…
あなたはバッファ付きI/O(stdio)を根本的に理解してない。
0540デフォルトの名無しさん
2005/12/26(月) 01:57:02> # あまりパイプに関する資料が見つからなくて困っているのです…
Advanced Programming in the UNIX Environment 一冊あれば充分。
0541ヽ(´ー`)ノ ◆.ogCuANUcE
2005/12/26(月) 02:23:51>>537 の言う通り、断片的なコードじゃなくて、再現する一番小さい
コードを貼れ。
あと Debian の sarge なら、libc は libc6 だと思うけど、それなら代わりに
libc6-dbg を入れて、こいつとリンクさせてgdb で見るのが一番手っ取り早い。
0542デフォルトの名無しさん
2005/12/26(月) 08:59:56>ただクライアントでfflushをしてやらないと止まってしまうようですが・・・。
クライアントは stdio 使ってるから、
バッファがいっぱいになるか、改行するなり、fflushするまで実際には送信されないよ。
0543デフォルトの名無しさん
2005/12/26(月) 12:03:57> バッファがいっぱいになるか、改行するなり、fflushするまで実際には送信されないよ。
不正確な表記。
0544デフォルトの名無しさん
2005/12/26(月) 12:27:23forkを使って、親プロセスと子プロセスを作成した後、親と子をパイプで
結び、パイプで通信(子が書いて、親が読む)させたいのですが、その時ってパイプの端をselectを
使用して待てるのでしょうか?
できれば使用例も御願い致します。
0545デフォルトの名無しさん
2005/12/26(月) 12:39:38すみません。ユニックスかわからないんですが、ここのカウンターが変になってしまい、困っています。
多分、最後の画像結合処理が上手くいってないと思うんですが、
print &gifcat::gifcat(@dat);#関数を実行して、カウンターの画像をひとつの画像にまとめる
exit; #処理終了
ここの、、、初心者なので全然わからないんですが、誰か教えてたも。
0546デフォルトの名無しさん
2005/12/26(月) 13:06:44なら正確になるように補足して。
0547523
2005/12/26(月) 13:15:23環境がLinuxだとすると memory overcommit かもしれない
詳しくはぐぐってもらうとして、対処はあきらめるか
/proc/sys/vm/overcommit_memory を2にするらしい
0548デフォルトの名無しさん
2005/12/26(月) 14:12:25man setvbuf
0549デフォルトの名無しさん
2005/12/26(月) 14:15:56UNIXならselectで待てるけど
Windowsの場合はselectはネットワークsocket専用なので待てない
0550デフォルトの名無しさん
2005/12/26(月) 14:26:04UNIXです
0551デフォルトの名無しさん
2005/12/26(月) 15:20:36fdが判ってれば大丈夫じゃないかな?
0552デフォルトの名無しさん
2005/12/26(月) 15:43:32#define READ 0
#define WRITE 1
int main()
{
fd_setfdset;
charstr[80],cmd[80];
intpipe[2];
if(pipe(pipe)){
printf("->pipe_error\n");
}
fd = pipe[0];
FD_ZERO(&fdset);
FD_SET(fd, &fdset);
if(fork()){
switch(select(fd, &fdset, NULL, NULL, NULL )){
case -1: break;
default:
if(FD_ISSET(fd, &fd_set)){
read(pipe[READ], cmd, sizeof(cmd))←ここに入ってこない
}
break;
}
}
else{
strcpy(str, "0987654321");
write(pipe[WRITE], str, sizeof(str));
}
}
readできないのです・・・
0553デフォルトの名無しさん
2005/12/26(月) 16:05:06switch(select(fd+1, &fdset, NULL, NULL, NULL )){
0554デフォルトの名無しさん
2005/12/26(月) 16:17:40あっ忘れてました。
fd+1に変更したけど結果は一緒でした。
0555デフォルトの名無しさん
2005/12/26(月) 16:19:00もとネタはバッファはデフォルトのままだよ。
0556デフォルトの名無しさん
2005/12/26(月) 16:53:43FD_SET(fd+1, &fdset);
0557デフォルトの名無しさん
2005/12/26(月) 16:58:400558デフォルトの名無しさん
2005/12/26(月) 17:02:17だめでした(;_;)
0559デフォルトの名無しさん
2005/12/26(月) 17:11:060560デフォルトの名無しさん
2005/12/26(月) 17:44:54上記はすいません。これはコンパイルできると思います。
#include <sys/types.h>
#include <unistd.h>
#include <sys/ipc.h>
#define READ0 #define WRITE1
int main(void)
{
fd_set fdset;
char str[80],cmd[80];
int pe_pipe[2],fd,error;
error = pipe(pe_pipe);
if(error != 0)
printf("->pipe_error\n");
fd = pe_pipe[READ];
FD_ZERO(&fdset);
FD_SET(fd, &fdset);
if(fork()){
switch(select(fd, &fdset, NULL, NULL, NULL )){
case -1: break;
default:
if(FD_ISSET(fd, &fdset))
read(pe_pipe[READ], cmd, sizeof(cmd));
}
}
else{
strcpy(str, "0987654321");
write(pe_pipe[WRITE], str, sizeof(str));
}
}
0561デフォルトの名無しさん
2005/12/26(月) 17:55:32sizeof(str) => strlen(str)
0562デフォルトの名無しさん
2005/12/26(月) 17:57:050563デフォルトの名無しさん
2005/12/26(月) 18:05:02治しましたがダメでした(;_;)
0564デフォルトの名無しさん
2005/12/26(月) 18:06:03通るようになったけど。
0565デフォルトの名無しさん
2005/12/26(月) 18:09:01そっちは >>553 で指摘されてるから分かってるのかと思った・・・
0566デフォルトの名無しさん
2005/12/26(月) 18:19:35なんでかなー。
0567デフォルトの名無しさん
2005/12/26(月) 18:49:40通るようになった?動いたって事?
select(fd+1,...)にしても動かないですけど・・・
0568564
2005/12/26(月) 18:54:590569デフォルトの名無しさん
2005/12/26(月) 18:57:260571デフォルトの名無しさん
2005/12/28(水) 23:28:54MPIのメリットはなんでしょうか? そもそもMPIというものは
なにをするものでなんでしょうか?
MPIについての概要がわかるサイトがありましたら、ご教示ください。
0572デフォルトの名無しさん
2005/12/29(木) 00:34:040573デフォルトの名無しさん
2006/01/03(火) 14:14:50Solaris10上でなにも考えずにスレッド作ると、
スレッドと同じ数だけLWPが生成されるんですが、
このLWPの数を意図的に減らすことってできるんでしょうか?
なんか、SOLARISインターナルっう本を読む限りでは、
デフォルトでは「ユーザスレッド数>LWP数」な、
いい感じに調整されるって書いてあるんですが、
Solarisのバージョンがあがって仕様が変わったんでしょうか?
0574デフォルトの名無しさん
2006/01/03(火) 14:23:38Solaris 8 からスレッドモデルが変わった。現在はユーザスレッドと LWP は 1:1 の関係。
thr_create() した分だけ LWP がバインドされる。
Solaris 8 より前 --> M:N thread model
Solaris 8 --> M:N と 1:1 が LD_LIBRARY_PATH で選択出来た
Solaris 9 --> 1:1 thread model のみ
Solaris 10 --> 1:1 のみ。libthread が libc に入った
Solaris Internals は古いリリースの Solaris を元に記述されているから、ここら辺は
カバーされていない。詳細は「代替スレッドライブラリ」でググってみ。
0575デフォルトの名無しさん
2006/01/03(火) 14:40:46それは何か間違いを犯している兆候だから。
0577デフォルトの名無しさん
2006/01/05(木) 01:22:40~# /lib/libc.so.6
GNU C Library stable release version 2.3.2, by Roland McGrath et al.
Copyright (C) 2003 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Compiled by GNU CC version 3.3.5 (Debian 1:3.3.5-12).
何が起きてこうなるの?
0578デフォルトの名無しさん
2006/01/05(木) 01:23:260579デフォルトの名無しさん
2006/01/05(木) 01:55:15ELFのバイナリにはインタプリタへのパスを埋め込むことができる。
Linuxの場合はコンパイル時に明示的に静的リンクを指定しない
限り/lib/ld-linux.so.2あたりが埋め込まれる。
% strings /lib/libc.so.6 | grep ld-linux
で埋め込まれているのがわかるだろう。
shスクリプトを実行すると/bin/shが呼ばれるのと同じように、
インタプリタへのパスが埋め込まれているELFオブジェクトが
"実行"されるとカーネルはインタプリタを呼ぶ。だから
% /lib/ld-linux.so.2 /lib/libc.so.6
でも同じ結果になる。詳しいことはman ld.soすること。
0580デフォルトの名無しさん
2006/01/06(金) 01:21:56アホは引っ込んどきな
0581デフォルトの名無しさん
2006/01/06(金) 16:35:02普通に無視すると無限ループになってしまうので。。。
0582デフォルトの名無しさん
2006/01/06(金) 17:34:430583デフォルトの名無しさん
2006/01/06(金) 17:55:04setjmpしておいた所にlongjumpする。
0584デフォルトの名無しさん
2006/01/08(日) 13:40:16TCPを使うべきだって書いてありますよね。いまだにファイル転送にFTPを
使う意味ってなんなんでしょうか?
0585デフォルトの名無しさん
2006/01/08(日) 13:44:07H T T P も ぉ 〜 ( r y
0586デフォルトの名無しさん
2006/01/08(日) 14:15:300587デフォルトの名無しさん
2006/01/08(日) 14:16:350588デフォルトの名無しさん
2006/01/09(月) 03:01:13あれをなんとかしたのがPASV方式って認識であってる?
0589デフォルトの名無しさん
2006/01/09(月) 03:13:110590デフォルトの名無しさん
2006/01/09(月) 03:13:22ええ
0591デフォルトの名無しさん
2006/01/09(月) 04:47:55ありがとう
お礼にうちに来て妹とファックしてもいいよ
0592デフォルトの名無しさん
2006/01/09(月) 08:26:58PASVはクライアントからサーバーへ繋ぎに逝く
0593デフォルトの名無しさん
2006/01/09(月) 09:01:57日本語が不自由な人w
0594デフォルトの名無しさん
2006/01/09(月) 09:30:47PASVなモードではPORTコマンドを使わないような書き方だな…
0595デフォルトの名無しさん
2006/01/09(月) 09:44:420596デフォルトの名無しさん
2006/01/09(月) 09:45:480597デフォルトの名無しさん
2006/01/09(月) 11:17:010598デフォルトの名無しさん
2006/01/13(金) 12:21:46もうこのスレにはUNIX使いはいないのか
0599デフォルトの名無しさん
2006/01/13(金) 13:22:360600デフォルトの名無しさん
2006/01/13(金) 14:41:180601デフォルトの名無しさん
2006/01/13(金) 14:59:070602デフォルトの名無しさん
2006/01/13(金) 15:03:30^ もか?
0603デフォルトの名無しさん
2006/01/13(金) 16:47:36mq_sendのmsg_prioの優先順位高くしても同期処理はもちろんされないよね。
0604デフォルトの名無しさん
2006/01/13(金) 17:05:36Glib(のGObject)のsignalが、SendMessageに相当。
C++だとboostのsignalやQt(C++の独自拡張あり)のsignal/slotなど。
0605デフォルトの名無しさん
2006/01/13(金) 17:07:28SendMessageに相当→SendMessageのメッセージモデルに相当
0606デフォルトの名無しさん
2006/01/13(金) 17:10:410607デフォルトの名無しさん
2006/01/13(金) 17:25:32でもこれって、LinuxとSolarisぐらいにしかない?
0608デフォルトの名無しさん
2006/01/13(金) 18:22:27Windowsはよく出来てるわ。過去との互換性を無理やり維持し続けながら
新しい機能を盛り込んでいくUNIXのやり方がだめってわけじゃないけど。
0609デフォルトの名無しさん
2006/01/13(金) 18:33:030610デフォルトの名無しさん
2006/01/13(金) 18:56:240611デフォルトの名無しさん
2006/01/13(金) 19:04:430612デフォルトの名無しさん
2006/01/13(金) 19:23:34とりあえずGlibの使い方を調べてみます。どうもでした。
0613デフォルトの名無しさん
2006/01/13(金) 20:29:06それはsignal違いだろ。>>604の言っているのとは。
>>606がどっちの意味で言っているかわからんが。
>>603の用途だと同期的に使うわけだから、
>>604の言っている意味のsignalでは全く問題なし。
0614デフォルトの名無しさん
2006/01/13(金) 23:06:32書かれているけどevent backing storeって一体何のことなんでしょうか
どんな値を入れればいいのかがさっぱりです
>but just a hint to the kernel about how to dimension internal structures.
とも書いてあるので適当な値でも困ることは無さそうですが・・・
0615デフォルトの名無しさん
2006/01/14(土) 00:13:42> Glib(のGObject)のsignalが、SendMessageに相当。
それは微妙に違う。
メッセージはメッセージでもGSignalはObjCやSmalltalkのアレみたいなもの。
0616デフォルトの名無しさん
2006/01/14(土) 06:54:04それSendMessageじゃん。
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpwinui/html/_win32_sendmessage.asp
1つまたは複数のウィンドウへ、指定されたメッセージを送信します。この関
数は、指定されたウィンドウのウィンドウプロシージャを呼び出し、そのウィ
ンドウプロシージャがメッセージを処理し終わった後で、制御を返します。
--------
http://www.gnome.gr.jp/docs/gobject-2.4.x-tut/html/ch03s02.html
シグナルは、そのシグナルを発行できる型の情報とともに型管理システムに登
録されています: その型を利用するオブジェクトは、シグナルが発行されると
呼び出されるクロージャを登録するときに、指定した型のインスタンスでシグ
ナルに接続する旨を宣言します。さらに、シグナルを利用するオブジェクト自
身がシグナルを発行したり、シグナルに接続しているクロージャの内部からシ
グナルの発行を停止することができます。
(略)
シグナルの発行は、g_signal_emit() 系の関数を使って行います。
0617デフォルトの名無しさん
2006/01/16(月) 01:12:58テキストエントリの表示サイズを指定する方法がわかりません。
画面の横いっぱいにテキストエントリが表示されてしまいます。
固定化するメソッドとかは無いのでしょうか?
何か方法があれば教えてください。
0618デフォルトの名無しさん
2006/01/16(月) 01:43:51GTK+ 2.0 チュートリアル (2003-01-24版)
http://www.gnome.gr.jp/docs/gtk+-2.0.x-tut/gtk-tut.html
0619617
2006/01/16(月) 02:23:02わかりやすいドキュメントありがとうございます。
gtk_table_atachの引数が問題だったみたいです。
こういう場合は、GTK_SHRINKを引数にとるんですね。
勉強になりました。
0620デフォルトの名無しさん
2006/01/19(木) 00:23:10何もしない?
0621デフォルトの名無しさん
2006/01/19(木) 00:30:350622デフォルトの名無しさん
2006/01/19(木) 00:35:000623デフォルトの名無しさん
2006/01/19(木) 00:40:36Linuxだとmanに書いてあるよ
>ssize_t write(int fd, const void *buf, size_t count);
>If count is zero and the file descriptor refers to a regular file,
>0 will be returned without causing any other effect.
0624デフォルトの名無しさん
2006/01/19(木) 10:32:46レギュラーなファイルって、ソケットも含まれるかな?
デバイスファイルならそれは挙動が決まってはいないだろうけど。
0625デフォルトの名無しさん
2006/01/19(木) 11:02:020626デフォルトの名無しさん
2006/01/19(木) 15:58:57For a special file, the results are not portable.
0627デフォルトの名無しさん
2006/01/19(木) 17:11:07ソケットはスペシャルなの?
0628デフォルトの名無しさん
2006/01/19(木) 17:32:31stat(2)
0629デフォルトの名無しさん
2006/01/19(木) 19:37:18regular file って、普通のファイルのことだぞ
socketは普通ファイルじゃないだろ
0630デフォルトの名無しさん
2006/01/19(木) 20:12:320631デフォルトの名無しさん
2006/01/19(木) 20:21:360632デフォルトの名無しさん
2006/01/20(金) 11:53:410633デフォルトの名無しさん
2006/01/20(金) 12:35:38下手すると「Motif1.2は発表されました」って時代の本ばかり。
つーか、紀伊国屋にはそのうちの1冊しかなかったよ_/ ̄|○
それ以外でもGtkがGnomeのおまけで1冊、Qtが2冊、なんてこったい。
0634デフォルトの名無しさん
2006/01/20(金) 14:56:25http://www.opengroup.org/openmotif/
http://www.motifdeveloper.com/
まあ今から変えられるならMotifやめとけ。
0635デフォルトの名無しさん
2006/01/20(金) 15:35:33差分は man 参照すれば解説本は 1.2 の奴で大丈夫だよ.
いまだに売ってるかどうかしらんが, 以下が日本語処理について
結構詳しかったりするのでわりとおすすめ.
ある程度 2 の方向性とかも書いてあるし...
OSF/Motif ルールキットプログラミング [I],[II]
著者: 林秀幸 日刊工業新聞社
ISBN4-526-03601-3
ISBN4-526-03739-7
0636デフォルトの名無しさん
2006/01/20(金) 16:11:32i18ninputの下にXIM関係もある。
0637633
2006/01/20(金) 16:35:57レスTHX。
>>634
今更換えられないけど、もう懲りた。次は他を探しま。
>>635
今回の案件は言語処理は殆どないけど、参考にしてみま。
>>636
おおっ、これは素晴らしい。
さてこれで今月は凌げる(苦笑
0638デフォルトの名無しさん
2006/01/20(金) 16:43:24普通
0639デフォルトの名無しさん
2006/01/21(土) 19:35:30判りやすい解説とかありませんか?
0640デフォルトの名無しさん
2006/01/21(土) 19:41:15ToolTalk ユーザーズガイド
http://docs.sun.com/app/docs/doc/816-3975?l=ja
0641639
2006/01/21(土) 19:51:03もっと低脳向けのゆるゆるな奴を捜しているんですが・・・
0642デフォルトの名無しさん
2006/01/22(日) 08:06:28普通って言うな!!
0643デフォルトの名無しさん
2006/01/22(日) 10:12:56http://h30097.www3.hp.com/docs/i18n/japan/JCDETTMSG/GetStart_2.html
もあげておくが、諦めた方がいいと思う。
0644デフォルトの名無しさん
2006/01/22(日) 18:47:47天下のHPの癖に文字化けか
エンコードきちんと設定しとけよアホかHP
0645デフォルトの名無しさん
2006/01/25(水) 23:23:06\\\\\\ |:::::::| ,,,,,_ ,,,,,,| ////////
\\\\\ |r-==( 。);( 。) //////
\\\ ( ヽ :::__)..:: } / ヽ ___ ///
\ ,____/ヽ ー== ; ,-、 ( ィ j / UnI \
r'"ヽ t、 \___ ! (Y _)、 / / | ^ IX |
/ 、、i ヽ__,,/ \ / / (_,, )ヽ、. / |
/ ヽノ j , j |ヽ / /\ !ニ=- ノ _!_
|⌒`'、__ / / /r | / / \ \ ヽニ´/ ̄ `ヽ
{  ̄''ー-、,,_,ヘ^ .| / / \ \ 〉/ } アホ de GOMEN NE
ゝ-,,,_____)--、j / / \ \ / i,、_, , ,',;:',i
/ \__ / / / \ \ l l ,; / ,',l
| "'ー‐‐---'' / / ヽ ン´ヽ ,';','i
/ l`、 / / / (;;/;;,',';; ゙i ,;';i
,〃 _l:::::`ー,=-'( / / /,',',';;" /i ,;',/
/ ´ゞ._;;;:r';二二二´__ノ ,' 、 / / \
l ,.''" `'(:::)、:: ` 、 〈 < {////
; ,'" `ー、__ `l i;,;、 ! ´´´
l ;' /::::::::::::::::ノ !,;; i
| ._i' ヽ`''「 ̄ ̄ |,','、 i
0646お願いします;;
2006/01/26(木) 23:48:52産まれてから今日まで生きてきた日数を出力するプログラムを作れ。
さらに、任意の整数nを入力して、産まれてからn日目が、
いつかを出力させるプログラムを作れ。
ちなみに、閏年は以下のようにして決められる。
1)基本的に西暦が4で割り切れたら閏年。
2)しかし、西暦が100で割り切れたら閏年ではない。
3)しかし、西暦が400で割り切れたら閏年とする。
レポート作成
予備的考察、プログラム、プログラムの説明、計算結果、考察
フォートラン使用・・・
0647デフォルトの名無しさん
2006/01/26(木) 23:52:57「やはり宿題は自分でやってこそ身に付く物だと実感した」
0648お願いします;;
2006/01/27(金) 00:04:180649デフォルトの名無しさん
2006/01/27(金) 00:05:18はいはいマルチマルチ
0650デフォルトの名無しさん
2006/01/27(金) 00:16:20神武天皇の誕生日など入れても算出する
必要がある、ということですか?
0651お願いします;;
2006/01/27(金) 00:39:01ごめんなさい いろんな板で質問して・・・
身につかなくていい、つかなくていいんすよ先輩!
お願いしますorz
0652デフォルトの名無しさん
2006/01/27(金) 00:51:100653デフォルトの名無しさん
2006/01/27(金) 00:55:59> 任意の生年月日と今日の日付を入力すれば、
同じ西暦でも現用のグレゴリオ歴とユリウス歴の切り替え点が
あるし, 切り替え点も国によっ違ったりするため, 出題の方に
問題がある.
ましてや, 国によっては元号問題その他がある云々のへりくつ
をこねくり倒して,
> 予備的考察
の部分で, 出題自体がナンセンスだと決めつけ, ゆえに,
> プログラム、プログラムの説明、計算結果、
は事実上不可能だとし,
> 考察
の部分で, 「こんな出題をするおまえは能無しか!!!」と罵倒し
て終わる.
ってなところでしょうかね?
0654お願いします;;
2006/01/27(金) 00:56:44んー・・・;;
ごめんなさい 板汚しました。
0656デフォルトの名無しさん
2006/01/27(金) 01:00:160657デフォルトの名無しさん
2006/01/27(金) 01:02:59まずは、自分が生まれてから今日が何日目か、手で計算してみろ。
単に答だけ出すんじゃなくて、数学の問題を解くように思考過程を
きちんと押さえるんだぞ。
自分で筋道立てられないから大きな問題を出されるとどうしていいかわからず
にっちもさっちもいかなくなるんだろうな。頭の悪い奴。
>>653
工学的には、適当な仕様を定めて解を出すべき。理学的には知らんけど。
0658デフォルトの名無しさん
2006/01/27(金) 01:06:56いや, マジに突っ込まれても...
0659デフォルトの名無しさん
2006/01/27(金) 01:52:510660デフォルトの名無しさん
2006/01/27(金) 02:17:32man にはスレッドについての記述はありません。
実験を繰り返すほかに何か手は無いでしょうか?
0661デフォルトの名無しさん
2006/01/27(金) 07:40:14$(GLIBC)/malloc/malloc.cのコメント以外に詳しいドキュメントはありません。
/lib/tls/libc.so.6がlinkされていれば、MT-Safeです。
0663デフォルトの名無しさん
2006/02/02(木) 11:19:49いやもっと掘下げないと自分が理解できない、alarmとかは誰の仕事?
もう質問の仕方がわけわかんないんで、猿でもわかるUNIXシステムコール入門本教えてください
0664デフォルトの名無しさん
2006/02/02(木) 12:12:21詳解UNIXプログラミング
http://www.amazon.co.jp/exec/obidos/ASIN/4894713195/
Unix Programming Frequently Asked Questions 日本語訳
http://www.adl.nii.ac.jp/~moro/unix-programmer/faq-j_toc.html
0665デフォルトの名無しさん
2006/02/02(木) 16:35:22下のURL最高、そんなサンプルが見たかった。
しかも本の説明どんぴしゃ!注文する。本当ありがと!
ヘッダ広げて片っ端から叩いてるのにわからなくて悔しいぜ
本たけー
0666デフォルトの名無しさん
2006/02/02(木) 18:55:36Lions’ Commentary on UNIX
http://www.amazon.co.jp/exec/obidos/ASIN/4756118445/
BSDカーネルの設計と実装−FreeBSD詳解
http://www.amazon.co.jp/exec/obidos/ASIN/4756146791/
Solarisインターナル−カーネル構造のすべて
http://www.amazon.co.jp/exec/obidos/ASIN/4894714582/
あたりもおもしろいかもね。
0667デフォルトの名無しさん
2006/02/05(日) 21:05:57教えたいただけないでしょうか?
0668デフォルトの名無しさん
2006/02/05(日) 22:32:420669デフォルトの名無しさん
2006/02/05(日) 23:19:07教えといただけないでしょめか?
0670デフォルトの名無しさん
2006/02/05(日) 23:27:24教えちいただけないでせうか?
0671デフォルトの名無しさん
2006/02/05(日) 23:32:25ようするにGPLじゃないやつみたいな感じ。
なんのコンパイラか知らんけどさ。
0672デフォルトの名無しさん
2006/02/05(日) 23:32:450673デフォルトの名無しさん
2006/02/05(日) 23:33:470674デフォルトの名無しさん
2006/02/05(日) 23:48:45gccでかまわないと思うんだが、何が問題なんだろう。
x86系ならIntelの奴とか、
他の石でもプロセッサメーカーが出してるコンパイラがあるはず。
商用UNIXもgccでないコンパイラは載せてる。
お勧めかどうかは用途次第なのでなんともいえないが。
0675デフォルトの名無しさん
2006/02/05(日) 23:54:38gccは顧客や上層部が信頼してないときがあるからな
いや、信頼というよりは責任をなすりつける先が無いことに対する不安か
0676デフォルトの名無しさん
2006/02/06(月) 00:01:000677デフォルトの名無しさん
2006/02/06(月) 00:35:38そうです、BSDLでした。orz
>>674,676
研究目的で配布予定とかは無いのですが念のためにGLP系以外で
作ろうかと思いました。
ありがとうございました。教えて頂いたのを参考にさせてもらいます。
0678デフォルトの名無しさん
2006/02/06(月) 02:16:21そのまま使えるような関数ってありますか?
(regcomp()は、そのまま使うと"*.txt"がコンパイル出来ないし)
0679デフォルトの名無しさん
2006/02/06(月) 02:22:520680デフォルトの名無しさん
2006/02/06(月) 02:23:04自前で判定してるっぽいな・・・
0681デフォルトの名無しさん
2006/02/06(月) 02:31:02でも、「文字列の一致判定」じゃなくて「一致するパスの列挙」だな。
欲しいのとはちょっと違う。
自前でreaddir()するつもりだったけど
書き換えることも考えよっと。
0682679
2006/02/06(月) 02:31:370683デフォルトの名無しさん
2006/02/06(月) 02:37:06>>679
ごめん。もっとよく調べてから書き込めばよかった。
書き込んでからもリロードせず調べてたもんだから。
でもありがとう。
0684デフォルトの名無しさん
2006/02/06(月) 08:39:23「ちょっと違う」←嘘じゃん? ズバリじゃん?
>>677
GLPか…プラットホーム(wくらい書いた方がいいと思う。
0685デフォルトの名無しさん
2006/02/08(水) 03:42:47scandir() というのも Linux にあるぞ。UNIX にもあるんじゃないのか?
man 見ると BSD 4.3 から取り入れられたと書いてあるぞ。
0686デフォルトの名無しさん
2006/02/08(水) 03:43:540687デフォルトの名無しさん
2006/02/08(水) 09:38:23#popen()使うとか。
漏れはシェルワイルドカードを正規表現に変換したがな。
0688678
2006/02/08(水) 14:15:26実はファイルやディレクトリの差分/日付チェック付コピーを作っていたのよ。
Windowsで動くように作ったものがあって
それを(最小限の#ifdefで)少しでも多くの環境でも動くようにしようかなと。
(実際に自分で使うのはLinuxかせいぜいFreeBSDまでだとは思うけど)
で、今回の件については、使っているのが2個所あって
一つはFindFirstにマスクを渡して一致するファイルの一覧を取得するところで
ここはglobその他の方法が使えるんだけど
もう一つ、あるファイルの扱いを決めるためにワイルドカードと一致するかの判定を
複数回やる部分があって、ここで単純な文字列比較が欲しかった。
こんな感じのテーブル(使う側で設定)がいくつかあって
char *nosave_files[] = {"*.bak","*.obj","subject.txt", NULL,};
char *incremental_files[] = {"*.dat","*.gzi",NULL,};
あるファイル名filenameに対して
if (isnosave(filename)) { ... }
if (isincremental(filename)) { ... }
みたいな判定をしたい。
で、その内部で呼び出すのが
if (table)
while (*table) {
if (fnmatch(*table, file, 0)) return true; // 実際は#define PathMatchSpec() ..
table++;
}
なので。
で、しばらくしたらまた何か聞くかも。
ファイル更新時刻の扱い方(特に秒以下の単位)とか。
0689デフォルトの名無しさん
2006/02/09(木) 08:12:130690デフォルトの名無しさん
2006/02/09(木) 09:49:080691デフォルトの名無しさん
2006/02/09(木) 11:44:14貴重な時間が失われていくのであった。
0692デフォルトの名無しさん
2006/02/09(木) 23:49:43ワープロもブラウザも、作っている人は皆再発明をしていると言いたいのですか?
何で、既にsolarisやAIX,HP-UX等があるのに、
わざわざOSなんてものを再発明する人が居るんですか?
0693デフォルトの名無しさん
2006/02/10(金) 00:14:390694デフォルトの名無しさん
2006/02/10(金) 00:16:31それらは、まったく同じ物を開発してるわけじゃ無いだろ
0695デフォルトの名無しさん
2006/02/10(金) 00:30:57>>691は、まったく同じ物が既にあるから、車輪の再発明という言葉を使っているの?
0696デフォルトの名無しさん
2006/02/10(金) 00:38:44httpdを作りたくても、apacheがあるから車輪の再発明ですか?
ワープロもブラウザも、作っている人は皆再発明をしていると言いたいのですか?
何で、既にsolarisやAIX,HP-UX等があるのに、
わざわざOSなんてものを再発明する人が居るんですか?
0697デフォルトの名無しさん
2006/02/10(金) 01:00:500698デフォルトの名無しさん
2006/02/10(金) 01:01:320699デフォルトの名無しさん
2006/02/10(金) 01:32:010700デフォルトの名無しさん
2006/02/10(金) 07:03:540701デフォルトの名無しさん
2006/02/10(金) 09:51:57topコマンドがあるんだからなんか方法があるんだろうと探していましたが、たどり着けません。
FreeBSDのtopコマンドのソースは見つかったんですが、Linuxにはもっていけないようです。
どなたかご教授ください。
Linuxのtopコマンドのソースの在り処も教えていただけると助かります。
0702デフォルトの名無しさん
2006/02/10(金) 10:05:05> Linuxのtopコマンドのソースの在り処も教えていただけると助かります。
自分の使っているディストリのスレ@Linux板で聞け
今時はコマンド一発で取得できる。
0703デフォルトの名無しさん
2006/02/10(金) 10:24:52/procの下にあるファイルを直接参照するって事ですか?
もしかして最悪ディストリ毎に参照の仕方を変えないといけないかも知れない?
てことは/proc下のファイルの見方もディストリ毎のスレに行った方がいいって
事ですか・・・。
0704702
2006/02/10(金) 10:46:09それからLinuxカーネルとディストリの関係も調査しる!
0705デフォルトの名無しさん
2006/02/10(金) 12:20:14getloadavg(3)
getrusage(2)
0706尻フェチ会社員、33歳
2006/02/11(土) 00:16:02/procの下の見方はmanに載ってるよ
でも肝心なところはぼかして書いてあるから要注意
Linxuのドキュメントってバージョンアップ時の追随が
面倒なのか恐いのか そういうのが多いよな
0707デフォルトの名無しさん
2006/02/11(土) 00:59:44うっかりそっちも平均取ってるかと思い込んでたよ。トホホ。
0708ヽ(´ー`)ノ ◆.ogCuANUcE
2006/02/11(土) 13:41:33Linux ならカーネルに付属してる Documentation/filesystems/proc.txt とか。
最新じゃないかもしれないが、man よりはメンテナンスされてるだろう(多分)。
0709デフォルトの名無しさん
2006/02/12(日) 05:04:00何となく概念とか仕組みみたいなのが分かる程度です。
OSはsolaris9 処理系はSun studio 11と
gcc-3.3.2を使っています。
今transcode-1.0.2をコンパイルしているんですけど、
transcode-1.0.2/libxio/libxio.cをコンパイルしていると
libxio.c: In function `xio_open'
ibxio.c:644: error: `errno' undeclared (first use in this function)
libxio.c:644: error: (Each undeclared identifier is reported only once
libxio.c:644: error: for each function it appears in.)
と以下全てのerrorが未定義となっていてコンパイルできません。
ソースの先頭で#include <sys/errno.h>となっていて
一応export INCLUDE=/usr/includeとちゃんとパスも通っているんですけど・・・
ソースも
errno = EINVAL;とか errno = EIO;
となっていて、正しそうで正直どうすれば良いのかさっぱり分かりません。
どうすればコンパイルできるのでしょうか?
0710デフォルトの名無しさん
2006/02/12(日) 05:22:35多分、何かが原因でerrnoが定義されて無いだけだよ
transcode-1.0.2/libxio/libxio.c の先頭あたりに
int errno;
と定義すれば、コンパイルは通るようになるよ
グッドラック!
0711デフォルトの名無しさん
2006/02/12(日) 05:29:24おいおい……
>>709
#include <errno.h>
を追加してみてもダメか?
それでダメなら
extern int errno;
だな。
#詳しくはman -s 3 errno参照で。
0712709
2006/02/12(日) 06:41:27さん、本当にありがとうございました。
711さんの方法#include <errno.h>を追記で上手く行くことが出来ました!
その後もいくつかインクルードファイルでコンパイルできないところが出てきたんですけど、
今回の件を参考に何とか乗り切ることが出来ました。
インクルードファイルって""で括って絶対パスで直接指定出来たんですね!知らなかった!
でもまた一つ質問してもよろしいでしょうか?今度はマジで?です。
/tmp/transcode-1.0.2/import/pvnglobals.cなんですけれど、コンパイル中に
pvnglobals.c: In function `floatToBuf':
pvnglobals.c:658: error: `BIG_ENDIAN' undeclared (first use in this function)
pvnglobals.c:658: error: (Each undeclared identifier is reported only once
pvnglobals.c:658: error: for each function it appears in.)
pvnglobals.c:658: error: `LITTLE_ENDIAN' undeclared (first use in this function)
以下BIG_ENDIAN、LITTLE_ENDIANが未定義の繰り返しなんですけれど、
BIG_ENDIANとLITTLE_ENDIANってどうやって定義するんでしょうか?ちなみにSPARCなのでBigendianのハズなんですけれども・・・
0713709
2006/02/12(日) 06:52:48gcc -DHAVE_CONFIG_H -I. -I. -I.. -D_REENTRANT -DMOD_PATH=\"/usr/local/lib/transcode\"
-I.. -I../src -I../libtc -I../libac3 -I../avilib -I/usr/include -I../libvo -I../libxio
-Wall -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
-g -O2 -MT pvnglobals.lo -MD -MP -MF .deps/pvnglobals.Tpo -c pvnglobals.c
-fPIC -DPIC -o .libs/pvnglobals.o
で、ソースが
/* take a single float and write it (w/big-endian) into the buffer
there must be >= 4 bytes at *buf
returns OK or ERROR */
int floatToBuf(float f, unsigned char *buf)
{
int i;
unsigned char *p = (unsigned char *)&f;
if (buf == NULL)
return(ERROR);
if(BYTE_ORDER == LITTLE_ENDIAN)
0714709
2006/02/12(日) 07:00:24#ifndef BYTE_ORDER
#ifdef WORDS_BIGENDIAN
#define BYTE_ORDER BIG_ENDIAN
#else
#define BYTE_ORDER LITTLE_ENDIAN
#endif
#endif
こう書いて有るんですけど
0715デフォルトの名無しさん
2006/02/12(日) 11:15:16こういうイヤなエラーが出るのはあきらめるが吉
とりあえず gcc じゃなくて、Sun Studio 11 使ってみては?
(cc は /opt/SUNWspro/bin/cc あたりだと思う)
0716デフォルトの名無しさん
2006/02/12(日) 15:18:36> こういうイヤなエラーが出るのはあきらめるが吉
とりあえず
find /usr/include -name '*.h' | xargs grep BYTE_ORDER
するのが普通なのでは?
0717709
2006/02/13(月) 02:43:31ありがとうございます。
Sun Studio 11だとコンパイル以前に構文がおかしいと言われてコンパイルできないんです。
716さんのおっしゃる通りやってみて、似たような事書いてあるヘッダファイル取り込んだらコンパイルできました。
でも、最後のldでこんなエラーが出ます。
最後の最後なんですけど、なんとかならないものでしょうか?
gcc -Wall -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE
-D_FILE_OFFSET_BITS=64 -g -O2 -o
tcdecode tcdecode-tcdecode.o tcdecode-decode_ac3.o tcdecode-decode_mpeg2.o
tcdecode-decode_yuv.o tcdecode-fileinfo.o tcdecode-ioaux.o tcdecode-decode_dv.o
tcdecode-decode_mp3.o tcdecode-mpg123.o tcdecode-decode_a52.o tcdecode-decode_af6.o
tcdecode-scan_dv.o tcdecode-decode_lavc.o tcdecode-decode_xvid.o
tcdecode-decode_ogg.o tcdecode-decode_mov.o tcdecode-decode_lzo.o
../libac3/.libs/libac3_tc.a ../libvo/.libs/libvout.a
../aclib/.libs/libac.a
../libtc/.libs/libtc.a /usr/local/lib/libiconv.so
-lm -lz -ldl -R/usr/local/lib -R/usr/local/lib
0718709
2006/02/13(月) 02:45:59symbol in file
avcodec_register_all tcdecode-decode_lavc.o
mpeg2_buffer tcdecode-decode_mpeg2.o
avcodec_find_decoder tcdecode-decode_lavc.o
avcodec_decode_video tcdecode-decode_lavc.o
mpeg2convert_rgb24 tcdecode-decode_mpeg2.o
mpeg2_parse tcdecode-decode_mpeg2.o
mpeg2_accel tcdecode-decode_mpeg2.o
mpeg2_close tcdecode-decode_mpeg2.o
avcodec_alloc_context tcdecode-decode_lavc.o
mpeg2_info tcdecode-decode_mpeg2.o
mpeg2_init tcdecode-decode_mpeg2.o
avcodec_init tcdecode-decode_lavc.o
avcodec_open tcdecode-decode_lavc.o
mpeg2_convert tcdecode-decode_mpeg2.o
ld: fatal: Symbol referencing errors. No output written to tcdecode
collect2: ld returned 1 exit status
0719デフォルトの名無しさん
2006/02/20(月) 07:28:020720デフォルトの名無しさん
2006/02/20(月) 08:09:13質問する時は OS の名前を添えて、内容は具体的に。
0721デフォルトの名無しさん
2006/02/20(月) 10:51:230722デフォルトの名無しさん
2006/02/20(月) 11:42:400723デフォルトの名無しさん
2006/02/20(月) 18:58:020724デフォルトの名無しさん
2006/02/20(月) 19:09:34>>4
> □ 1.14 どうすればプロセスの実行ファイルを見つけられますか?
0725デフォルトの名無しさん
2006/02/20(月) 19:28:26/bin/bash
0726デフォルトの名無しさん
2006/02/20(月) 19:56:270727デフォルトの名無しさん
2006/02/20(月) 19:59:11/bin/sh
0728デフォルトの名無しさん
2006/02/20(月) 20:04:47おまいらきもいよ
0729デフォルトの名無しさん
2006/02/20(月) 20:06:49size_t len = sizeof(path);
int mib[4] = { CTL_KERN, KERN_PROC, KERN_PROC_PATHNAME, -1 };
sysctl(mib, 4, &path, &len, NULL, 0);
0730デフォルトの名無しさん
2006/02/20(月) 20:09:100731デフォルトの名無しさん
2006/02/20(月) 20:11:23それちょっとチガワねーか?
0732デフォルトの名無しさん
2006/02/20(月) 20:22:24jail と相性が悪いから
0733デフォルトの名無しさん
2006/02/20(月) 20:27:14そのUNIX、何ていうやつ?
参考までに教えて。
0734デフォルトの名無しさん
2006/02/20(月) 20:31:34これLinuxでしょう。
>>727が
/bin/readlink
にならないのはどのOS? というかなんで?
0735デフォルトの名無しさん
2006/02/20(月) 20:39:030736デフォルトの名無しさん
2006/02/20(月) 20:41:30ごめん、勘違いした
$ readlink /proc/curproc/file
/usr/bin/readlink
になったよ freebsd
0737デフォルトの名無しさん
2006/02/20(月) 20:56:52どゆこと?
実行パス→実行ディレクトリかなと思ったんだけど、実行ファイルの
パスなら /proc/self/path/a.out だね。
0738デフォルトの名無しさん
2006/02/20(月) 20:57:54なるほど。サンクス。
0739デフォルトの名無しさん
2006/02/22(水) 05:23:000740デフォルトの名無しさん
2006/02/22(水) 08:12:14メモリリークを検出するプログラムを使う。
0741デフォルトの名無しさん
2006/02/23(木) 17:04:220742デフォルトの名無しさん
2006/02/24(金) 01:30:510743デフォルトの名無しさん
2006/02/24(金) 03:21:480744デフォルトの名無しさん
2006/02/24(金) 08:07:040745デフォルトの名無しさん
2006/02/24(金) 08:11:410746デフォルトの名無しさん
2006/02/24(金) 09:52:450747デフォルトの名無しさん
2006/02/24(金) 18:32:04確保した領域外にアクセスすることなのか、
解放したはずのメモリが解放されないことなのか
よおわからん。
0748デフォルトの名無しさん
2006/02/24(金) 18:45:49どこだかかわからんので結果として解放もできない。
0749デフォルトの名無しさん
2006/02/24(金) 21:23:50> 解放したはずのメモリが解放されないことなのか
正解。
http://www.instantweb.com/foldoc/foldoc.cgi?memory+leak
>>748
間違い。
0750デフォルトの名無しさん
2006/02/24(金) 21:26:21自分で判ってて解放しない場合は?
>>747
リークって言葉の意味は判る?
>>743
成人用お襁褓でもしときなさい。
0751デフォルトの名無しさん
2006/02/25(土) 05:22:23p = malloc(1024);
p = malloc(1024);
free(p);
最初のmallocが返した領域はリークするけど
「解放したはずのメモリが解放されないこと」ではないよね。
>>750
わかってて解放しないのはリークとは言わないんじゃないかな。
一回だけ走って終了するプログラムならぜんぜん解放しないのもありでしょう。
0752デフォルトの名無しさん
2006/02/25(土) 05:48:390753デフォルトの名無しさん
2006/02/25(土) 06:05:58いやいや。プログラマーが忘れているの。でもコンピュータは忘れないからね。
0754デフォルトの名無しさん
2006/02/25(土) 06:08:280755デフォルトの名無しさん
2006/02/25(土) 07:04:15char *p = malloc(1024);
free(p);
とやっても、pが指すメモリが解放されないって意味にならないか?
0756デフォルトの名無しさん
2006/02/25(土) 09:08:34メモリリーク
0757デフォルトの名無しさん
2006/02/25(土) 09:33:52英語読めないヤツは翻訳して読め。
An error in a program's dynamic store allocation logic that causes it
to fail to reclaim discarded memory, leading to eventual collapse due
to running out of memory.
利用しなくなったメモリの回収失敗を引き起こすような
プログラムの動的領域確保ロジックの失敗。
これによりいつかメモリ枯渇による破綻を生みかねない。
0758デフォルトの名無しさん
2006/02/25(土) 09:58:10定義としてはこれが一番だな。
0759デフォルトの名無しさん
2006/02/25(土) 10:24:41free しても system に返されない分は到達不可能な訳だが。
0760デフォルトの名無しさん
2006/02/25(土) 11:00:47プログラム内の変数が押さえてるところ。
>free しても system に返されない分は到達不可能な訳だが。
malloc/free のライブラリが押さえてる。
0761デフォルトの名無しさん
2006/02/25(土) 11:07:31> プログラム内の変数が押さえてるところ。
変数に「到達可能な」と限定をつけないと駄目だよね。
UNIXプログラミングに関係ないからそろそろやめないか。
0762デフォルトの名無しさん
2006/02/25(土) 11:11:16じゃあ、おしまい。
0763デフォルトの名無しさん
2006/02/25(土) 11:15:350764デフォルトの名無しさん
2006/02/25(土) 11:23:55違和感ありまくりなんだが...
まぁ、どうでも良いけど。
0765デフォルトの名無しさん
2006/02/25(土) 11:29:50extern char *p;
〜
p = (char *) malloc(size);
// 以下pもpのアドレスもプログラム内に一切登場せず
でメモリリークだろ。
これから実行されるプログラムから到達可能じゃないといけない。
変数かどうかは関係ない。(たとえばreturn malloc(〜);など)
0766デフォルトの名無しさん
2006/02/25(土) 12:31:530767デフォルトの名無しさん
2006/02/25(土) 13:12:48バカは議論に参加するな。スレが荒れる
0768デフォルトの名無しさん
2006/02/25(土) 13:25:210769デフォルトの名無しさん
2006/02/25(土) 13:30:39リークの意味分かってないだろ。
0770デフォルトの名無しさん
2006/02/25(土) 13:33:490771デフォルトの名無しさん
2006/02/25(土) 13:44:190772デフォルトの名無しさん
2006/02/25(土) 16:06:500773デフォルトの名無しさん
2006/02/25(土) 16:13:090774デフォルトの名無しさん
2006/02/25(土) 16:53:30ってのを参照するAPIがあればいいんだがにゃー
0775デフォルトの名無しさん
2006/02/25(土) 16:58:42malloc debugでググってね
0776デフォルトの名無しさん
2006/02/25(土) 17:13:25見つけたとして、それを解放しちゃっていいかまでは判断できないんじゃ。
デバッグに使えるくらいだ。
0777デフォルトの名無しさん
2006/02/25(土) 17:27:210778デフォルトの名無しさん
2006/02/25(土) 17:43:120779デフォルトの名無しさん
2006/02/25(土) 17:49:550780デフォルトの名無しさん
2006/02/25(土) 18:14:150781デフォルトの名無しさん
2006/02/25(土) 18:24:52↑
>>778
0782デフォルトの名無しさん
2006/02/25(土) 21:34:570783デフォルトの名無しさん
2006/02/25(土) 21:54:330784デフォルトの名無しさん
2006/02/25(土) 22:21:220785デフォルトの名無しさん
2006/02/25(土) 22:35:300786デフォルトの名無しさん
2006/02/25(土) 23:02:180787デフォルトの名無しさん
2006/02/25(土) 23:26:350788デフォルトの名無しさん
2006/02/25(土) 23:41:410789デフォルトの名無しさん
2006/02/25(土) 23:48:27Macは・・・人いるのか?
0790デフォルトの名無しさん
2006/02/25(土) 23:55:380791デフォルトの名無しさん
2006/02/25(土) 23:57:580792デフォルトの名無しさん
2006/02/26(日) 00:21:300793デフォルトの名無しさん
2006/02/26(日) 02:08:06おしいな。forkを使えならよかったのに。
0794デフォルトの名無しさん
2006/02/26(日) 02:45:450795デフォルトの名無しさん
2006/03/02(木) 01:08:360796デフォルトの名無しさん
2006/03/02(木) 21:15:51一番良いでしょうか? caddr_t を使っているのをよく見ますが、types.h には
caddr_t は "core address" と書いてありました。core address ってどういう
意味でしょうか?
こういった、型の意味を探すのに皆さんどうされてますか?
POSIX や ANSI の規格表は必携?
0797デフォルトの名無しさん
2006/03/02(木) 22:10:520798デフォルトの名無しさん
2006/03/02(木) 22:37:18POSIX/SUS的には、そういうのは void *
0799デフォルトの名無しさん
2006/03/02(木) 23:35:52どうもありがとう!
0800デフォルトの名無しさん
2006/03/03(金) 06:50:13納得するなよw
> core address
には, 答えてもらってねぇぞ...
0801デフォルトの名無しさん
2006/03/03(金) 11:07:080802デフォルトの名無しさん
2006/03/03(金) 11:57:290803デフォルトの名無しさん
2006/03/03(金) 12:04:49http://burks.bton.ac.uk/burks/foldoc/57/25.htm
0804デフォルトの名無しさん
2006/03/03(金) 12:08:050805デフォルトの名無しさん
2006/03/06(月) 07:00:420806デフォルトの名無しさん
2006/03/06(月) 07:12:320807デフォルトの名無しさん
2006/03/06(月) 10:27:23pid_t find_pid() {
do {
++pid;
if (pid >= MAX_PID) pid = 0;
} while (空いてるのが見つかるまで)
}
0808デフォルトの名無しさん
2006/03/06(月) 21:55:29新しいPIDを作るところはカーネル内で一箇所だけなんで、
それだけ別関数になってたりはあまりしない。
おまけにナイーブすぎで、いまどきそんなカーネルは存在しない。
0809デフォルトの名無しさん
2006/03/06(月) 22:44:11君のレスは情報ゼロに等しいな。
0810デフォルトの名無しさん
2006/03/06(月) 23:48:540811デフォルトの名無しさん
2006/03/07(火) 00:16:160812デフォルトの名無しさん
2006/03/07(火) 09:09:09ぶっちゃけ>>807みたいな感じなんじゃないの?
OSによっては連続したidを使わずにスクランブルするのもあるけど。
うちのOSだと使ってるpidはハッシュ表に登録されてて、
それで空いてるかどうか判断してるようでつ。
0813デフォルトの名無しさん
2006/03/07(火) 09:59:55煽るのを止めはせんが
情報量自体に真偽は関係なく、情報量にマイナスというものは無い
0814デフォルトの名無しさん
2006/03/07(火) 11:23:060815デフォルトの名無しさん
2006/03/07(火) 11:40:05あるよ(w
減ればマイナスだから、見掛け情報量として扱う。
あ、もしかして負の数なんてものはない、-3匹の羊ってなんだよ、って人?
0816デフォルトの名無しさん
2006/03/07(火) 11:45:200817デフォルトの名無しさん
2006/03/07(火) 12:44:22徹夜明けの眠気覚ましにとしてつきあっちゃる
情報量と真偽は無関係なんだよ
つまり、偽のbitが >0 存在することになる。
問題は真のbitと偽のbitを相殺させるという
ポンコツな処理にある
0818デフォルトの名無しさん
2006/03/07(火) 12:46:100819デフォルトの名無しさん
2006/03/08(水) 03:36:56事象 E が確率 P(E) で起こるとき、E が起こったときに受け取る情報量は
I(E) = - log P(E)
これはどうやっても負にならん
0820デフォルトの名無しさん
2006/03/08(水) 08:26:590821デフォルトの名無しさん
2006/03/08(水) 10:10:250822デフォルトの名無しさん
2006/03/08(水) 22:39:130823デフォルトの名無しさん
2006/03/09(木) 12:07:210824デフォルトの名無しさん
2006/03/09(木) 19:03:050825デフォルトの名無しさん
2006/03/09(木) 19:14:580826デフォルトの名無しさん
2006/03/09(木) 19:18:31ありがとうございます。
0827デフォルトの名無しさん
2006/03/11(土) 19:10:540828デフォルトの名無しさん
2006/03/11(土) 19:18:390829デフォルトの名無しさん
2006/03/12(日) 01:57:00File system介さずってこと?
一般的には関連づけられたraw character deviceを読み書き。
UNIXenによって違うので、環境書くか、適当な板で。
0830デフォルトの名無しさん
2006/03/12(日) 16:08:33もっとも確実なファイルのロックの方法を教えてください。
0831デフォルトの名無しさん
2006/03/12(日) 16:18:550832デフォルトの名無しさん
2006/03/12(日) 18:57:280833デフォルトの名無しさん
2006/03/12(日) 23:19:28一応NFS越しでも掛かるし。
0834デフォルトの名無しさん
2006/03/12(日) 23:45:570835デフォルトの名無しさん
2006/03/13(月) 00:23:02あるんですけれど、どうやってタイマー関連の設定をすればいいのか
教えてもらえませんか?
0836デフォルトの名無しさん
2006/03/13(月) 00:24:59while(i++){
sleep(1);
if( i % 7 == 0 ) func7sec();
if( i % 30 == 0 ) func30sec();
}
0837デフォルトの名無しさん
2006/03/13(月) 00:30:22setitimer() 使うといいと思う。
0838デフォルトの名無しさん
2006/03/13(月) 00:32:01それではずれて行くと思うが?
0839デフォルトの名無しさん
2006/03/13(月) 00:58:42基本的な考え方を書いただけだろ?
while(i++){sleep(1);
のところを適当に工夫すりゃいいんじゃね?
iがたまたま初期値0だったら動かないな。
どうでもいいけど。
0840デフォルトの名無しさん
2006/03/13(月) 01:00:06やはり1秒ごとに発生させて、経過秒数を自分でカウントして
あげないといけないのですか?
0841デフォルトの名無しさん
2006/03/13(月) 01:37:410842デフォルトの名無しさん
2006/03/13(月) 01:42:52自分であと何秒待つべきかを管理して、一番小さいものをSleepに渡すことにします。
0843デフォルトの名無しさん
2006/03/13(月) 02:23:42ああそうか。ふたつか。そうだなあ。そうするしかないかなあやっぱ。
0844デフォルトの名無しさん
2006/03/13(月) 03:51:500845デフォルトの名無しさん
2006/03/13(月) 09:47:050846デフォルトの名無しさん
2006/03/13(月) 10:23:470847デフォルトの名無しさん
2006/03/13(月) 10:57:440848デフォルトの名無しさん
2006/03/15(水) 20:49:36linux上、c言語で文字列からFILE*を作ることは出来るのでしょうか。
c++のstringstreamのようなイメージです。
具体的には以下のような操作を考えています。
char str = "hoge";
FILE* f = unknown_func(str, "r");
int i = fgetc(f);
よろしくお願いします。
0849デフォルトの名無しさん
2006/03/15(水) 22:16:58ただしポータブルではありませんのでlinux以外の環境では使えません
0850848
2006/03/15(水) 22:52:57ごく私的な用で使う予定なので、移植性に関して当面は問題無さそうです。
0851デフォルトの名無しさん
2006/03/16(木) 14:54:40へぇ〜、最近のglibcはそんな関数を提供してるのか。参考になったよ。
0852デフォルトの名無しさん
2006/03/17(金) 03:27:040853http://www.vector.co.jp/soft/win95/util/se072729.html
2006/03/18(土) 20:57:07もしくは64bitにネイティブ対応したテキスト置換ソフトありますか?
そういや64bitにネイティブ対応している2chブラウザてありましたっけ?
0854デフォルトの名無しさん
2006/03/18(土) 21:02:160855デフォルトの名無しさん
2006/03/18(土) 22:34:29見るスレ全部にこのマルチコピペがあるぞ
0856デフォルトの名無しさん
2006/03/19(日) 00:36:170857デフォルトの名無しさん
2006/03/19(日) 01:38:00返答があるかどうか、全てのスレをチェックしているのだろうか?
0858デフォルトの名無しさん
2006/03/22(水) 12:40:28質問なんですが、UNIXで開発されたCshの拡張子がついたファイルを
windowsで実行させるにはどうしたらよいのですか?
0859デフォルトの名無しさん
2006/03/22(水) 12:43:25ttp://www.microsoft.com/japan/windows/sfu/
0860デフォルトの名無しさん
2006/03/22(水) 12:46:37http://www.cygwin.com/setup.exe
0861デフォルトの名無しさん
2006/03/22(水) 12:56:120862デフォルトの名無しさん
2006/03/22(水) 13:54:01cygwin入れろ
0863デフォルトの名無しさん
2006/03/25(土) 03:39:25ttp://gnuwin32.sourceforge.net/
0864デフォルトの名無しさん
2006/03/25(土) 09:08:560865デフォルトの名無しさん
2006/03/25(土) 17:28:59スレッドが費やした CPU 時間を得るにはどうすればよいですか?
sys/times.h の times() だとプロセス時間になるので困ってます.
0866デフォルトの名無しさん
2006/03/25(土) 17:35:250867865
2006/03/25(土) 17:50:53できるだけバージョンやベンダーに依存しない方法があれば良いのですが...
0868デフォルトの名無しさん
2006/03/25(土) 19:04:40poptSetOtherOptionHelp(optCon, "[OPTION...] <bar>");
のようにすると
--helpでUsage: foo [OPTION...] <bar>
と表示されるものの、
--usageでUsage: foo [-a A] [-b B] [OPTION...] <bar>
のようになってしまいます。
--usageの時にだけ[OPTION...]を外す方法はないですか?
0869デフォルトの名無しさん
2006/03/25(土) 19:12:170871デフォルトの名無しさん
2006/03/25(土) 21:33:010872デフォルトの名無しさん
2006/03/25(土) 21:51:53何とかって無いものは無い
poptを改造して開発元にパッチ送ればいいんじゃないの
0873デフォルトの名無しさん
2006/03/25(土) 23:22:09パッチパッチ
0875デフォルトの名無しさん
2006/03/28(火) 16:51:17opendirなどで検索するとphpのページはヒットするのですが、Cでの取得方法がわかりません。
0876デフォルトの名無しさん
2006/03/28(火) 17:00:33man opendir
0877デフォルトの名無しさん
2006/03/28(火) 17:01:58PHPでのサンプルを見ればそのままCにも応用できない?
うちのOSでは「man opendir」すると、そのものズバリのサンプルが書
かれてる。
0878デフォルトの名無しさん
2006/03/28(火) 17:22:160879デフォルトの名無しさん
2006/03/29(水) 18:58:510880デフォルトの名無しさん
2006/03/29(水) 19:36:10$ man ps
0881デフォルトの名無しさん
2006/03/30(木) 18:49:470882デフォルトの名無しさん
2006/03/30(木) 18:57:12nsleepがあるかもしれないな
0883デフォルトの名無しさん
2006/03/30(木) 20:08:560884デフォルトの名無しさん
2006/03/30(木) 21:04:280885デフォルトの名無しさん
2006/03/30(木) 23:20:29これは POSIX だし
0886デフォルトの名無しさん
2006/03/31(金) 00:48:58./cmd | tee cmd.log
だと表示もおかしくログもうまく取れません。
0887デフォルトの名無しさん
2006/03/31(金) 01:14:42man script
0888デフォルトの名無しさん
2006/03/31(金) 13:35:47つ[xwd]
0889デフォルトの名無しさん
2006/03/31(金) 21:37:560890デフォルトの名無しさん
2006/04/10(月) 11:20:470891デフォルトの名無しさん
2006/04/10(月) 12:10:320892デフォルトの名無しさん
2006/04/10(月) 20:40:25printf ("CPUの数は?\n");
int cpu_num;
scanf ("%d", &cpu_num);
0893デフォルトの名無しさん
2006/04/10(月) 22:15:43size_t len;
mib[0] = CTL_HW;
mib[1] = HW_NCPU;
len = sizeof(ncpu);
sysctl(mib, 2, &ncpu, &len, NULL, 0);
printf("CPUは%d個\n", ncpu);
どのOSの例かは教えてあげないんだからっ
0894デフォルトの名無しさん
2006/04/10(月) 22:27:400895デフォルトの名無しさん
2006/04/11(火) 06:48:500896デフォルトの名無しさん
2006/04/13(木) 15:51:24マウスでKtermを出そうとして透明の枠をクリックすると消えてしまい
ウインドウが出てくれません。
どうすればいいでしょうか
0897デフォルトの名無しさん
2006/04/13(木) 17:33:090898デフォルトの名無しさん
2006/04/13(木) 22:14:00>透明の枠
これが分からん。透明の枠って何の事?
コマンドラインで kterm と打つのじゃダメなんかいな。
0899デフォルトの名無しさん
2006/04/13(木) 22:34:22スレ違い。
0900デフォルトの名無しさん
2006/04/13(木) 22:40:38そっか、すまん。
0901デフォルトの名無しさん
2006/04/14(金) 02:43:450902デフォルトの名無しさん
2006/04/14(金) 03:18:080903デフォルトの名無しさん
2006/04/14(金) 11:10:58kterm & と打つと、田 (←実際には3x3)のような中が透明な枠が出て
ウィンドウの位置を指定するらしい状態にはなるんですが、
そこでボタンを押すと枠が消えるだけでKtermのウィンドウは出ないんです。
0904デフォルトの名無しさん
2006/04/14(金) 11:17:01プログラミングの話じゃないし、おまいの使ってる環境依存の話だから、
管理者か、周囲の詳しいやつに聞かないと解決しないよ。
0905デフォルトの名無しさん
2006/04/14(金) 11:52:36喪前が相手にするから居座ってるジャマイカ。
0906デフォルトの名無しさん
2006/04/14(金) 22:05:280907デフォルトの名無しさん
2006/04/15(土) 04:15:040908デフォルトの名無しさん
2006/04/15(土) 11:23:16HP-UX & aCC で作業をしてます。
1) 以下のようなことは出来ないのでしょうか。new の箇所がコンパイル時にエラーになります。
MyClass** a;
a = new (MyClass*)[ 8 ];
2) コンパイル時に以下のような箇所でエスケープシーケンスがどうとか怒られます。
どうやら「ソ」に反応しているようなのですが、回避の方法はあるでしょうか。
printf( "[%08d] ソケットがどうとか\n", code );
これまでほぼ Win 上での作業ばかりでしたが特に問題なかったような...
ボケをかましているだけなら良いのですが、何か勘違いをしているでしょうか。
ご教示頂ければ幸いです。
0909デフォルトの名無しさん
2006/04/15(土) 11:31:20手元に環境ないから適当だけど・・・
typedef MyClass* MyClassPtr;
とかしておいて、
a = new MyClassPtr[8];
とかやったらどうだろうね。
HP-UXはShift-JISじゃないっけ?
「ソ」の2バイト目がバックスラッシュじゃね?
0910デフォルトの名無しさん
2006/04/15(土) 11:40:37(1) カッコいらない
(2) Shift_JIS だと「ソ」の2バイト目が \
0911デフォルトの名無しさん
2006/04/15(土) 12:36:31HP全取得ツールみたいのを作りたいんですけど・・・
cURL で、ディレクトリの内容を再帰的に取得する方法ってありますか?
こういうのは、やっぱり wget なんでしょうか?
もしこういうことを実現するのに「〜使えば楽勝だろ」みたいなのが
あれば教えてください。
0912デフォルトの名無しさん
2006/04/15(土) 14:36:380913908
2006/04/15(土) 17:58:31ご返答ありがとうございました。
1) typedef と () 外し、試してみます。
ただ、() はなくてもエラーになってたような...
2) ということは「そケット」などと書かないとダメなのですね。
Solaris で問題なかったのは EUC だったからか。
UNIX って奥が深いです。
これまでの経験からは予想の出来ない問題がたくさんあって刺激的でおもしろいですね。
まあただの経験不足なのですが。(汗
0914デフォルトの名無しさん
2006/04/15(土) 18:02:21ソ\ケット
0915908
2006/04/15(土) 19:14:26>ソ\ケット
ぽん。なんで思いつかなかったのだろう。
ありがとうございました。
0916デフォルトの名無しさん
2006/04/17(月) 07:01:280917デフォルトの名無しさん
2006/04/17(月) 16:50:020918デフォルトの名無しさん
2006/04/17(月) 16:55:240919デフォルトの名無しさん
2006/04/17(月) 17:58:350920デフォルトの名無しさん
2006/04/17(月) 18:09:480921デフォルトの名無しさん
2006/04/17(月) 22:58:37gccはそうだよ。
0922908
2006/04/17(月) 23:12:13結果です。
1) () 外しで OK
2) 「ソ\ケット」で OK
() は境界が分かりづらいところに無意識につける癖が災いしてました。
ポインタのポインタのポインタなんて初めて使って余計混乱しちゃってましたし、
しゅぎょーしてきます...
>つ ンケット
今度やってみます。w
0923デフォルトの名無しさん
2006/04/18(火) 08:42:18configure時に--enable-c-mbcharかなんかつけてビルドしないとダメなんでしょ?
ちゃんと動くのかどうか知らないけど。
0924デフォルトの名無しさん
2006/04/18(火) 10:46:41gcc 3.4 からは -finput-charset で実行時に指定できる。
0925デフォルトの名無しさん
2006/04/18(火) 10:51:520926デフォルトの名無しさん
2006/04/18(火) 11:04:52locale でも上書きできるとなっている。
0927デフォルトの名無しさん
2006/04/18(火) 11:19:43ほんとだ知らんかった!
0928デフォルトの名無しさん
2006/04/18(火) 11:47:22gcc 3.3 以前だとデフォルトではマルチバイト文字を認識せず、configure 時
に --enable-c-mbchar を指定して gcc を作成する必要がある。ソースコード
と locale の文字セットが違う場合、env LANG=... gcc ... のようにする。
gcc 3.4 以降だと iconv が使える場合デフォルトで locale に応じたマルチバ
イト文字を認識する。ソースコードと locale の文字セットが違う場合、
-finput-charset でオーバーライドできる。
0929デフォルトの名無しさん
2006/04/18(火) 12:37:130930デフォルトの名無しさん
2006/04/18(火) 15:15:180931デフォルトの名無しさん
2006/04/18(火) 15:32:540932デフォルトの名無しさん
2006/04/18(火) 15:38:530933デフォルトの名無しさん
2006/04/18(火) 15:43:16{
/* This must be the "C" locale or unknown locale -- fall thru */
}
…
/* This must be the "C" locale or unknown locale. */
return mbtowc (pwc, s, n);
mbtowc()任せでlocale次第ってことですわね。
0934デフォルトの名無しさん
2006/04/19(水) 00:41:310935デフォルトの名無しさん
2006/04/19(水) 04:13:27デフォルトで有効になっているカレントディレクトリのファイル名補完機能を無効にし、
コマンドラインからの入力なしの状態でTabキーを押したらa_func b_func c_func と表示させ、
aを入力した状態でTabキーを押したらa_funcと補完させるプログラムを作りたいです。
サンプルが欲しいです
0936デフォルトの名無しさん
2006/04/19(水) 08:51:06FGETS_COMMAND_FILEから候補を読むところを、
a_func b_func c_funcで候補リストを作成。
0937935(GNU readline の質問)
2006/04/19(水) 10:50:05ありがとうございます。
さっそくやってみます。
0938デフォルトの名無しさん
2006/04/22(土) 19:24:09どこかシステムコールとかを詳しく解説してるとこってないでしょうか?
WindowsのAPI関数みたいなライブラリってあるのでしょうか?
0939デフォルトの名無しさん
2006/04/22(土) 19:37:25UnixのシステムコールはLinux関係のサイトに詳しい。
但し、HP-UXは独特なので、それらはHPのHP・・・じゃなくてサイトでしか入手できないかもしれない。
尚、WindowsAPIほど潤沢にAPIが用意されているわけではないので、(特にグラフィックは)何を使うか
事前に充分検討しておくことをお勧めしておく。
0940デフォルトの名無しさん
2006/04/22(土) 23:33:09ページくらいちゃんと見れやれよ。
http://h50146.www5.hp.com/doc/manual/
>>939
生半可な知識でいい加減な事言うなよ。
0941デフォルトの名無しさん
2006/04/23(日) 00:28:120943デフォルトの名無しさん
2006/04/23(日) 12:54:20あと「潤沢」てのは適切でないな
0944デフォルトの名無しさん
2006/04/24(月) 01:04:19それも含めて子供を生んだ後の問題なんじゃね?
0945デフォルトの名無しさん
2006/04/24(月) 06:47:450946デフォルトの名無しさん
2006/04/26(水) 02:15:22この時、可変長な値は予め最大サイズを決めて確保するべきなのでしょうか。
0947デフォルトの名無しさん
2006/04/26(水) 02:19:420948デフォルトの名無しさん
2006/04/28(金) 01:07:34Cでcpu使用率を取得するプログラムを書く場合
どの関数が必要になるんでしょうか
vmstatのソースをみていましたが、いまいちわかりません。
どうもcur構造体のcp_time要素に値が格納されているようなのですが・・・
ソースでいうと
1.このあたりとか
mysysctl("kern.cp_time", &cur.cp_time, &size, NULL, 0);
if (size != sizeof(cur.cp_time))
errx(1, "cp_time size mismatch");
2.ひょっとするとこのあたりではないかとにらんでいますが
static kvm_t *kd;
ヒントだけでもいいので、何かご存知の方・・・
0949デフォルトの名無しさん
2006/04/28(金) 01:08:38http://gobsd.com/code/freebsd/usr.bin/vmstat/vmstat.c
0950デフォルトの名無しさん
2006/04/28(金) 01:17:46#include <nlist.h>
0951デフォルトの名無しさん
2006/04/28(金) 04:51:020952デフォルトの名無しさん
2006/04/28(金) 06:14:37% sysctl kern.cp_time; sleep 5; sysctl kern.cp_time
kern.cp_time: 51464 1204 77516 4733 1238731
kern.cp_time: 51502 1204 77531 4733 1238743
この増分は 38 0 15 0 12 となり、合計 65 のうち CP_IDLE (sys/resource.h)
は 12 だから 1 - (12 / 65) = 0.815... で CPU 利用率は 82% になる。
0953デフォルトの名無しさん
2006/04/28(金) 12:55:29じゃあ次回からは「質問ある?」で
0954デフォルトの名無しさん
2006/04/28(金) 22:46:490955デフォルトの名無しさん
2006/04/28(金) 22:58:590956948
2006/04/29(土) 01:18:09返信ありがとうございます。
ヒント、というか、そのものズバリを教えていただけるとは思いませんでした。
うーむ、mysysctlはsysctlを使うのと同じものだったとわ・・
ありがとうございました^!
0957デフォルトの名無しさん
2006/05/01(月) 20:37:060958デフォルトの名無しさん
2006/05/01(月) 20:46:180959デフォルトの名無しさん
2006/05/01(月) 21:13:180960デフォルトの名無しさん
2006/05/02(火) 21:28:020961デフォルトの名無しさん
2006/05/02(火) 23:55:25mmapでよかったっけ?
あと、ファイルからデータ読み込む時
mmapでアタッチするのとopenのオプションにO_DIRECT付与するの
どっちが速いのでしょうか
0962デフォルトの名無しさん
2006/05/03(水) 00:01:10実測しろ
0963デフォルトの名無しさん
2006/05/03(水) 07:49:54旧称System V共有メモリ
0964デフォルトの名無しさん
2006/05/03(水) 07:51:44ちゃんとマニュアル読めよ。
0965デフォルトの名無しさん
2006/05/15(月) 02:46:37read/writeする必要があるんですが,ロックに関しては
どうするのが安全/高速ですか?
ロックに関してはアドバイザリーロックで問題ありません.
OSはFreeBSDもしくはLinuxです.
0966デフォルトの名無しさん
2006/05/15(月) 10:01:15一般的にはセマフォ。
0967デフォルトの名無しさん
2006/05/15(月) 11:41:26mlockでいいんじゃね?
0968デフォルトの名無しさん
2006/05/15(月) 19:08:010969デフォルトの名無しさん
2006/05/15(月) 19:17:320970965
2006/05/15(月) 23:22:39ありがとうございます.調べてみたところ,
名前付きセマフォ: カーネル内にロック情報を保持
メモリベースセマフォ: プロセス共通のSharedMemory内にロック情報を保持
SysVセマフォ: カーネル内にロック情報を保持
pthread_mutex: プロセス共通のSharedMemory内にロック情報を保持
pthread_rwlock: プロセス共通のSharedMemory内にロック情報を保持
って感じでになってて,プロセスの異常終了時のロックの
解放に関してはそれぞれ特徴があるみたいですね.
ロック期間中に変更したデータの整合性に関しては
プログラマ側に任されているみたいで,安全性に関しては
等価な印象です(間違ってたら指摘お願いします).
追加質問なのですが,FreeBSDもLinuxもセマフォに関しては
扱える上限数がカーネル設定で固定されているようです.
これを考えるとメモリアル限り自由にロックの粒度を
細かくできるmutexの方が使いやすいと思うんですが,
どうなんでしょう?
0971965
2006/05/15(月) 23:30:12今回の目的は確保したSharedMemoryを破壊しないように
同期のLockを行いたいというものでした.
mlock()は確保したメモリをswapさせないようにする関数なので,
今回の用途とは少し違うかと思います.
すいません.質問の仕方が悪かったみたいです
0972デフォルトの名無しさん
2006/05/15(月) 23:40:16manのftsを見ながら即興で組んでみたのですが、
(変数名適当です・・・)
以下のプログラムだと、/usr/以下の全ディレクトリ以外に
ファイル名も出力してしまいます。
ディレクトリ名のみを出力する方法はないでしょうか・・・
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fts.h>
main(){
FTS *dir;
FTSENT *fts;
char *path[2]={"/usr", NULL};
if((dir=fts_open(path,FTS_PHYSICAL|FTS_NOCHDIR,NULL))==NULL){
perror("opendir error");
exit(-1);
}
for(fts=fts_read(dir);fts!=NULL;fts=fts_read(dir)){
printf("%s\n",fts->fts_path);
}
close(dir);
return 0;
}
0973デフォルトの名無しさん
2006/05/15(月) 23:47:07fts_statp を見ろ
0974デフォルトの名無しさん
2006/05/15(月) 23:50:070975デフォルトの名無しさん
2006/05/16(火) 11:44:58if (fts->fts_info == FTS_D)
printf("%s\n",fts->fts_path);
0976デフォルトの名無しさん
2006/05/17(水) 00:34:59>>973
>>974
なるほど、ヘッダファイルでFTS_Dを1としてdefineしていたんですね・・・
今までそれがわからずにcoreを吐かせまくってましたが、
おかげさまで狙い通りの値がとれるようになりました。
ttp://mirror.sg.depaul.edu/pub/OpenBSD/src/include/fts.h
ありがとうございました!
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fts.h>
main(){
FTS *dir;
FTSENT *fts;
char *path[2]={"/usr", NULL};
if((dir=fts_open(path,FTS_PHYSICAL,NULL))==NULL){
perror("opendir error");
exit(-1);
}
for(fts=fts_read(dir);fts!=NULL;fts=fts_read(dir)){
/* FTS_D is defined as 1 in fts.h */
if(fts->fts_info==FTS_D){
printf("%s\n",fts->fts_path);
}
}
fts_close(dir);
return 0;
}
0977デフォルトの名無しさん
2006/05/17(水) 14:44:561 だとか 2 だとかコメントに書かないほうが良いよ。
別の OS で FTS_D が 2 だったら、コメントも変えるの?
0978デフォルトの名無しさん
2006/05/17(水) 16:02:12Linux なら /proc/sys/kernel/sem で拡張できるよ
0979970
2006/05/17(水) 17:06:40>Linux なら /proc/sys/kernel/sem で拡張できるよ
情報ありがとうございます.FreeBSDならkern.ipc.semm*
あたりで変更できますね.
FreeBSDもLinuxも内部機構を知らないのでなんなのですが,
OS側で数を制限しているからには数を増やすとそれなりに
パフォーマンスが落ちると思うんですね.
mutexの場合はロックの粒度に応じてthread_mutex_tの変数を
プロセス共通のシェアードメモリに必要なだけ確保すればいい
だけなので,セマフォより使いやすいのかなと思ったんです.
0980970
2006/05/17(水) 17:31:46Unix板でやれという意見もあるようですが.
0981デフォルトの名無しさん
2006/05/17(水) 17:48:450982デフォルトの名無しさん
2006/05/17(水) 17:49:08pthread_mutexがprocessを越えても有効かどうかは環境依存。
0983970
2006/05/17(水) 21:05:15>pthread_mutexがprocessを越えても有効かどうかは環境依存
なるほど.情報ありがとうございます.調べてみたところ
確かにその通りでした.
PTHREAD_PROCESS_SHARED
はLinuxではNativeでサポート,FreeBSDは未サポートなので、
portsでlinuxthreadsを入れる必要があるようですね.
http://www.unobvious.com/bsd/freebsd-threads.html
0984デフォルトの名無しさん
2006/05/18(木) 00:19:14UNIXのプログラムの質問をするスレなんだからUNIX板だろ
0985デフォルトの名無しさん
2006/05/18(木) 00:32:59どっちでもいいから、次スレは同じ板に立てるのがデフォルトってことで、プログラム板だろ。
0986デフォルトの名無しさん
2006/05/18(木) 00:49:02この板で全然いいでしょう。
0987デフォルトの名無しさん
2006/05/18(木) 00:58:19WIN32APIのスレで同じこと言えよ。
0988デフォルトの名無しさん
2006/05/18(木) 01:12:180989デフォルトの名無しさん
2006/05/18(木) 07:19:07>プログラミング質問すれ Part1 http://pc8.2ch.net/test/read.cgi/unix/1127388574/
0990970
2006/05/18(木) 19:01:55UNIXプログラミング質問すれ Part8
http://pc8.2ch.net/test/read.cgi/tech/1147946176/
0991デフォルトの名無しさん
2006/05/18(木) 22:05:380992デフォルトの名無しさん
2006/05/20(土) 22:01:200993デフォルトの名無しさん
2006/05/20(土) 22:02:140994デフォルトの名無しさん
2006/05/20(土) 22:03:350995デフォルトの名無しさん
2006/05/20(土) 22:04:360996デフォルトの名無しさん
2006/05/20(土) 22:07:280997デフォルトの名無しさん
2006/05/20(土) 22:08:210998デフォルトの名無しさん
2006/05/20(土) 22:09:210999デフォルトの名無しさん
2006/05/20(土) 22:10:121000デフォルトの名無しさん
2006/05/20(土) 22:11:0410011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。