UNIXプログラミング質問すれ Part6
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2005/05/24(火) 13:14:50前スレ
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/
関連板
http://pc8.2ch.net/unix/
http://pc8.2ch.net/linux/
0002デフォルトの名無しさん
2005/05/24(火) 13:15:26The 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/
0003デフォルトの名無しさん
2005/05/24(火) 13:15:56http://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
0004デフォルトの名無しさん
2005/05/24(火) 13:16:39ネットワークプログラミング相談室 Port13
http://pc8.2ch.net/test/read.cgi/tech/1109793931/
マルチスレッドプログラミング相談室 その3
http://pc8.2ch.net/test/read.cgi/tech/1098268137/
0005デフォルトの名無しさん
2005/05/24(火) 15:54:320006デフォルトの名無しさん
2005/05/24(火) 15:56:07rmの何が不満だ?
0007デフォルトの名無しさん
2005/05/24(火) 15:56:09いいえ
0008デフォルトの名無しさん
2005/05/24(火) 16:15:270009デフォルトの名無しさん
2005/05/24(火) 16:30:28でも作っておけばいい
0010デフォルトの名無しさん
2005/05/24(火) 17:38:11(・∀・)ソレダ!!
0011デフォルトの名無しさん
2005/05/24(火) 18:20:090012デフォルトの名無しさん
2005/05/24(火) 18:48:210013デフォルトの名無しさん
2005/05/24(火) 20:26:48remove() って無い?
0014デフォルトの名無しさん
2005/05/24(火) 22:49:17こちらで質問させてください。
iconv関数で、EUC→ISO-2022-JP
変換はできないのでしょうか?
openでは正常リターンするのですが、
iconv関数を発行するとエラーになります・・・
0015デフォルトの名無しさん
2005/05/24(火) 22:55:38001614
2005/05/24(火) 23:06:54LINUX Redhat ES2.1です。
コンパイラはgccです。
今気付いたんですけど、
LINUXスレのスレ違いでしたかね?
0017デフォルトの名無しさん
2005/05/24(火) 23:16:560018デフォルトの名無しさん
2005/05/24(火) 23:19:20Windows: UNIX 嫌いが作った
0019デフォルトの名無しさん
2005/05/24(火) 23:19:560020デフォルトの名無しさん
2005/05/24(火) 23:38:05と煽ってみるテスツw
0021デフォルトの名無しさん
2005/05/25(水) 00:47:37煽るスレ間違ってる
0022デフォルトの名無しさん
2005/05/25(水) 20:10:13002314
2005/05/25(水) 21:27:14でオープンして、"あいうえお"を変換してみたところ、
errnoがEILSEQ(無効なマルチバイトあり)となってしまいました。
ためしに、
iconv_open("SHIFT_JIS", "EUC-JP");
に変えてみたところ、きちんと変換はされています。
出力バッファも十分に確保していますし、
何か思い当たることがありましたらお願いします。
0024デフォルトの名無しさん
2005/05/25(水) 21:34:340025デフォルトの名無しさん
2005/05/25(水) 21:43:32"あいうえお"の前後にエスケープシークエンスがついてないと
だめだと思う。
0026デフォルトの名無しさん
2005/05/26(木) 01:53:560027デフォルトの名無しさん
2005/05/26(木) 07:22:580028デフォルトの名無しさん
2005/05/27(金) 06:23:350029デフォルトの名無しさん
2005/05/27(金) 07:02:170030デフォルトの名無しさん
2005/05/27(金) 07:04:20プログラムから
0031デフォルトの名無しさん
2005/05/27(金) 07:38:040032デフォルトの名無しさん
2005/05/27(金) 08:36:070033デフォルトの名無しさん
2005/05/27(金) 10:07:22if(modifiers(void) & B_NUM_LOCK){
//NumLockがONになってる
}
0034デフォルトの名無しさん
2005/05/27(金) 10:13:500035デフォルトの名無しさん
2005/05/27(金) 14:13:230036デフォルトの名無しさん
2005/05/27(金) 23:17:14sleep関数は秒指定だし、BSDではselect関数のtimeval構造体のtv_usecが無視されるし…
0037デフォルトの名無しさん
2005/05/27(金) 23:18:510038デフォルトの名無しさん
2005/05/27(金) 23:19:06と、ここまで書いて、tv_usecが無視される?
いったどこのBSD?
寝過ぎる事があるから使えないとか言わないでくれよ。
0039デフォルトの名無しさん
2005/05/27(金) 23:38:130040デフォルトの名無しさん
2005/05/28(土) 09:27:570041デフォルトの名無しさん
2005/05/28(土) 14:36:24「n秒たったら処理を再開する」わけではないよ
OSの都合で処理がいつまでも復帰しない可能性はある
0042デフォルトの名無しさん
2005/05/28(土) 14:52:25ビジーループを回すのが確実
0043デフォルトの名無しさん
2005/05/28(土) 14:54:22ないんじゃないの
0044デフォルトの名無しさん
2005/05/28(土) 15:04:560045デフォルトの名無しさん
2005/05/28(土) 15:07:31で変換後の文字列のバイト数、要するにoutbytesleftに最低限必要な値を求める方法って何かないでしょうか?
i
0046デフォルトの名無しさん
2005/05/28(土) 15:09:220047デフォルトの名無しさん
2005/05/28(土) 15:40:28iconvの変換器は状態を持つので、一回それで試してバッファを確保してもう
一度……という使い方は間違ってる。
0048デフォルトの名無しさん
2005/05/30(月) 06:20:200049デフォルトの名無しさん
2005/05/30(月) 06:51:020050デフォルトの名無しさん
2005/05/30(月) 07:06:530051デフォルトの名無しさん
2005/05/30(月) 08:50:160052デフォルトの名無しさん
2005/05/30(月) 09:49:110053デフォルトの名無しさん
2005/05/30(月) 11:05:07あの系統の本で新しいの(日本語がいいなぁ)って出てないの?
0054デフォルトの名無しさん
2005/05/30(月) 11:21:01日本語訳のことは知らないが、まあそのうち出るんじゃないか。
0055デフォルトの名無しさん
2005/05/30(月) 14:07:17pipeかどうかはfstat(2)してS_ISFIFOで。
005653
2005/05/31(火) 11:05:022nd Ed. でてたのか!
早く日本語訳出ないかなぁ。
あとUNIX Network Programming (SCTPとか追加になったやつ)のやつも翻訳でてほしい。
>篠田先生よろしくお願いします。m(_ _)m
0058デフォルトの名無しさん
2005/05/31(火) 11:48:25あぷえ?
0059デフォルトの名無しさん
2005/05/31(火) 11:49:35006054
2005/05/31(火) 11:50:320061デフォルトの名無しさん
2005/05/31(火) 12:03:03Additionalなんとかさんがそれなのあぷえ
0062デフォルトの名無しさん
2005/05/31(火) 19:32:46あと10日
0063デフォルトの名無しさん
2005/06/03(金) 05:18:55知ることができるし。現在のUNIXについて知りたいなら、今ある
資料読めばいいし。
0064デフォルトの名無しさん
2005/06/03(金) 09:33:010065デフォルトの名無しさん
2005/06/03(金) 10:02:21いや、それをいうなら70年代後半。。
0066デフォルトの名無しさん
2005/06/03(金) 17:02:43なければおまえがつくってください >>67
0067デフォルトの名無しさん
2005/06/03(金) 17:07:13Emacs
0068デフォルトの名無しさん
2005/06/03(金) 17:07:190069デフォルトの名無しさん
2005/06/03(金) 18:03:500070デフォルトの名無しさん
2005/06/03(金) 18:39:590071デフォルトの名無しさん
2005/06/03(金) 22:09:55関数名補完とかは無いけど。
0072デフォルトの名無しさん
2005/06/04(土) 13:53:58ホームディレクトリに関数名のファイルをいっぱい作っておくと言うのはどうか ?
0073デフォルトの名無しさん
2005/06/04(土) 15:17:53echoでプログラム書く気か?
0074デフォルトの名無しさん
2005/06/04(土) 15:37:28>>72 からどう考えたら、「echo でプログラム書く気か?」
なんて考えに至るのか非常に興味がある。
0075デフォルトの名無しさん
2005/06/04(土) 15:59:510076デフォルトの名無しさん
2005/06/04(土) 16:00:31と考えたのではないか
0077デフォルトの名無しさん
2005/06/04(土) 16:02:03Cでは大して役にたたんだろう
0078デフォルトの名無しさん
2005/06/05(日) 00:15:050079デフォルトの名無しさん
2005/06/05(日) 10:34:530080デフォルトの名無しさん
2005/06/05(日) 11:14:420081デフォルトの名無しさん
2005/06/05(日) 12:29:550082デフォルトの名無しさん
2005/06/05(日) 12:51:270083デフォルトの名無しさん
2005/06/05(日) 12:55:00{;;;;;;ゝ T辷iフ i f'辷jァ !i;;;;;
ヾ;;;ハ ノ .::!lリ;;r゙ UNIXにMacのGUIがつけば最強
`Z;i 〈.,_..,. ノ;;;;;;;;> そんなふうに考えていた時期が
,;ぇハ、 、_,.ー-、_',. ,f゙: Y;;f 俺にもありました
~''戈ヽ `二´ r'´:::. `!
0084デフォルトの名無しさん
2005/06/05(日) 13:00:410085デフォルトの名無しさん
2005/06/06(月) 03:27:440086デフォルトの名無しさん
2005/06/06(月) 03:34:38super oppaiか?
0087デフォルトの名無しさん
2005/06/06(月) 03:40:240088デフォルトの名無しさん
2005/06/06(月) 06:37:490089デフォルトの名無しさん
2005/06/06(月) 07:34:200090デフォルトの名無しさん
2005/06/06(月) 07:54:420091デフォルトの名無しさん
2005/06/06(月) 09:44:180092デフォルトの名無しさん
2005/06/06(月) 09:53:47貧乳が(・∀・)イイ!!
0093デフォルトの名無しさん
2005/06/06(月) 16:52:01呼んだ?w
処で質問。Solaris9のccって、C99? C89互換のオプションってあるんでしょうか。
#出先なので調べられないもんで。
0094デフォルトの名無しさん
2005/06/06(月) 20:03:38噴いたw
0095デフォルトの名無しさん
2005/06/06(月) 20:15:11c89 も c99 もコマンドとして提供されている
0096デフォルトの名無しさん
2005/06/06(月) 20:23:520097デフォルトの名無しさん
2005/06/07(火) 13:52:460098デフォルトの名無しさん
2005/06/07(火) 14:01:24ふーん、so
0099デフォルトの名無しさん
2005/06/07(火) 17:13:33using namespace std;
int main(){
cout << "Content-type: text/html\n\n" << endl;
cout << "test1" << endl;
char *s = (char *)malloc(atoi(getenv("CONTENT_LENGTH")));
cout << "test2" << endl;
free(s);
}
このプログラムをCONTENT_LENGTHが発生しない方法で起動するとtest1までしか出力されない。
という事は、freeが行われずにメモリリークが発生するのでしょうか?
0100デフォルトの名無しさん
2005/06/07(火) 18:40:010101デフォルトの名無しさん
2005/06/07(火) 18:42:190102デフォルトの名無しさん
2005/06/07(火) 19:23:320103デフォルトの名無しさん
2005/06/08(水) 01:05:05# 発生したことが分かったところでどうしようもない場合も多いが
0104デフォルトの名無しさん
2005/06/08(水) 01:22:12すごいことになりそうな悪寒。
0105デフォルトの名無しさん
2005/06/08(水) 01:35:150106デフォルトの名無しさん
2005/06/08(水) 07:55:220107デフォルトの名無しさん
2005/06/08(水) 08:21:590109デフォルトの名無しさん
2005/06/08(水) 15:40:14> cout << "Content-type: text/html\n\n" << endl;
UNIXでは、\r\n\r\n ですんで、よろしく。
0110デフォルトの名無しさん
2005/06/08(水) 17:36:19ところで、MIMEヘッダーフィールドのセパレータは
CRLFとRFC2045で明確に定義されている。だから99のコードの最終目的
によってはOSに関係なくCRLFでなければならない。
0111デフォルトの名無しさん
2005/06/08(水) 17:44:530112110
2005/06/08(水) 17:46:57CRLFって決まってる。
ちなみにその後の出力でendlを使ってるけど、これはRFCでクライアントは
Content-type: textのメッセージボディの行末はCR/LF/CRLFのいずれでも
許容しなければならないって決まってるから、これはOK。
0113110
2005/06/08(水) 17:49:350114デフォルトの名無しさん
2005/06/08(水) 17:54:270115デフォルトの名無しさん
2005/06/08(水) 20:19:550116デフォルトの名無しさん
2005/06/08(水) 21:59:31読み書きできるようにはなったのですが
領域をmemcpy()などに渡そうとするとSegmentation Faultになります。
どうすれば渡すことができるようになるでしょうか。
Linux kernel2.4です。
0117デフォルトの名無しさん
2005/06/08(水) 22:21:06読み手はエスパーじゃないんだから、問題のソースぐらい引用せよ
0118デフォルトの名無しさん
2005/06/08(水) 22:36:200119116
2005/06/08(水) 22:36:32ソースをかいつまんで書くと
src=mmap(NULL, 0x800000, PROT_READ|PROT_WRITE, MAP_PRIVATE, fd, 0);
//memcpy( src, dst, 0x800000 );//これは落ちる
cnt=0x800000;while(cnt--) *dst++=*src++;//これは通る
という感じなんです。問題の見誤りなのでしょうか。
0120デフォルトの名無しさん
2005/06/08(水) 22:38:520121デフォルトの名無しさん
2005/06/08(水) 22:40:240122116
2005/06/08(水) 22:43:22すんません、いま書き間違えました。
0123デフォルトの名無しさん
2005/06/08(水) 22:53:370124116
2005/06/08(水) 23:54:31情報ありがとうございます。
すこしぐぐってみたところ、ファイルをmmap()するときに
マップしたサイズの実体を作るために必要みたいですね。
今回のとはもしかしたら関係ないかも。
でも試してみます。
0125デフォルトの名無しさん
2005/06/09(木) 00:17:07デバイス相手ならシークしなくてもよかったと思うが、
本番前に/dev/memあたりで動作確認してみりゃいいんでは?
0126116
2005/06/09(木) 00:41:48情報ありがとうございます。
雰囲気的に問題が別のところにありそうで
いろいろやり足りてなかったと思いはじめました。
もう少しがんばってみます。
0127デフォルトの名無しさん
2005/06/09(木) 01:16:09UNIXを使うとWindowsを使うのに比べてより良い
セックスライフが送れますか?
0128デフォルトの名無しさん
2005/06/09(木) 01:18:59センスのカケラも無い人間だな
0129デフォルトの名無しさん
2005/06/09(木) 01:21:05windowsを使う→winnyでウハウハ→おかずたくさん→
新鮮で気持ちいい→相方放置
unixを使う→winnyが動かない→おかずが足りない→
一人でできない→相方とハァハァ
答:送れる
0130デフォルトの名無しさん
2005/06/09(木) 02:40:57センスのカケラも無い人間だな
0131デフォルトの名無しさん
2005/06/09(木) 06:59:05/dev/zero ならまあいいけど。
0132デフォルトの名無しさん
2005/06/09(木) 13:35:27> cout << "Content-type: text/html\n\n" << endl;
> (略)
> cout << "test2" << endl;
cout << "Content-type: text/html\r\n\r\n";
(略)
cout << "test1\r\n" << flush;
0133デフォルトの名無しさん
2005/06/15(水) 12:49:56プログラムを作成したいのですが、処理の方法や関数等がわかりません
御教授いただければ助かります。よろしくお願いします。
ソラリスです。
0134デフォルトの名無しさん
2005/06/15(水) 12:52:590135デフォルトの名無しさん
2005/06/15(水) 12:58:100136133
2005/06/15(水) 13:07:12直下だけは以下のコードで求められるようなのですが
次々にその配下のファイルを列挙する方法はどのうような仕組みにすれば
実現可能でしょうか?
#include <sys/types.h>
#include <dirent.h>
DIR *dp;
struct dirent *dir;
if ( (dp=opendir("/usr/bin")) == NULL ){
/* エラー */
}
/* カレントディレクトリのファイル一覧を表示 */
while ((dir = readdir(dp)) != NULL ){
printf("%s\n",dir->d_name);
}
0137デフォルトの名無しさん
2005/06/15(水) 13:19:200138デフォルトの名無しさん
2005/06/15(水) 13:19:38system("find DIR > TXT");
どうしても自前でreaddir()するなら、自分でディレクトリを展開しないといけない。
0140デフォルトの名無しさん
2005/06/15(水) 14:10:460141133
2005/06/15(水) 14:14:51すみません。system("find DIR > TXT"); だと自前しなくて
組めるという事でしたか。今必死にぐぐっているのですが
どのように使うのかわかりません。
お願いします。
0142デフォルトの名無しさん
2005/06/15(水) 14:17:44やってみたら?
DIRとTXTを適当に書き換えて。
0143デフォルトの名無しさん
2005/06/15(水) 14:18:010144デフォルトの名無しさん
2005/06/15(水) 14:20:58(勉強のために)プログラムを書くのが目的ならいいけど、
>指定DIR配下のファイル名全てを列挙してTXTファイルに出力する
が目的だったら、いちいちプログラム書くのはアフォだよ。
0145133
2005/06/15(水) 14:35:13了解しました。一度ためしてみます。
ちなみに
cc test.c の命令でコンパイル実行してるのですがデバッグモードのような追跡は
どのようにすれば良いですか?教えてもらってばかりですみません。
お願いします。
>>143
再度検索します。ありがとうございます。
>>144
勉強でつくってみています。只の列挙であればLSコマンドの
ほうが便利ですよね。
0146133
2005/06/15(水) 14:37:370147デフォルトの名無しさん
2005/06/15(水) 14:43:42gdb
0148デフォルトの名無しさん
2005/06/15(水) 14:46:01ソラリスだと dbx かなんか使うんでないかな。
0149133
2005/06/15(水) 14:47:19gdb test.c という解釈ですね?
0150デフォルトの名無しさん
2005/06/15(水) 14:47:35ftw(3), nftw(3)
0151デフォルトの名無しさん
2005/06/15(水) 14:49:02みんながこんだけキーワード出してんだから、マニュアルとか嫁よ。
0152デフォルトの名無しさん
2005/06/15(水) 14:51:15会社の部下だったら首にしてるよ
0153133
2005/06/15(水) 14:57:46このような関数もあるのですね。勉強になります。
ありがとうございました。
>>151 親身な御指導ありがとうございます。
>>152 未成年なのでまだ働けませんが、社会にでて
へまをしないように頑張りたいと思います。
御指導ありがとうございます。
0154デフォルトの名無しさん
2005/06/15(水) 15:02:15おまえみたいなクソじゃだめだろうよ
0155デフォルトの名無しさん
2005/06/15(水) 15:04:100156デフォルトの名無しさん
2005/06/15(水) 15:08:460157133
2005/06/15(水) 16:11:41サンプルを見つけたのですが英語ばかりで皆目がつきません
int ret;
ret = ftw(strPath,ftwFunc,Depth,flg);
とこのような呼出し例を見つけたのですが、大体1つめのパラメタは検討がつくのですが
他がさぱり解りません。
ftwFuncにDIRかどうかの結果が返るという事ですよね。おそらく。
当方でうまくデバッグできないのでやっつけ本番になってしまい怖い感じです。
引き続きご協力いただければサイワイです。お願いします。
0158デフォルトの名無しさん
2005/06/15(水) 16:15:31とんでもない言論弾圧法案=「人権擁護法」が国会に提出されようとしています!!!
この法案の真の狙いは、
�@社会的には、2ちゃん/ブログをはじめとしたネット世界の一般人の小うるさい言論の圧殺であり、
�A政治的には、拉致問題強硬派&在日参政権反対の自民右派の消滅です。
民族(朝鮮・中国・韓国)/ 同和 /信条(宗教・層化・赤化)他に関する一切の差別的発言を禁じるという狂気の法律です。
この法律の前例の無い恐ろしい特徴は、特定人に関する言動は当然、不特定多数の集団に関する一般的発言
(朝鮮人は〜〜と書くこと)までも圧殺しようとする点にあります。
◆違反者には、無令状捜索・差押、出頭要求、矯正教育が待っており、それを拒否すると、
さらに罰金30万&氏名・住所などの全国晒し上げを食らう(61条)という仰天内容です。
一刻も早く、防戦する安部先生達に、日本国民の怒涛の援護射撃をお願い致します!!!
※※以下5つともアドレス中に★をはさんであります、★を消去の上、どうか必ずご覧下さい!!※※
http://zinkenvip.fc2web.co★m/
http://blog.livedoor.jp/no_gest★apo/
http://blog.livedoor.jp/monste★r_00/
↑↑【凶悪法案の問題点&背景の全て】
http://www.kantei.go.jp/jp/forms/goik★en.html
↑↑【首相官邸ご意見フォーム】イメージと違って、ここは非常に効果ありです!
全部読んでくれます、投稿テーマで返事が変わります!
http://meyasu.jimin.or.jp/cgi-bin/jimin/mey★asu-entry.cgi
↑↑【自民党目安箱】事態は急を告げています。文章は簡単でいいので、国民の「人権擁護法」への反対意思を、
とにかく 1 秒 も 早 く 党本部に伝えて下さい!
■□■人権擁護法ストップin日比谷公会堂 6/19(日)12:30〜16:00超大物国会議員登場・皆さん大挙してご参加を■□■
0159デフォルトの名無しさん
2005/06/15(水) 16:16:19馬鹿かおまえは
なんでも手とり足とりやってやんなきゃわからんのか
「初心者だから」を免罪符にすることは許されん
金はらってアビバにでも行きな
0160ttp://www.linux.or.jp/JM/html/LDP_man-pages/man3/ftw.3.html
2005/06/15(水) 16:24:13何度も言うけど、マニュアルを嫁よ。
そんで、ここで出てきたキーワードをつかってググりまくれ。
今の世の中、大半のことは半日ググりまくればそれなりにわかる。
英語が苦手ならオンラインの辞書やら翻訳サイトやらも利用できる。
0161133
2005/06/15(水) 16:29:520162デフォルトの名無しさん
2005/06/15(水) 16:31:080163デフォルトの名無しさん
2005/06/15(水) 16:31:540164デフォルトの名無しさん
2005/06/15(水) 18:30:270165デフォルトの名無しさん
2005/06/15(水) 22:52:20# 面倒だからdocs.sun.comは探さないけど。
↓Linuxの
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/nftw.3.html
0166デフォルトの名無しさん
2005/06/16(木) 00:09:520167デフォルトの名無しさん
2005/06/16(木) 11:47:52まだ届いてないんじゃない?
0168デフォルトの名無しさん
2005/06/16(木) 12:56:24ttp://www.awprofessional.com/title/0201433079
Available: Jun 17, 2005ってなっている。
ついでに21st Century Compilersも調べたらいつのまにか2007年になっているし…。
2003年くらいのはずだったのに。
0169133
2005/06/16(木) 13:11:36ありがとうございます。参考にしてなんとかイメージ的に
コード作ってみたのですが、貼りますので指摘いただいても良いですか?
まだコンパイル通していません
0170デフォルトの名無しさん
2005/06/16(木) 13:17:10それはひょっとしてジョークで言ってるのか?
0171133
2005/06/16(木) 13:20:22で挑戦してみた次第です。貼ってみても良いですか?
0172デフォルトの名無しさん
2005/06/16(木) 13:22:290173133
2005/06/16(木) 13:24:04だめでしょうか?駄目であれば諦めます。
0174デフォルトの名無しさん
2005/06/16(木) 13:33:40糞なら貼るな。それなりにできたと思うのならアップローダを使え。
0175133
2005/06/16(木) 13:39:210176デフォルトの名無しさん
2005/06/16(木) 13:42:52ダメ。絶対。
0177133
2005/06/16(木) 13:44:54だめでしょうか?
0178デフォルトの名無しさん
2005/06/16(木) 13:46:520179デフォルトの名無しさん
2005/06/16(木) 13:56:150180133
2005/06/16(木) 14:26:160181デフォルトの名無しさん
2005/06/16(木) 15:07:37せめてコンパイルくらい通してくれ
0182デフォルトの名無しさん
2005/06/16(木) 15:08:490183デフォルトの名無しさん
2005/06/16(木) 15:14:03>>178 「先っちょだけでいいからさぁ」ってやつ?
>>181 同意
0184デフォルトの名無しさん
2005/06/16(木) 15:17:12>180 133 2005/06/16(木) 14:26:16
この間にアップローダの使い方くらいいくらでも調べられそうな気がするが。
0185133
2005/06/16(木) 15:18:470186デフォルトの名無しさん
2005/06/16(木) 15:22:100187デフォルトの名無しさん
2005/06/16(木) 15:24:400188デフォルトの名無しさん
2005/06/16(木) 15:27:17馬鹿かおまえは
もう自分で解決できるだろ
うせろよ
0189133
2005/06/16(木) 15:28:01お願いします。見た感じ一覧が取得できそうだったのですが、サブフォルダ配下
のファイル列挙が行われていなさそうなのです。
2レスにわけます。
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <stdlib.h>
#include <ftw.h>
#include <time.h>
#include <dirent.h>
int fn (const char *, const struct stat *, int);
void main (int argc, char *argv[] ){
if (ftw (argv[1], fn, 10) != 0)
perror ("ftw"); exit (2);
exit (0);
}
0190133
2005/06/16(木) 15:29:10int i;
char *basename;
DIR *dp;/*DIRの定義*/
struct dirent *dir;/*DIRの構造体*/
struct stat buf;/*ファイル情報の構造体*/
int result;/*処理の結果戻り値*/
if (flag == FTW_D){/*ディレクトリの場合は配下の情報取得を行う*/
if ( (dp=opendir(name)) == NULL ) /*DIRを開く*/
perror( "指定されたディレクトリが存在しません。" );
while ((dir = readdir(dp)) != NULL ){/* カレントディレクトリのファイル一覧を取得 */
result = stat(dir->d_name, &buf );
if( result != 0 )/* ファイル状態情報が取得できたかのチェック */
perror( "ファイルの情報の取得に失敗しました。" );
else{
printf( "file : %s\n", dir->d_name );
printf( "size : %ld\n", buf.st_size );
printf( "Date : %s", ctime( &buf.st_mtime ) );
}
}
return 0;
}
return 0;
}
つっこみどころ満載だと予見しておりますが、必死に頑張りましたので
御教授お願いいたします。
0191デフォルトの名無しさん
2005/06/16(木) 15:31:470192デフォルトの名無しさん
2005/06/16(木) 15:32:06馬鹿かおまえは
アビバに行けよ
0193デフォルトの名無しさん
2005/06/16(木) 15:35:45つーか新手の荒らしだろ
イヤガラセ
0194デフォルトの名無しさん
2005/06/16(木) 15:40:52ここまで読んでやめた
0195デフォルトの名無しさん
2005/06/16(木) 15:41:41いや、アビバに行くとか以前に日本語の勉強が必要だろ。
0196133
2005/06/16(木) 15:52:31すみません。通常intですね。理解しています。
あと不要な変数が残っていました。すみません
0197デフォルトの名無しさん
2005/06/16(木) 15:56:37他人の意見は聞かない、ftw()のマニュアルページを読んでその程度しか理解できてない、
そんな調子ならいっそ人間止めたほうがいいよ。
0198133
2005/06/16(木) 15:58:20厳しい御指導ありがとうございます。
0199デフォルトの名無しさん
2005/06/16(木) 16:01:54気色わるい謙虚さだな
ほめ殺しの類似のイヤガラセか?
慇懃不礼みたいな
0200デフォルトの名無しさん
2005/06/16(木) 16:39:320201デフォルトの名無しさん
2005/06/16(木) 16:57:52とマジレス
0202デフォルトの名無しさん
2005/06/16(木) 17:00:110203デフォルトの名無しさん
2005/06/16(木) 17:31:040204133
2005/06/16(木) 17:35:07おそらく間違いとして認識している具体的なコードの指摘を受けれれば
ftwの使い方も理解できるようになれるかと思っております。
教えていただいたページや、その他も参照してみましたが
この関数について、実際の使用例があまりにも少なく、皆様のスキルを
お借りし、理解を深めようとおもいました。迷惑だったなら申し訳ありません。
0205デフォルトの名無しさん
2005/06/16(木) 17:35:391
2
3
等、それは複数あります
これを、hoge[]に変数1つにつき一行の値を入れて行きたいのですが
このコードをかいていただけないでしょうか?
0206デフォルトの名無しさん
2005/06/16(木) 17:41:560207デフォルトの名無しさん
2005/06/16(木) 17:42:400208デフォルトの名無しさん
2005/06/16(木) 18:02:00そっか、言語指定無かったもんな
0209デフォルトの名無しさん
2005/06/16(木) 18:02:29と書いてあるわけだが
0210205
2005/06/16(木) 18:03:28C言語です
0211デフォルトの名無しさん
2005/06/16(木) 18:06:10int main(void)
{
system("perl -e '@hoge = <>;'");
return 0;
}
0212205
2005/06/16(木) 18:08:21また、systemとかは使わずに
C言語しか、使わずにそのひとつのファイルで完結するように
システムコール以外の呼出はしないようにお願いします
0213デフォルトの名無しさん
2005/06/16(木) 18:08:500214デフォルトの名無しさん
2005/06/16(木) 18:08:520215デフォルトの名無しさん
2005/06/16(木) 18:10:22って書きにきたら時既に遅しw
0216デフォルトの名無しさん
2005/06/16(木) 18:11:42>C言語しか、使わずにそのひとつのファイルで完結するように
>システムコール以外の呼出はしないようにお願いします
ストリーム系ライブラリは使っちゃいけないの?
0217デフォルトの名無しさん
2005/06/16(木) 18:11:480218デフォルトの名無しさん
2005/06/16(木) 18:13:050219デフォルトの名無しさん
2005/06/16(木) 18:13:170220デフォルトの名無しさん
2005/06/16(木) 18:18:45またおまえか
アビバに行けっつのがわからんのか
0221デフォルトの名無しさん
2005/06/16(木) 18:21:30>>217
0222デフォルトの名無しさん
2005/06/16(木) 18:43:25int fd = open(fn, O_RDONLY); struct stat s; fstat(fd, &s);
{const char *fbuf = mmap(0,s->st_size, PROT_READ,MAP_PRIVATE,fd,0);const char *p;
int i=0; hoge[i]=0; for(p=fbuf; p!=&fbuf[s->st_size]; p++)
{ if( '0'<=*p&&*p<='9' ){hoge[i]=hoge[i]*10+*p-'0'; } else if( hoge[i] ){ i++; hoge[i]=0;}}
munmap(fbuf,s->st_size);close(fd);}}
エラーチェックは省略。コンパイルは掛けてない。システムコールのみ使用。数字はASCIIに従うこと。
0223205
2005/06/16(木) 18:43:390224デフォルトの名無しさん
2005/06/16(木) 18:44:540225205
2005/06/16(木) 18:48:410226デフォルトの名無しさん
2005/06/16(木) 18:52:47宿題やらされてるのがわからんのか
0227デフォルトの名無しさん
2005/06/16(木) 18:57:21誰ひとり真面目に答えてないのがわからんのか?(w
0228デフォルトの名無しさん
2005/06/16(木) 18:58:27FILE* fp = fopen(fn, "r"); struct stat s; fstat(fileno(fp), &s);
{const char *fbuf = mmap(0,s.st_size, PROT_READ,MAP_PRIVATE,fileno(fp),0);
const char *p;int i=0; hoge[i]=0; for(p=fbuf; p!=&fbuf[s.st_size]; p++)
{ if( '0'<=*p&&*p<='9' ){hoge[i]=hoge[i]*10+*p-'0'; } else if( hoge[i] ){ i++; hoge[i]=0;}}
munmap(fbuf,s.st_size);fclose(fp);}}
ほい。fopen版。これ以上条件を小出しにするようなら、おいらは対応しないから。
0229デフォルトの名無しさん
2005/06/16(木) 19:00:130230デフォルトの名無しさん
2005/06/16(木) 20:12:14スレ違い
http://pc8.2ch.net/test/read.cgi/unix/1062659209/l50
0231133
2005/06/16(木) 23:56:290232デフォルトの名無しさん
2005/06/17(金) 00:05:53「ちょっと見てやろうか」という気持ちを全く起こさせない原因なのだよ
0233デフォルトの名無しさん
2005/06/17(金) 00:31:41#define CMD_STR "find %s>%s"
void func(const char * targetDir, const char * outputFile)
{
if (targetDir == NULL || outputFile == NULL) {
return;
}
char * buf = malloc(strlen(targetDir) + strlen(outputFile) + sizeof(CMD_STR));
if (buf == NULL) {
return;
}
sprintf(buf, CMD_STR, targetDir, outputFile);
system(buf);
free(buf);
}
0234デフォルトの名無しさん
2005/06/17(金) 00:48:08より実用的でありがちなのはpopen()を使う例だろう。
0235133
2005/06/17(金) 00:55:03VBで作った画面があるんですが、機能詳細はWindows端末から
ボタンを押してあるリモート側DIRの下にあるファイル一覧を取得して
リダイレクトした結果をダウンロードする仕組みがあるのです
要はLIB管ツールのプログラム納品資材確認機能だったのですが、以前
私が担当していた環境はVMSマシンでした。ところが今年から
UNIX管理資材とかLINUX管理資材とかが出現してきて以前のVMSの
総合的な動作を丸々流用して使いまわししないといけなくなったのです
VB画面のボタンからUNIXへリモート処理する仕組みは丸々流用できるので
そこで明示的にコールしているVMS上においているDIR情報取得ツールを
UNIXとかLINUXで同じように動くように作成したいのです。可能でしょうか?
0236デフォルトの名無しさん
2005/06/17(金) 00:57:400237133
2005/06/17(金) 00:59:16もちろんソラリス10だとLSの--full-timeで問題なく落とせるわけですが
0238デフォルトの名無しさん
2005/06/17(金) 01:02:08そんならpopen(3)でfind(1)を呼ぶのが一番ラクだな
FILE *fp;
char buff[8192];
snprintf(buff, "find ......);
FILE *fp = popen(buff, "r");
while (fgets(buff, sizeof buff, fp)) { ..... }
pclose(fp);
こんな感じだ
0239デフォルトの名無しさん
2005/06/17(金) 01:03:32なら取得できたファイル名に対してstat()すればよかろ
0240133
2005/06/17(金) 01:08:47その手法は一度調べてみます。ありがとうございます。
>>237
上部の私が貼ったソースで既にstatが見受けられると思いますが
statのメイン部分では問題なくfullTimeを取得できる結果を得ていますので
その個別にstatを行うための拠点DIRにおいてそれぞれ処理する方法を
お伺いしている次第なのです。
指定したDIR配下の詳細データを列挙したくおもいます
0241デフォルトの名無しさん
2005/06/17(金) 01:17:22他のまともな人に雇用を譲れ
0242133
2005/06/17(金) 01:24:23自分で解決して生きていかねばならない世の中ですから
いつまでも他人に甘えて生きていけるわけではありません
重々承知です。
0243デフォルトの名無しさん
2005/06/17(金) 01:36:28キーワードもらえればそれで十分でしょ?
宿題○投げ学生サンじゃないんだしさ、給料貰ってんでしょ、それで?
といいつつ。
>>240
stat()の引数に指定するパス名はフルパスか、カレントディレクトリからの
相対パスでなければならない。
popen()でfind(1)を実行する場合に、カレント以外のディレクトリを
指定したんなら、そのディレクトリのフルパスにfind(1)から出力
されたパスを足せばいいでしょ。
そんぐらいは、できるよね?
0244デフォルトの名無しさん
2005/06/17(金) 06:54:17ああ、それが狙いか?
0245デフォルトの名無しさん
2005/06/17(金) 07:37:54>>980のソースを弄るだけでいいと思うが。
0246デフォルトの名無しさん
2005/06/17(金) 07:58:210247デフォルトの名無しさん
2005/06/17(金) 08:01:210248デフォルトの名無しさん
2005/06/17(金) 08:04:00漏れもそれを思い出していますた。
0249デフォルトの名無しさん
2005/06/17(金) 08:56:390250デフォルトの名無しさん
2005/06/17(金) 10:23:16コイツはとんだクワセ者だぞ!
0251デフォルトの名無しさん
2005/06/17(金) 10:35:130252デフォルトの名無しさん
2005/06/17(金) 12:36:360253デフォルトの名無しさん
2005/06/17(金) 13:02:08イイんじゃね?
仕事ができないクズは、一度どうしようもないくらい追い込まれないと治らないから(笑)。
0254デフォルトの名無しさん
2005/06/19(日) 10:15:48ほんのちょっと楽が出来るという微妙な関数だな、これ
#include <stdio.h>
#include <ftw.h>
int func(const char *path, const struct stat *st, int type)
{
printf("%s is ", path);
switch(type){
case FTW_F: printf("File\n"); break;
case FTW_D: printf("Directory\n"); break;
}
return 0;
}
int main(int ac, char **av)
{
ftw(av[1], func, 10);
}
0255デフォルトの名無しさん
2005/06/19(日) 15:32:490256133
2005/06/20(月) 00:42:41感謝します。皆さまの数々の親身な対応に頭があがりません。ありがとうございました。
0257デフォルトの名無しさん
2005/06/20(月) 01:38:270258デフォルトの名無しさん
2005/06/20(月) 17:58:25mkdir -p /xxx/xxxx 2> /dev/null
この 2> ってどういう意味なのでしょう?
0259デフォルトの名無しさん
2005/06/20(月) 18:05:410260デフォルトの名無しさん
2005/06/20(月) 18:10:260261デフォルトの名無しさん
2005/06/20(月) 18:11:04ファイル記述子の2番への出力をりだいれくと。
0262デフォルトの名無しさん
2005/06/20(月) 18:11:50n> file
は、ファイルディスクリプタ n を file にリダイレクトする。
ファイルディスクリプタ 2 は標準エラーに割り当てられているから、
その例では、mkdir の標準エラーへの出力を /dev/null にリダイレクトして
捨てている。
0263デフォルトの名無しさん
2005/06/20(月) 18:14:46ありがとうございます
0264デフォルトの名無しさん
2005/06/20(月) 18:21:14>>259が1番正確な答えをいってるのになぜ感謝をせん
>>261->>262
お前等も甘やかすな
スレ違い以上に板違いだろが
痔になって死ね
0265デフォルトの名無しさん
2005/06/20(月) 18:24:280266デフォルトの名無しさん
2005/06/20(月) 18:26:50それを言うなら man sh あたりだろwwww
0267デフォルトの名無しさん
2005/06/20(月) 18:34:57ほんとに
man pipeに載ってるね
0268デフォルトの名無しさん
2005/06/20(月) 19:05:430269デフォルトの名無しさん
2005/06/20(月) 22:19:49高い。厚い。
あの手の本は電車の中で読めるように5冊ぐらいに分けて欲しいよ。
0270デフォルトの名無しさん
2005/06/20(月) 22:38:25非常にハイレベルです, 2003/06/01
レビュアー: 本音のレビューアー (プロフィールを見る) 東京都 Japan
中途半端なレベルのエンジニアが買うと痛い目を見ます。
プログラミングのセンスがあり、ネットワーキングについてもそれ相応の知識と経験がある方が読むと、骨の隋まできっちりと把握できるでしょう。
非常に高価な本なので、一度本屋で目を通してから買うことをお勧めします。
0271デフォルトの名無しさん
2005/06/20(月) 22:47:410272質問です
2005/06/20(月) 23:54:26共有ライブラリの検索パスが通っているディレクトリを調べるには
どうすればよいのでしょうか?
0273デフォルトの名無しさん
2005/06/20(月) 23:57:490274デフォルトの名無しさん
2005/06/21(火) 00:10:40こんなかんじ?
0275デフォルトの名無しさん
2005/06/21(火) 00:26:420276質問です
2005/06/21(火) 00:30:22ありがとうございます。/etc/ld.so.confにそれらしきリストが見つかりました。
ただそれにパスを加えて再起動しても、コンパイル時パスが通ってないようで苦戦しております
0277質問です
2005/06/21(火) 00:37:02・共有ファイル側makefile(ソースファイル2つあります):
tws.so:tws_envvalue.o tws_time.o
g++ -shared tws_envvalue.o tws_time.o -o tws.so
tws_envvalue.o:tws_envvalue.cpp
g++ -fPIC -c tws_envvalue.cpp -o tws_envvalue.o
tws_time.o:tws_time.cpp
g++ -fPIC -c tws_time.cpp -o tws_time.o
install:
cp -f *.h /usr/include/tws/
cp -f tws.so /usr/lib/
(makeでコンパイルした後make install でsoファイルを移動しています。)
・利用ファイル側
cgi_env.cgi:cgi_env.o
g++ -l /usr/lib/tws.so cgi_env.o -O3 -o cgi_env.cgi
cgi_env.o:cgi_env.cpp
g++ -c cgi_env.cpp -D LINUX -o cgi_env.o
install:
cp cgi_env.cgi ../../public_html/
このようにすると。利用ファイル側コンパイル中
g++ -l /usr/lib/tws.so cgi_env.o -O3 -o cgi_env.cgi
/usr/bin/ld: cannot find -l/usr/lib/tws.so
と出力され、あるはずのtws.soが認識されません。一体何が悪いのでしょうか。
gcc バージョンは 3.2.2 20030222 (Red Hat Linux 3.2.2-5)と出ました。
0278デフォルトの名無しさん
2005/06/21(火) 00:48:150279デフォルトの名無しさん
2005/06/21(火) 00:49:12-ltwsなんじゃないの?
0280デフォルトの名無しさん
2005/06/21(火) 01:00:47/usr/lib/libtws.(so|a) をさがすのでは
-Lも-lもつけないで
g++ foo.o bar.o /usr/lib/tws.so -o unko
とか?
0281質問です
2005/06/21(火) 01:14:46>>278 >>279さんも合わせてお礼申し上げます、助かりました。
0282デフォルトの名無しさん
2005/06/21(火) 08:55:540283デフォルトの名無しさん
2005/06/24(金) 17:27:56どうすれば良いでしょう??
0284デフォルトの名無しさん
2005/06/24(金) 17:39:220285デフォルトの名無しさん
2005/06/24(金) 17:39:520286デフォルトの名無しさん
2005/06/24(金) 17:49:09というかスレ違いです、>>283さんよ。
UNIX独自じゃないしね。(binaryならあれだけども)
0287デフォルトの名無しさん
2005/06/24(金) 22:45:48プログラムの実行結果の値をプログラム中から指定したファイルに
書き込みたいです。
exit(1); とか main の中の return -1; とかの 1や -1のことです。
どのような方法が可能でしょうか?
0288デフォルトの名無しさん
2005/06/24(金) 22:55:460289デフォルトの名無しさん
2005/06/24(金) 22:56:42pid_t pid;
int st;
switch((pid = fork())) {
case -1: abort();
case 0: break;
default: waitpid(pid, &st, 0);
WriteToFile(WEXITSTATUS(st));
_exit(0);
}
... /* 実際の処理 */
}
0290デフォルトの名無しさん
2005/06/24(金) 22:58:250291デフォルトの名無しさん
2005/06/24(金) 23:41:31CでSocketプログラムを作りたいと思いました。
簡単なTCPで通信をするプログラムは出来たのですが
負荷試験目的でパケットサイズを小さいのから大きいのを指定して
遅れる様にしたいと思います。
この場合は送る文字で制限するのが効率が良いのでしょうか?
また、1500バイト以上の文字列をランダムなバイト数で送る為には
やはり送る時のバッファサイズ(?)で何とかするのがスマートなんでしょうか?
なんか書いていて他にどうするんだって気になって来ましたが
普通のFTPとかはどういう単位でパケットサイズを決めているのでしょうか?
環境 : linux,solaris,FreeBSD,HP-UX for GCC
0292デフォルトの名無しさん
2005/06/24(金) 23:45:500293デフォルトの名無しさん
2005/06/24(金) 23:50:42小っさいデータで送ろうとしても、一つのパケットにまとめられちゃう事が
あるから注意。
0294デフォルトの名無しさん
2005/06/25(土) 00:06:09TCP/IPの上に乗っかっているアプリケーションプログラマは、
「パケットサイズ」のことなんか考えちゃいかん
TCP/IPはあくまでバイトストリームのプロトコルだ。
なお>>293の言ってることについては「Nagleアルゴリズム」ででもぐぐれ。
0295291
2005/06/25(土) 00:25:57まぁ勉強しろってのも全くではありますが。
某糞ネットワーク機器のバフォーマンスを計る為に自分で作りたかっただけで
自分がやりたい事をやってくれるソフトは、既にあったりはするんです。
Nagleアルゴリズムってのをぐぐってみました。
どういう物かはなんとなく判りましたがコレってWindowsだけって
認識でいいんですか?
> TCP/IPはあくまでバイトストリームのプロトコルだ。
発送を変えて「どんなサイズのパケットが来たか」でやってみる事にします。
いや、やり方はしらんけど。
0296デフォルトの名無しさん
2005/06/25(土) 00:29:35>どういう物かはなんとなく判りましたがコレってWindowsだけって
間違い
0297デフォルトの名無しさん
2005/06/25(土) 00:39:04#! /bin/sh
./a.out
echo $? > filename
0298デフォルトの名無しさん
2005/06/25(土) 00:42:21ネットワークプログラミングスレの方が適切だと思う。
既に的確な答えが返ってきているのにこう書くのも何だが…
あっちのスレのテンプレにあるサイトも読んでね。
UNIX SocketプログラミングFAQは必読。
0299291
2005/06/25(土) 00:56:59> >どういう物かはなんとなく判りましたがコレってWindowsだけって
>
> 間違い
いててて。。。
> 298
とりあえず、あっちを熟読してみます。
ですが、なんかやりたい事と自分のスキルの次元が違いすぎる勘を感じました。
0300デフォルトの名無しさん
2005/06/25(土) 06:55:160301デフォルトの名無しさん
2005/06/26(日) 00:20:00問題が起きますよね。
WindowsではAPIやVC++のみに用意された関数で処理できるようですが、
Unix・Linuxではどのようにして問題を回避するのでしょうか?
自作関数を作る必要がありますかね?
ライブラリで処理できればいいんですが・・・
0302デフォルトの名無しさん
2005/06/26(日) 00:26:080303デフォルトの名無しさん
2005/06/26(日) 00:26:490304デフォルトの名無しさん
2005/06/26(日) 00:31:04というか、UNIXでそんなに大きな問題が出るか?
0305デフォルトの名無しさん
2005/06/26(日) 00:55:20どういう問題が起きるかは、どういう種類の処理をしたいかによるだろ。
だから、対応もケースバイケースにならざるを得ない。
2byte目とのマッチング、1byte目と2byte目を分断、なんてのは、まあ、
まずいな。これは別に2byte目が\の場合には限らない。
内部処理は全部wchar_tにして逃げる手もあるが、システムコール等に
Shift_JISで渡す必要があって、しかもそれが問題を生じる可能性がある
と判断したなら、何か手を考える必要があるわなあ。
0306デフォルトの名無しさん
2005/06/26(日) 01:21:430307デフォルトの名無しさん
2005/06/26(日) 04:39:50文字列の頭から1文字ずつ調べて(途中から調べると2バイト目とAscii文字との区別がつかない場合があるので誤認識する)
Shift_JISの1バイト目に該当するコードが出てきたら次の文字は2バイト目と判断して、問題が起きないように適切な処理をするか
Unicodeなり、EUCなりに変換するしかない。
0308デフォルトの名無しさん
2005/06/26(日) 06:12:090309デフォルトの名無しさん
2005/06/26(日) 06:23:160310デフォルトの名無しさん
2005/06/26(日) 11:38:50但し、kill -KILLは捕捉できない。
0311質問です
2005/06/26(日) 11:43:20<FORM enctype="multiform/form-data">でブラウザがサーバーにstdinに送信するデータの形式について知りたいです。
inputフォーム2つとfileフォーム1つで実際に送信されたデータをとって見たら。
-----------------------------7d51d429260446
Content-Disposition: form-data; name="key1"
value1
-----------------------------7d51d429260446
Content-Disposition: form-data; name="key2"
value2
-----------------------------7d51d429260446
Content-Disposition: form-data; name="file1"; filename="C:\Documents and Settings\all user\デスクトップ\1119279517350.swf"
Content-Type: application/x-shockwave-flash
FWSク#7 x ー $マC ・
d?
(以下ファイルのデータが続く)
-----------------------------7d51d429260446--
↑このようなデータが取れました、これを見るにContent-Dispositionの行の次にContent-typeが指定されていたら1行空けてファイルデータ、
省略されていれば1行空けてフォームデータと見て良いのでしょうか?正確な規格文章が(出来れば日本語で)あったら教えて下さい。
0312デフォルトの名無しさん
2005/06/26(日) 12:09:550313デフォルトの名無しさん
2005/06/26(日) 12:11:20ブラウザによる
ってか、板違い
Web製作技術板だとかそんないたがあっただろ
そこいっとけ
0314デフォルトの名無しさん
2005/06/26(日) 12:21:590315デフォルトの名無しさん
2005/06/26(日) 12:37:19RFCの日本語訳はネットワークプログラミング版のテンプレURL集をみよ。
0317デフォルトの名無しさん
2005/06/26(日) 12:40:290318デフォルトの名無しさん
2005/06/28(火) 15:57:07文字列から同様にFILE *を得ることはできませんかね?
0319デフォルトの名無しさん
2005/06/28(火) 16:04:31文字列をファイル名と見立ててfopenすればいいんじゃないかな
0320あああ
2005/06/29(水) 00:50:49それぞれcmdとdataのメモリの内容、メモリから読み出した直後
のレジスタの内容、実際に出力される内容はそれぞれどのような
値になるでしょう?
char *cmdreg = CMD_PORT, *datreg=DATA_PORT;
unsigned int16 cmd;
unsigned int32 data;
cmd=0x87cd , data=0x20030719;
outw(cmdreg,(cmd & 0xff00)>>8 | (cmd & 0xff)<<8);
outl(datreg, data);
0321デフォルトの名無しさん
2005/06/29(水) 02:31:090322デフォルトの名無しさん
2005/06/29(水) 03:09:42CでC++のistrstreamみたいなことがやりたかったのです・・・。
0323デフォルトの名無しさん
2005/06/29(水) 05:20:360324デフォルトの名無しさん
2005/06/29(水) 05:28:50FILE*を相手にする関数をオンメモリのバイト列にも使えるか、というわけだよな。
*BSDならば、funopen()を使えば実現できる。でもまあ、移植性はない。
0325デフォルトの名無しさん
2005/06/29(水) 07:07:05glibcだとfopencookie
funopenは結構古くからあるけど、ネーミングの悪さからか、あまり広まらず。
逆にfopencookieを使っているアプリ(例えばPHP)では、
funopenをwrappingするような状況。(ノ∀`)アチャー
0326デフォルトの名無しさん
2005/06/30(木) 19:04:50gcc -c -Wall -std=c99 -D__USE_POSIX199309 test.c
test.c: 関数 `main' 内:
test.c:5: error: storage size of `req' isn't known
test.c:8: 警告: implicit declaration of function `nanosleep'
test.c:5: 警告: unused variable `req'
make: *** [test.o] エラー 1
#include <time.h>
int main(void) {
struct timespec req;
req.tv_sec = 0; req.tv_nsec = 33000;
nanosleep(&req, NULL);
return 0;
}
debianでプログラミングしていてnanosleepを使いたいのですが
time.h
# ifdef __USE_POSIX199309
/* Pause execution for a number of nanoseconds.
This function is a cancellation point and therefore not marked with
__THROW. */
extern int nanosleep (__const struct timespec *__requested_time,
struct timespec *__remaining);
# endif
となっていたので-D__USE_POSIX199309としたのですがだめでした。
どうやれば使用できるようになるのでしょうか?
0327デフォルトの名無しさん
2005/06/30(木) 19:19:19-std=c99
が邪魔してるようですね
0329デフォルトの名無しさん
2005/07/01(金) 06:24:380330デフォルトの名無しさん
2005/07/01(金) 07:14:000331デフォルトの名無しさん
2005/07/01(金) 07:47:430332デフォルトの名無しさん
2005/07/01(金) 09:24:530333デフォルトの名無しさん
2005/07/01(金) 10:01:030334デフォルトの名無しさん
2005/07/01(金) 10:11:060335デフォルトの名無しさん
2005/07/01(金) 10:27:47子供にはスペルくらいちゃんと教えないとね。
0336初心者
2005/07/01(金) 12:50:55予測不能なエリアをアサインし、また、高速にアクセスす
る必要がある。UNIXでは、これをどのように実現している
か図を使い、述べよ。というわけのわからない問題が出てきました。
どなたかぜひ教えてください!
0337デフォルトの名無しさん
2005/07/01(金) 12:53:09---------------- 壁
□ <- メモリ
ってか、板違い
0338デフォルトの名無しさん
2005/07/01(金) 13:09:02プログラミング関係ないので板違いです。続きはUNIX板の質問スレへでも。
たぶんinodeがデータ本体をどういう風に保持しているか調べればいいのでしょう。
http://www-db.stanford.edu/~manku/quals/summaries/goldberg-uniximpl.htm
0339デフォルトの名無しさん
2005/07/02(土) 21:30:17あほさに未だ気付けません、forkとかOS?カーネル?てどこです?
プロセスってなんかの管轄内にあるわけですよね?ここから間違ってまるんですかね
どこ見ればいいんでしょうか、
psのソースみたらわかるかと思って軽い気持ちで突入したんですが
ものっそい事になってて目が痛いです。マクロびゅんびゅん飛んでくるし
追い詰めたと思ったら未知の言語で、助けてください
0340デフォルトの名無しさん
2005/07/02(土) 21:38:49forkってのは野茂の決め球で、すごい角度でOSに対して投げつける。
OSはそれを受け取るとなんと孫六ボールになって分身。氏ねボケ連発。
プロセスはOSの管理下にあり、OSがプロセスを監視。
プロセスが何人載っても大丈夫な設計になっている。(でも上限あり)
psのソースにはもちろん載っていない。
載っているのはカーネルのソースなわけだが、Linuxくらいなら簡単。
プロセス管理といえばスケジュール管理から入った方がロリ簡単。
sched.cを探して、印刷して、嫁
0341デフォルトの名無しさん
2005/07/02(土) 21:46:23int main(short argc, const char **argv){
という関数のなかから
argc, argvを違う関数に渡したいのですが
hoge(argc, &&argv); では
test.c:67: error: label `argv' used but not defined
といわれ
hoge(argc, &argv); では
test.c:67: warning: passing arg 2 of `hoge' from incompatible pointer type
といわれるのですが、正しくはどうするのでしょうか?
0342デフォルトの名無しさん
2005/07/02(土) 21:48:130344341
2005/07/02(土) 22:08:34現在は
int hoge(int argc, char **argv){
で、うけているのですが
これを
int hoge(int argc, char argv){
にすると、ウォーニングではなくエラーが出てしまいます
0345デフォルトの名無しさん
2005/07/02(土) 22:13:570346デフォルトの名無しさん
2005/07/02(土) 22:17:24そんな変更をする必要は無い
おまえはUNIXのスレに来る前にC言語の勉強をしなさい
0347デフォルトの名無しさん
2005/07/02(土) 22:56:40おおーーなるほど、
何を指してるのかはわかってませんけど
辿り方がわかった気がします。
ドキュメント全部その切り口で書かれてればいいのに
sched.c ご馳走様です。
感謝!!ありがとう
0348デフォルトの名無しさん
2005/07/03(日) 03:19:110349デフォルトの名無しさん
2005/07/03(日) 09:39:080350デフォルトの名無しさん
2005/07/03(日) 11:13:360351デフォルトの名無しさん
2005/07/03(日) 13:34:46パイプの書き込みが行われなくてもXEventが発生してしまうものなのでしょうか?
すいませんが知ってる方いらっしゃいましたら教えていただけますか。
0352デフォルトの名無しさん
2005/07/03(日) 14:05:40詳しく
ぐぐっても西部の話しかでてこねー
0353デフォルトの名無しさん
2005/07/03(日) 14:18:53http://www.ascii.co.jp/books/detail/4-7561/4-7561-1844-5.html
0354デフォルトの名無しさん
2005/07/03(日) 14:32:10ありがとう〜英語の本だったか
0355デフォルトの名無しさん
2005/07/03(日) 14:36:370356デフォルトの名無しさん
2005/07/03(日) 15:19:29環境変数を獲得するプログラムなんですけれども、
#include <stdio.h>
main(int argc, char *argv[], char *envp[])のソースを
{
int i;
for(i = 0; envp[i]; i++);
printf("%s\n",envp[i]);
exit(0);
}
実行ファイルを実行すると、NULLが返ってきました。
設定されている環境変数の一覧を表示させたいですが。
何も設定されていないという意味でしょうか?
0357デフォルトの名無しさん
2005/07/03(日) 15:31:13そんな具体的なのは早いってw
0358デフォルトの名無しさん
2005/07/03(日) 15:33:01for のお尻のセミコロンはいらんだろ。
あとスレ違いだと思う。
0359デフォルトの名無しさん
2005/07/03(日) 15:34:43間違い: フォーーーーーッ;
正解: フォーーーーーッ{}
0360デフォルトの名無しさん
2005/07/03(日) 15:39:100361デフォルトの名無しさん
2005/07/03(日) 15:41:53フォーーー・・・
0363デフォルトの名無しさん
2005/07/03(日) 16:01:40フォーー!!
0364よちお
2005/07/03(日) 16:20:060365デフォルトの名無しさん
2005/07/03(日) 21:10:34env のソース見りゃいいじゃん
0366デフォルトの名無しさん
2005/07/03(日) 21:14:34だからそんなんしなくってもいいって言ってんだろフゥーーーーーッ!
for(); っていうありがちなミスなだけですよ
0367デフォルトの名無しさん
2005/07/03(日) 22:15:230368デフォルトの名無しさん
2005/07/03(日) 22:25:07だから初心者にありがちなミスって言ってんだろフゥーーーーッ!
>>365が見逃したとしても仕方ありませんよ
0369デフォルトの名無しさん
2005/07/04(月) 05:50:451行の場合\rを出力してやれば、その行の1列目まで戻ってそこから出力できることがわかったのですが、
逆改行のやり方がわかりません。教えていただけないでしょうか?
0370デフォルトの名無しさん
2005/07/04(月) 06:32:28$ tput cuu1
$ man 5 terminfo
BSDならtermcapを。
0371デフォルトの名無しさん
2005/07/04(月) 07:09:030372デフォルトの名無しさん
2005/07/04(月) 14:33:52setlocale(LC_CTYPE, "");
と言うのがあったのですが、
具体的にこれはどのようなときどのようなことに役に立つのでしょうか?
0373デフォルトの名無しさん
2005/07/04(月) 14:59:51man setlocale した上で質問しているんだろうな?
0374デフォルトの名無しさん
2005/07/04(月) 15:04:480375デフォルトの名無しさん
2005/07/04(月) 16:54:360376デフォルトの名無しさん
2005/07/04(月) 21:15:32なんでコード上で setlocale(LC_CTYPE, ""); する必要があるの?
使ってるコード見てみてもなにがなんだかわからんや
暇な人説明プリーズ
0377デフォルトの名無しさん
2005/07/04(月) 21:26:13setlocale(LC_CTYPE, "");を呼ぶと、文字種別に関するロケールが
現在の実行環境設定に従って設定される。
ロケール依存の関数(mbstowcs()など)を呼ぶ場合には、
setlocale()を呼んでおいた方がいい。
つかmanぐらい嫁
0378デフォルトの名無しさん
2005/07/04(月) 21:27:290379デフォルトの名無しさん
2005/07/04(月) 21:31:03catのマニュアルよんで理解するのにも30分くらいかかる俺だぞ
gccは長さを見ただけでやめたよ
そんな俺だけど感謝してる
本当にありがとう、なんとなくくわかった気がするよ
0380デフォルトの名無しさん
2005/07/04(月) 21:49:07man on www
http://www.linux.or.jp/JM/#Search
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/setlocale.3.html
0381デフォルトの名無しさん
2005/07/04(月) 21:58:480382デフォルトの名無しさん
2005/07/04(月) 22:00:400383デフォルトの名無しさん
2005/07/04(月) 22:04:52たまに日本語訳マニュアルを読むと何世代まえのやねん
っておもうことがあるね
0384デフォルトの名無しさん
2005/07/04(月) 22:04:54確かに多いが、ライブラリ関数やシステムコールのマニュアルぐらいは
有用だから読んどけよ。
0385デフォルトの名無しさん
2005/07/04(月) 22:47:23あなたも翻訳に参加して下さい
0386デフォルトの名無しさん
2005/07/07(木) 09:13:18経過時間がうまく計測できません。clock()以外で、ミリ秒まで取得する方法を教えてください。
0387デフォルトの名無しさん
2005/07/07(木) 09:24:090388デフォルトの名無しさん
2005/07/07(木) 10:53:50マルチすなや。
移動しているつもりなら、きちんと挨拶してからにしろ。
0389デフォルトの名無しさん
2005/07/07(木) 12:56:030390デフォルトの名無しさん
2005/07/07(木) 14:29:37経過時間を計測したいのですが、プロセッサ時間依存の方法ですと、マルチスレッドのプログラムの
経過時間がうまく計測できません。clock()以外で、ミリ秒まで取得する方法を教えてください。
0391デフォルトの名無しさん
2005/07/07(木) 14:41:540392390
2005/07/07(木) 15:07:17マルチマルチとうるさいんだこのクズ
質問に答えられないんならROMってろ
0393デフォルトの名無しさん
2005/07/07(木) 15:10:320394デフォルトの名無しさん
2005/07/07(木) 15:12:500395デフォルトの名無しさん
2005/07/07(木) 15:13:110396デフォルトの名無しさん
2005/07/07(木) 17:35:500397デフォルトの名無しさん
2005/07/07(木) 20:18:350398デフォルトの名無しさん
2005/07/07(木) 20:41:07うはwwwテラキモスwwwwww
0399デフォルトの名無しさん
2005/07/08(金) 00:07:150400デフォルトの名無しさん
2005/07/08(金) 00:20:05Window型はどのような型なのでしょうか?
googleで検索しようにもwindowがキーワードなため検索できません
0401デフォルトの名無しさん
2005/07/08(金) 00:24:510402デフォルトの名無しさん
2005/07/08(金) 00:27:22それだと引っかかり過ぎです
ヘッダファイル読んだら早かったですね
すいませんお手数をお掛けしました
0403デフォルトの名無しさん
2005/07/08(金) 00:51:36じゃぁもう判ったろうけど只のIDね。
0404402
2005/07/08(金) 02:20:09単に、unsigned intでした
0405デフォルトの名無しさん
2005/07/08(金) 02:43:22で表示する文字列の幅を計算することはできますか?
プロポーショナルのモナーフォントを使うので文字数x8等では大きさがあいませんでした
0406デフォルトの名無しさん
2005/07/08(金) 02:59:430407デフォルトの名無しさん
2005/07/08(金) 16:44:48知能がたりないためか理解できませんでした
XFontSet型はどのようなかたなんですかね?
0408407
2005/07/08(金) 18:17:01構造体なのかな・・・
0409デフォルトの名無しさん
2005/07/08(金) 20:14:50よくコードを書いていたら、関数や型などいろいろなものがあたらしくでてくるのですが
それらを検索しても詳しい説明が引っかからないことが結構よくあります
man hoge とやっても、マニュアルがあるのは希です
私も直接ヘッダファイルを読もうと思うのですが
% grep hoge /usr/X11/include/X11/*
等とし、引っかかったファイルの中を見るのですが全然わかりません
今は、extents->max_ink_extent.height と言うものを調べているのですが
よくわかりません
ヘッダファイルを読むにはコツなどあるのでしょうか?
0410デフォルトの名無しさん
2005/07/08(金) 20:28:37単に
grep hoge
などとして名前で検索したら大量にひっかかるのは当たり前だ。
まずは正規表現を学べ。
そして、探したいシンボルがどのように宣言されているか想像し、
それに応じた正規表現を用いて、
grep 'typedef.*hoge'
などとして検索することだ。
0411デフォルトの名無しさん
2005/07/08(金) 20:57:50これだから化石みたいなUNIX使いは
0412デフォルトの名無しさん
2005/07/08(金) 21:00:01「使える統合開発環境」があったら使ってるっつーの
0413デフォルトの名無しさん
2005/07/08(金) 21:07:19それはそうと、emacsって統合開発環境っぽいけど。
0414デフォルトの名無しさん
2005/07/08(金) 21:21:56参考書入手したほうがいい。
0415デフォルトの名無しさん
2005/07/08(金) 21:35:05そこで、もまいの使ってるよい参考書を
お姉さんにこっそりおしえなさい
0416409
2005/07/08(金) 22:30:37ファイル内で検索は正規表現を使ってやっています
ですが、なかなか私の知識が足りないせいかむづかしくて…
>>414
どのような参考書がありますかね?
X Windowsで遊ぶ本 っていうのを買ってそれからプログラミングを始めたのですが
ぜんぜんその本には関数の説明が載ってなくてきっかけ本みたいなかんじです
X Window プログラミングっていう本があるらしいのですがアマゾンでも取扱い無しになってて…
ほかになにかあったら教えていただきたいです
0417デフォルトの名無しさん
2005/07/08(金) 22:49:48http://xjman.dsl.gr.jp/X11R6/X11/
とりあえず、ここには目を通す。
0418デフォルトの名無しさん
2005/07/08(金) 23:11:53> X Window プログラミングっていう本があるらしいのですがアマゾンでも取扱い無しになってて…
第二版
http://www.amazon.co.jp/exec/obidos/ASIN/4526033995/249-1846796-0085153
X-Windows になってるのはアマゾンのミスだな。
定番はソフトバンクから出てた Xlibプログラミング・マニュアルだけど、
高いし絶版だから上の本で充分かと。
0419デフォルトの名無しさん
2005/07/08(金) 23:33:410420デフォルトの名無しさん
2005/07/08(金) 23:46:47と理論だけで、実践のともなわない馬鹿が申しております。。。
0421デフォルトの名無しさん
2005/07/08(金) 23:49:26あるシンボルの定義位置を参照する、といったよくあるニーズに答える
にあたっては統合開発環境はやっぱ強いよ。
専用の開発環境だけあってctagよりは厳密で正確だし、システムヘッダまで
再帰的に勝手に探してくれるからな。
0422デフォルトの名無しさん
2005/07/08(金) 23:52:40という選択肢がなぜないのか
0423デフォルトの名無しさん
2005/07/08(金) 23:53:49findとgrepとxargsがあればかなりのことができる。
0424デフォルトの名無しさん
2005/07/08(金) 23:57:50だから、時間効率の問題
それにfind(1), grep(1), xargs(1)はCのシンタクスを知らないし
行指向の作業しかできない
0425デフォルトの名無しさん
2005/07/09(土) 00:11:46最近 cvsweb みたいなのが便利に思えてきた
0426デフォルトの名無しさん
2005/07/09(土) 00:11:530427デフォルトの名無しさん
2005/07/09(土) 00:17:35つーかお前はXのソースを読んだことがあるのか?
0428デフォルトの名無しさん
2005/07/09(土) 00:18:26リソース喰いつってもモノによるでしょ
同じIDEでも、たとえばVC++6.0とVS.NET 2003では全然違う
クロスリファレンス機能、補完機能つきのエディタ
(これはviやemacsより良いかといえば疑問はあるが)、
ソース見ながら実行できるGUIデバッガ
(ものによってはエディットコンティニュー可能)
GUIリソースエディタ
オンラインヘルプとの連携
こういったものが手に入るのだから、開発効率は比べ物にならん
0429デフォルトの名無しさん
2005/07/09(土) 00:28:50そういったものが手に入って効率化する工程は、
ソフトウェア生産全工程の何%なのか?
0430デフォルトの名無しさん
2005/07/09(土) 00:32:47まあ、設計段階以外の全てじゃないか?
テスト工程でもコードの修正は発生するからな
eclipseのようなものはリファクタリングやUnitTestとの連携機能も
持っているしな
0431デフォルトの名無しさん
2005/07/09(土) 00:35:53>同じIDEでも、たとえばVC++6.0とVS.NET 2003では全然違う
UNIX べったりなんで、そういうの使った事無いんだ
触った事ある IDE は Eclipse とか Xcode とか
IDE で重装備するよりも、REPL が充実してる環境の
方がヘルシーだと思う。
0432デフォルトの名無しさん
2005/07/09(土) 00:42:51キッチンシンクアプローチをとったツールの良さを説くのはなかなか難しかろう
0433デフォルトの名無しさん
2005/07/09(土) 00:43:17たとえMicrosoftのVisual Studioであっても、別にIDE漬けを強制される
ワケじゃないよ。
最近のVisual Studioには残念ながらメイクファイルを生成する機能は
無くなったようだが、依然として自分で書くことはできるし、
make(1)相当のnmake.exeもついている。無論、cc(1)を直接実行すれば
いい程度の仕事なら、cl.exeを実行すればよい。実際ちょっとした
プログラムを作って試す、といった程度なら、いちいちIDEを起動する
よりはこっちが速い。
0434デフォルトの名無しさん
2005/07/09(土) 00:43:44emacsユーザなら結構いると思うんだけどね。
0435デフォルトの名無しさん
2005/07/09(土) 01:15:471人だけ効率落としてる奴の方が迷惑なわけだが
あっここには趣味プログラマしかいないからいいのか
0436デフォルトの名無しさん
2005/07/09(土) 01:21:38翻って、今風な環境って奴は進む道を間違えてるとは思うけどね
0437デフォルトの名無しさん
2005/07/09(土) 01:22:41ツールボックスよりレガシーって、メインフレームの環境とかか
ごめん、俺少しだけ流れないJCL流す苦労に涙したことあるけど
ほとんど知らないわ(w
0438デフォルトの名無しさん
2005/07/09(土) 01:32:110440デフォルトの名無しさん
2005/07/09(土) 01:38:56UNIXを使いはじめてからは、WindowsでもEmacs(Meadow)でコード書くようになったよ
はじめはGNU/Linuxを使ってて、KDevelopとか使ってやってたけど
わずらわしくなって、テキストエディタで書きはじめたらこりゃ便利
Emacsとか使うとコード書くのも楽にカスタマイズできるから書くスピードも早いし
VC++のIDE使ってると、一々マウスで操作してやる操作を探さなきゃいけないけど
(まぁ、ショートカットに入れたりしたらいいだけだが)
テキストエディタとコンソールだと、screenとかつかうと切替えも早いし
俺にはこっちのほうが便利だし速い
0441デフォルトの名無しさん
2005/07/09(土) 01:44:57Toolbox ----- Emacs ----- IDE
ってカンジ?
まあ、道具はケースバイケース・適材適所で使える人が最強ですよ、と
言っておく。
0442デフォルトの名無しさん
2005/07/09(土) 01:49:36老害という言葉を思い出したよ
0443デフォルトの名無しさん
2005/07/09(土) 01:53:000444デフォルトの名無しさん
2005/07/09(土) 01:54:580445デフォルトの名無しさん
2005/07/09(土) 01:55:41まあ尊敬はしとるよ。
0446デフォルトの名無しさん
2005/07/09(土) 01:56:230447デフォルトの名無しさん
2005/07/09(土) 01:57:00N88BASICとかもKitchen Sinkなのかなあ
0448デフォルトの名無しさん
2005/07/09(土) 01:57:20え?adbとかじゃなくて?
0449デフォルトの名無しさん
2005/07/09(土) 02:01:29根っからのレガシーだから
0450デフォルトの名無しさん
2005/07/09(土) 02:19:06他人の道具にいちいち文句言うのが間違い。
作業が遅いのが気にくわんならば「遅い」とだけ文句言え。
0451デフォルトの名無しさん
2005/07/09(土) 02:24:13新人相手なら教育すべきだろうし
ペアプロとかしてると、突っ込みたくなるんじゃないかな
ほら、viでなんか非効率なことやってるの見て、「こうやるんだYO!!」
みたいな
でも、最近はそういう「職場の先輩」って少なくなってる気がするね
0452デフォルトの名無しさん
2005/07/09(土) 02:31:51ヘッダをgrepして定義位置を探すとかって原始的だよね?
効率のいい方法があれば とっておきのスク水猫耳を
0453デフォルトの名無しさん
2005/07/09(土) 02:33:19> 作業が遅いのが気にくわんならば「遅い」とだけ文句言え。
頼むからチームでプログラミングするところには参加しないでね
0454デフォルトの名無しさん
2005/07/09(土) 03:03:50grep でも C/P は十分だと思うけど、
↓みたいに web 化するとか
http://lxr.linux.no/
0455デフォルトの名無しさん
2005/07/09(土) 03:09:14非効率の例で vi を挙げないでくれ...
0456デフォルトの名無しさん
2005/07/09(土) 03:12:07edとかのがよかった?(w
0457デフォルトの名無しさん
2005/07/09(土) 03:13:38IDEは、IDE自体のデキにもよるけど、class/structの宣言変えたりすると
すぐ追従してくれる。
毎度毎度
make ctags
とかそんなようなコマンドをタイプしてしばらくバッチ処理を待たないと
いけない世界とはえらい違いなワケですが。
0458デフォルトの名無しさん
2005/07/09(土) 03:14:26効率悪ぃのは得物の所為じゃねぃ
0459デフォルトの名無しさん
2005/07/09(土) 03:16:31頻繁に書き換える所なら脳キャッシュに載ってるんじゃないかね
0460デフォルトの名無しさん
2005/07/09(土) 03:17:02いや、こう言っちゃなんだけど俺はvi好きよ。
今、純正のvi触る機会は無いけれど。
>>451は別にviをコケにしてるんじゃなくて、
習熟度によってえらく使い方が替わってしまうviというエディタを
使いこなせていない新人君の操作にイライラしてしまう、
というよくある光景を描いたつもりなんだ
0461デフォルトの名無しさん
2005/07/09(土) 03:17:43いやさ、脳キャッシュとか脳スタックとか容量に限界あるから
割り込みもよく入るし(w
0462デフォルトの名無しさん
2005/07/09(土) 03:20:48そうか、スマソ。
最近、vi 使ってるだけで後輩から老害認定されてる人を見たもんで。
Java だったから IDE 使った方が良いんだろうけど、ちょっと悲しかった。
0463デフォルトの名無しさん
2005/07/09(土) 03:27:120464デフォルトの名無しさん
2005/07/09(土) 03:31:20「速いねー」<(タイプが)
とか誉められたことがあるな
あれは嫌味か何かだったんだろうか
ま、Javaみたいに完全にクラス指向の言語だと、エディタの補完機能の
有効性がデカい、というのはある。Cとかに比べると
0465デフォルトの名無しさん
2005/07/09(土) 03:41:56ctagsってなに?
便利そうなんだけど
尻尾もつけるから
0466デフォルトの名無しさん
2005/07/09(土) 03:44:27ctags(1)
つか、おまいは本当にUNIXプログラマなのか
0467デフォルトの名無しさん
2005/07/09(土) 03:47:55そんなJavaをデザインしたBill Joyには足を向けて寝られない>>463
0468デフォルトの名無しさん
2005/07/09(土) 04:07:08JMに載ってないコマンドはいまいち知らんのよ
とりあえずこれを使えばincludeされる予定のヘッダを
全部読んでタグ作ってくれるのね。
SASSOKU試してみる
0469デフォルトの名無しさん
2005/07/09(土) 08:13:45GNU Globalのほうが便利よ
0470デフォルトの名無しさん
2005/07/09(土) 09:00:17で、聞いてみたら検索(/)コマンドも単語移動(wなど)も、ex系のコマンド(sなど)も知らなかったりしてもうね……
0471デフォルトの名無しさん
2005/07/09(土) 10:06:34得意げにviの使い方を語る奴見ると引く
0472デフォルトの名無しさん
2005/07/09(土) 10:14:35#まさか、sed使えるからって得意になる奴もいまい。それと同じことだ。
0473デフォルトの名無しさん
2005/07/09(土) 10:19:39その辺りの感触がわからないとゴミにしか見えないだろう。
0474デフォルトの名無しさん
2005/07/09(土) 10:24:040475デフォルトの名無しさん
2005/07/09(土) 10:29:320476デフォルトの名無しさん
2005/07/09(土) 11:05:22こっちだ。
http://pc8.2ch.net/test/read.cgi/tech/1060005170/l50
0477デフォルトの名無しさん
2005/07/09(土) 12:39:110478デフォルトの名無しさん
2005/07/09(土) 12:53:350479デフォルトの名無しさん
2005/07/09(土) 14:38:12viしか使えなくてすまん
0480デフォルトの名無しさん
2005/07/09(土) 15:36:30時代はglibc。
0481デフォルトの名無しさん
2005/07/09(土) 15:44:010482デフォルトの名無しさん
2005/07/09(土) 15:46:420483djb信者
2005/07/09(土) 15:56:010484デフォルトの名無しさん
2005/07/09(土) 18:00:57非常時に使うのって、edじゃないか?
0485デフォルトの名無しさん
2005/07/09(土) 18:03:23え?非常時は boot cdrom で、dtpad 使うけど?
0486デフォルトの名無しさん
2005/07/09(土) 18:42:030487デフォルトの名無しさん
2005/07/09(土) 19:04:120488デフォルトの名無しさん
2005/07/09(土) 19:11:28シリアルポートは生きてるかも知れないけどな
0489デフォルトの名無しさん
2005/07/09(土) 19:29:120490デフォルトの名無しさん
2005/07/09(土) 20:20:510491デフォルトの名無しさん
2005/07/09(土) 21:36:130492デフォルトの名無しさん
2005/07/10(日) 01:32:300493デフォルトの名無しさん
2005/07/10(日) 01:46:43XCreateFontSetのところで以下の様なエラーが出ました
これはどのような意味なのでしょうか?
X Error of failed request: BadValue (integer parameter out of range for operation)
Major opcode of failed request: 1 (X_CreateWindow)
Value in failed request: 0x0
Serial number of failed request: 7
Current serial number in output stream: 13
0494デフォルトの名無しさん
2005/07/10(日) 01:51:11X_CreateWindow()のパラメータがあってなくてBadValueエラーがでたんだろ。
そのXCreateFontSet()の呼び出しをコメントにして同じエラーがでるなら
それ以前に呼んでる関数を疑え。
0495デフォルトの名無しさん
2005/07/10(日) 02:20:34デバッガを使って実行前に
_Xdebug = 1;
をしておくという手もある。(遅くなるが)
こうすると、毎回XSync()するのと同じ効果があるので、
パラメータ間違いがあった場合すぐにエラーが起きる。
これって昔は常識だったけど、今は lost technology
に近い?
0496デフォルトの名無しさん
2005/07/10(日) 02:24:560497デフォルトの名無しさん
2005/07/10(日) 03:16:21使おうという発想がlost ideaだ
0498デフォルトの名無しさん
2005/07/10(日) 10:20:30Motif, gtkとかフレームワークもいろいろあるが…
http://www.free-soft.org/guitool/
0499デフォルトの名無しさん
2005/07/10(日) 10:30:280500デフォルトの名無しさん
2005/07/10(日) 11:24:14LGPLなgtkの方がまだ安全。
0501デフォルトの名無しさん
2005/07/10(日) 11:28:110502デフォルトの名無しさん
2005/07/10(日) 11:26:370503デフォルトの名無しさん
2005/07/10(日) 11:29:460504デフォルトの名無しさん
2005/07/10(日) 11:56:34釣りでないならスレ違い。
0505デフォルトの名無しさん
2005/07/10(日) 11:57:480506デフォルトの名無しさん
2005/07/10(日) 12:15:560507デフォルトの名無しさん
2005/07/10(日) 12:30:47書籍の質問はダメですか?
0508502
2005/07/10(日) 12:58:290509502
2005/07/10(日) 12:58:590510502
2005/07/10(日) 13:02:040511502
2005/07/10(日) 13:00:120512493
2005/07/10(日) 14:04:33いろいろとやってみたのですがどうもうまくいきませんでした
font_fontsetに入れるところでエラーになります。
何が悪いのかは本当にけんとうもつきません
したは、簡略化したコードです
何かうたがうてんなどありますでしょうか?
int main( int argc, char **argv){
Display *disp;
disp = XOpenDisplay( NULL);
font_set( disp);
}
void font_set( Display *disp){
char **misss;
int miss_count;
char *def;
XFontSet font_fontset;
font_fontset = XCreateFontSet( disp, "-mona-gothic-medium-r-normal--16-*", &misss, &miss_count, &def);
}
0513デフォルトの名無しさん
2005/07/10(日) 16:44:190514493
2005/07/10(日) 16:54:34上記のようなコードを書く際になにか注意事項のようなものはありませんでしょうか?
0515デフォルトの名無しさん
2005/07/10(日) 16:59:040516デフォルトの名無しさん
2005/07/10(日) 17:00:430517デフォルトの名無しさん
2005/07/10(日) 17:12:01そういう時はエラーが確実に発生する簡略化したコードを貼るんだ
0518デフォルトの名無しさん
2005/07/10(日) 17:14:06通常は Xlib の関数を呼んだからといって
その時点でサーバにリクエストが投げられるのではない
(効率のためバファリングされる)
ということを頭に入れておくこと。
>>516
馬鹿は黙っていること。
0519デフォルトの名無しさん
2005/07/10(日) 17:23:420520デフォルトの名無しさん
2005/07/10(日) 19:51:47金玉も無いくせに(以下同文)
0521デフォルトの名無しさん
2005/07/10(日) 22:00:59X protocolは非同期メッセージを使ったprotocolで、
Xlibはその非同期メッセージを直接扱うAPIであること、
を理解してください。
0522デフォルトの名無しさん
2005/07/10(日) 22:01:230523デフォルトの名無しさん
2005/07/10(日) 22:47:030524デフォルトの名無しさん
2005/07/11(月) 17:52:500526デフォルトの名無しさん
2005/07/11(月) 19:05:03OS: Linux CentOS 4
自作アプリ内からの firefox 起動/終了について
アプリには、firefox起動メッセージとパラメータとしてURLがきます。
(URLはその都度変化する)
するとアプリは
1. スレッドをDETACHEDで生成
2. "1"のスレッドで system("firefox <URL>"); を行い firefox を起動
3. syste() が終了したら、
メインスレッドにメッセージを送信して"1"のスレッド終了
としてます。
0527526
2005/07/11(月) 19:05:29アプリには複数回メッセージがきます。
その都度上記処理を実行し、これにより複数のURLに対してそれぞれ
firefoxウィンドウ が開きます。
ここで質問です、
特定のURLへの firefoxウィンドウが閉じたというアクションを自アプリ内で
どうすれば知ることが出来るでしょうか?
当初、各子スレッドが system(3)でブロックすることを期待していたのです
が firefoxは、既に起動していると既存のfirefoxプロセスにて新URLへのウ
ィンドウを開くため system(3)がすぐに終了してしまいます。
よろしくお願いします。
0528デフォルトの名無しさん
2005/07/11(月) 19:34:37firefoxが生きている間待ちつづけるスクリプトを書くとか
0529デフォルトの名無しさん
2005/07/11(月) 19:41:240530527
2005/07/11(月) 19:56:25ちょっとイメージがわきません。
詳しく教えていただけますか?
0531デフォルトの名無しさん
2005/07/11(月) 19:56:320532527
2005/07/11(月) 20:12:31pid_t child;
if ((child = fork()) == 0) {
execlp("firefox", "http://www.linux.or.jp/", (char*)0);
}
if (child < 0) {
goto end;
}
waitpid(child, NULL, WNOHANG);
をやったのすが、指定したURL http://www.linux.or.jp/ が表示されず、
また waitpid もすぐ戻ってしまいました。
どうすればいいんだろう...
0533デフォルトの名無しさん
2005/07/11(月) 20:24:350534デフォルトの名無しさん
2005/07/11(月) 20:26:19> ィンドウを開くため
が真実ならば、fork() & exec()で実行しようが何の解決にもならんだろ
馬鹿馬鹿しい
0535デフォルトの名無しさん
2005/07/11(月) 21:57:580536デフォルトの名無しさん
2005/07/11(月) 22:37:12誰かがその目的に合った拡張を書いてくれると思う。
0537526,527
2005/07/12(火) 13:33:12とった手段は次の通りです。
1.スレッドでURLに対応したプロファイルを作成する
プロファイルは既存のものでも大丈夫なようです。
system("firefox -CreateProfile <profile>");
2."1"のプロファイルを指定し、firefox を起動
system("firefox -P <profile> <url>");
新規に作成したプロファイルの場合、標準エラー出力にエラー/警告がでます。
上記によりその都度 firefoxが別プロセスで起動し、子スレッドが system でブロックするようになりました。
firefoxを閉じると system から戻ります。
他に良い方法がありましたらどうぞご教授下さい。
色々考えてくれたか方々、ありがとうございました。
0538デフォルトの名無しさん
2005/07/12(火) 20:01:45だからさー、何でソース読まないの?
0539537
2005/07/12(火) 20:52:14./ .\ / ヽ
/ ;ゝ--──-- 、._/ .|
/,.-‐''"´ \ |
/ ヽ、 |
/ ● ヽ| >>538
l (_人__ノ ● l いや、そんな事言われても
.| ´´ | / | ワテ猫やし
l ヽ_/ ´´ l
` 、 /
`ー 、__ /
`'''ー‐‐──‐┬‐‐'''""
/ |
/ |
0540デフォルトの名無しさん
2005/07/12(火) 21:08:08なごんだ
0541デフォルトの名無しさん
2005/07/14(木) 00:27:29いたら感想聞かせて
0542デフォルトの名無しさん
2005/07/17(日) 07:40:38これをあるプログラムから呼ぶと正しく処理できるのに、別のプログラムから
呼ぶとiconv_open()の部分で
iconv_open(): Invalid argument
とエラーになってしまいます。iconv_open()の引数は固定なので上記のような
エラーにはならないと思うんですが、こういうことはどういう原因で起こりえる
のでしょうか? 曖昧な質問ですみません。
2つのプログラムは同じ環境でコンパイルして動かしています。
MiracleLinux2.1 + gcc3.2.2 + glibc2.3.2です。
---
class Hoge
{
( ... 略 ... )
void Hoge::UTF8deHyouji(const char*str)
{
( ... 略 ... )
iconv_t cd = iconv_open("UTF-8","EUC-JP");
if(cd == (iconv_t)-1)){
fprintf(stderr, "iconv_open(): %s", strerror(errno));
return;
}
if(iconv(cd, &inbuf, &inleft, &outbuf, &outleft) == (size_t)-1){
fprintf(stderr, "iconv():%s", strerror(errno));
}
iconv_close(cd);
( ... 略 ... )
}
}
0543デフォルトの名無しさん
2005/07/17(日) 09:36:49話はそれからだ
0544デフォルトの名無しさん
2005/07/17(日) 09:39:210545542
2005/07/17(日) 12:57:11変換部分だけを切り出して実行すると正常に動作します。
またクラスから呼び出して動作する場合もあるのです。
もともとは大きな(?)プログラムの中で使用されていたクラスで
そこではエラーになるので、クラスの関数だけ呼び出して実行
する簡単なプログラムで試したらエラーが出ないという謎の状況
です。
>>544
変換だけ行うプログラムなどでは正常に動作するので、サポートは
されていると思うのです。また、iconv -l でもEUC-JP、UTF-8がある
ことを確認しました。同じ環境でプログラムによってEINVALが返って
しまうことはあったりするのでしょうか…?
0546デフォルトの名無しさん
2005/07/17(日) 13:57:340547542
2005/07/17(日) 14:40:26ふと思い立って、動かないほうのプログラムのmain()で
iconv_open() 〜 iconv_close() までの処理を書いてみたら
そこでも「Invalid argument」になってしまいました。
だんだんワケがわからなくなってきました…orz
>>546
ありがとうございます。やってみます。
(実はstrace自体知らなかったりしますが…)
0548542
2005/07/17(日) 14:53:40open("/usr/lib/gconv/gconv-modules.cache", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/gconv/gconv-modules", O_RDONLY) = -1 ENOENT (No such file or directory)
動かないほうのプログラムを調べてみると、サーバプログラムなので
実行ユーザのホームにchroot()していました。試しにchrootしている
箇所をコメントアウトしたら正常に動作しました。
問題の原因は解ったのですが、iconv()を使用するプログラムでは
chrootしてはいけないということになるのでしょうか?セキュリティの
関係でここはchrootしておきたいのですが、何か良い解決策はない
ものでしょうか。
0549デフォルトの名無しさん
2005/07/17(日) 14:57:560550デフォルトの名無しさん
2005/07/17(日) 15:33:21chrootの意味わかってるか?
0551542
2005/07/17(日) 15:35:38ホームディレクトリを基点に/usr/lib/gconvのディレクトリを掘って
丸ごとコピーしたら動きました。ありがとうございます。
0552デフォルトの名無しさん
2005/07/17(日) 15:39:150553542
2005/07/17(日) 15:49:42一応解っていたつもりだったのですが、iconv_open()などの
内部で行われる動作についてはなんとなく例外のような感じが
していました…
>>552
最初に生成した変換ディスクリプタを使いまわすということでしょうか。
うまく行きそうな気がするのですが、ちょっと構造が大きく変わってしまうので
別の機会に試してみたいと思います。
0554デフォルトの名無しさん
2005/07/17(日) 15:58:15初期化して、それ以降はファイルアクセスしないみたいだから。
0555542
2005/07/17(日) 16:58:39確かに>>548のエラーもログの中で一度しかでていませんでした。
仰るとおりchrootの前にiconv_open()→iconv_close()だけ実行したら
コピーしたファイル無しでも問題なく動作しました。
これで全てすっきりです。
ご回答いただいた方々、本当にありがとうございました。
0556デフォルトの名無しさん
2005/07/17(日) 20:02:050557デフォルトの名無しさん
2005/07/17(日) 20:48:13ム板のほうが深い話できるだろ
0558デフォルトの名無しさん
2005/07/17(日) 23:05:32英語を面倒がらず、ソース読む前にマニュアルを読むべきだったな。>自分
http://www.gnu.org/software/libc/manual/html_node/glibc-iconv-Implementation.html
> 6.5.4.1 Format of gconv-modules files
> ...
> At the first call of the iconv_open function the program reads all available
> gconv-modules files and builds up two tables: one containing all the known
> aliases and another that contains the information about the conversions and
> which shared object implements them.
コンソールでscreen使ってソース書いてたんだけど
Xlibを使ったコードだったから、実験するためにtwm立ち上げて
そこでscreenをデタッチしてkterm上で実行してみたわけよ、でもなぜか
セグフォるの、調べてみたら
color_black = BlackPixel( disp, 0);
これでセグフォる
どう考えてもセグフォる部分じゃない
3時間ものすごい頭使って今まで考えたわけよ
pika−−−−−−−−−−nn!!!!!!!
もしかして、screenをデタッチしてやったからコンソールのときのなんかの変数受け継いでるのかな?
で、あたらしくkterm立ち上げてashで生で実行
‥‥‥‥‥‥‥‥‥‥
いけた‥‥‥‥
ほんと、今までの3時間なんだったんだろう‥‥
ごめん、 どうしても誰かにいいたかったの‥‥
0560デフォルトの名無しさん
2005/07/21(木) 07:33:36フォント名はコードに直書きするんじゃなくて
.Xresourcesに書けって書いてあるんだけど
なんで? 指定フォントの決め打ちなのにわざわざ書かせなきゃいけないの?
ってか、どうやって読み込めってんだよ
0561デフォルトの名無しさん
2005/07/21(木) 09:31:59カスタマイズすることができる
0562デフォルトの名無しさん
2005/07/21(木) 09:45:40環境変数を確認するのはことXWindowに関しては常道。
>>560
おまいさんもXWindowに関して基礎から勉強し直した方が…
0563デフォルトの名無しさん
2005/07/21(木) 10:58:370564デフォルトの名無しさん
2005/07/21(木) 11:09:110565デフォルトの名無しさん
2005/07/21(木) 11:24:32Xの知識が無駄になるってどういうことなの?
また違うWindowSystem誰か作ったの?
0566560
2005/07/21(木) 11:46:10でも決め打ちだよ?
そのフォントじゃないと正しく動作しないの
それでも、やれっていうの?
0567デフォルトの名無しさん
2005/07/21(木) 12:07:51正しく動作する別のフォントに入れ替える必要が出てくるかもしれない。
とかね。
べつにローカルな使用だけでソースが手元にあって
いつでもコンパイルできるならなんでもいんじゃね?
0568デフォルトの名無しさん
2005/07/21(木) 12:29:23「Xの仕事が無い」というだけのこと
0569565
2005/07/21(木) 19:43:12寂しいね
0570デフォルトの名無しさん
2005/07/21(木) 20:53:19お、俺を一緒にするなよな? な?
0571デフォルトの名無しさん
2005/07/21(木) 21:11:20でも仕事以外にXって使わないからなぁ・・・
0572デフォルトの名無しさん
2005/07/21(木) 21:58:540573デフォルトの名無しさん
2005/07/22(金) 07:56:56> もしかして、screenをデタッチしてやったからコンソールのときのなんかの変数受け継いでるのかな?
「もしかして」じゃなくて調べろよ。
for i in `env | awk -F= '{ print $1 }'`; do (unset "$i"; ./a.out); done
どうせ全然違う原因だと思うが。
0574デフォルトの名無しさん
2005/07/22(金) 08:36:400575デフォルトの名無しさん
2005/07/22(金) 22:48:34なくて、disp == NULL で落ちてたってだけじゃないの?
0576デフォルトの名無しさん
2005/07/30(土) 11:01:11子プロセスの標準出力と標準エラー出力を親プロセスで取りたいのですが、
たまに出力を取る部分で止まってしまいます。fgetsしているところで止まっている
ので、eofがくるまで待っているのか、とも思っているのですが・・・。
子プロセスの標準出力と標準エラー出力を別に取りたいので、forkしてパイプを
つなげる必要があると認識しています。
テストでつかったソースは以下のアップローダにupしました。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/819.c
#main関数内で起動用のコマンド文字列を作っているのですが、
#このソースでは省略しています。
このような時、どうすればよいのでしょうか。どなたかご教授ください。
0577デフォルトの名無しさん
2005/07/30(土) 12:05:120578デフォルトの名無しさん
2005/07/30(土) 12:19:300579576
2005/07/30(土) 12:55:27> 577さん
バッファが満杯でブロックされてる場合は578さんが書いているように
1.スレッドで満杯になる前に逐次読み出してやる
2.selectでタイムアウトを設定する
という形でしょうか。
> 578さん
スレッドはぱっと調べた結果、手に負えそうもないので、selectについて調べてみました。
selectはファイルディスクリプタが読み書き可能になるまで待機して、準備できた場合は
1以上を返す、という理解でよろしいのでしょうか。
#上記のブロックされた場合はタイムアウトでbreakする?
selectを使って色々いじってみます。
0580デフォルトの名無しさん
2005/07/30(土) 14:49:47とりあえずstrace -p PIDを全てに試してみたらどうなのよ?
# Solarisだとtruss
ありがちなのが、bugで誰も書いてないpipeを読んでいるケース。
0581576
2005/07/30(土) 19:23:22straceですか。そのようなコマンドがあることは知りませんでした。
#ものすごい今更ですが、Linux/gcc環境なので
#straceで使えました。
早速実行してみた結果、以下のように・・・
$ strace -p 19592
write(2, "書き込みメッセージ・・・"..., 46
$ strace -p 19590
read(3,
もしかして580さんの仰るとおり読み出すpipeが違うのでしょうか。デバッグライト
では、子プロセスの書き込み先は対になる4だったのですが・・・。
メッセージを読み出せる場合の方が多かったので油断していました。
0582デフォルトの名無しさん
2005/07/30(土) 19:37:43>>579の時点で妥当な結論が出ているので580はさくっと無視するのが吉。
どうせあなたのプログラムも読んでない。
0583デフォルトの名無しさん
2005/08/02(火) 11:54:06このページには2.4での方法が書いてありますが、2.6ではうまくいかないです。
ttp://www.atmarkit.co.jp/fsecurity/rensai/rootkit03/rootkit02.html
上のページと同じように、sys_unameをフックするソースを晒して下さい!!
0584デフォルトの名無しさん
2005/08/02(火) 11:58:370585デフォルトの名無しさん
2005/08/02(火) 12:37:43LKM rootkit のソース読めばいいじゃん。
0586デフォルトの名無しさん
2005/08/02(火) 17:30:35kernel2.6では、結構大変そう。。。
カーネルのバージョン毎にrootkitの対応状況が異なる。
最新版カーネルで、フック&晒しよろろ。
2.6全般のシステムコールをフックするrootkitがあれば、教えてください。
0587デフォルトの名無しさん
2005/08/02(火) 19:24:43いや、だから自分で読めよ。
0588デフォルトの名無しさん
2005/08/04(木) 02:23:45straceは、すべて(!?)のシステムコールをフックしてるんじゃないか?
よくしらんがね。
0589デフォルトの名無しさん
2005/08/04(木) 15:55:42お知恵を拝借させていただけないでしょうか。
SolarisとLinuxではforkしてexeclpしたときの振る舞いが違う、
という現象で悩んでいたのですが、どうやらshの違いではないかと
いうところまで突き止めました。
Linuxの場合、shはbashのシンボリックリンクになっていて、-cでコマンド
起動をするとpidはshと同一になるのですが、Solarisですとshとコマンドが
別のpidになります。
Solarisではforkの返り値のpidでkillしてもコマンドは別pidなので殺せない
ようなのです。
Solarisのshでbashと同じ動作をさせるか、何とかして孫(sh->コマンド)のpid
を取ってきてkillする方法はありませんでしょうか?。
> 582さん
アドバイスありがとうございます。selectでうまく動作させることができました。
#まとめをUPしようかとも思ったのですが、2chでは一般的ではない行為です?
0590デフォルトの名無しさん
2005/08/04(木) 16:09:35いろいろ方法はないではないけどね。
ps出力相当の情報を拾ってきて、ppidがshのpidのプロセスを探すとか。
そもそも、なんでexeclp()でshを動かすのかが問題かな。
シェルを経由しないで直接動かせばいいじゃんと思うわけだ。
killハンドラで子供を殺すプロセスを中継に使うって手もあると思うし。
#まとめは歓迎。この件だけでもこのスレ全部でも、すきなだけやっちゃってくださいw
##で、アップロードはアップローダかどこかに。
0591デフォルトの名無しさん
2005/08/04(木) 17:39:38んなことはない。
共通の入口と出口を抑えているだけでつ。
0592デフォルトの名無しさん
2005/08/04(木) 21:50:42ltraceなんかは純然たるwrapperだわな。
>>589
sh -c 'exec command args'してみれば?
0593デフォルトの名無しさん
2005/08/05(金) 16:12:11fork() したら、子プロセスの最初で setsid()して新しいセッション/プロセスグループを作成する。
こうすると kill(-pid, SIGTERM)とかでそのプロセスグループに対して killすることがでけるよ。
こんな感じ
child = fork();
if (child == 0) {
setsid();
execlp(〜);
}
〜〜
kill(-child, SIGTERM);
自作アプリで Firefoxをexec、killしたい時にやりました。
0594デフォルトの名無しさん
2005/08/05(金) 17:10:50ltraceはwrapperじゃないよ。
stepモードで実行して、libcの関数の先頭アドレスにjumpした瞬間を拾って
スタック先頭から引数を拾って表示している。だから死ぬほど遅い。
wrapperにすると可変長引数に対応できないからな。
0595デフォルトの名無しさん
2005/08/07(日) 02:07:290596デフォルトの名無しさん
2005/08/07(日) 02:29:14すべてのUNIXで共通して判別できる方法はありません
0597デフォルトの名無しさん
2005/08/07(日) 02:36:17intの最大値を調べてみたら?
0598デフォルトの名無しさん
2005/08/07(日) 02:38:210599デフォルトの名無しさん
2005/08/07(日) 02:39:03LP64かもしれないし(つーか普通そう)
0600デフォルトの名無しさん
2005/08/07(日) 03:16:51sizeof(long)
sizeof(int)
の結果を見て好きなように解釈すれ
0601デフォルトの名無しさん
2005/08/07(日) 03:22:37CPUのことだろ?
dmesgでCPUみたらいいだろ
0602デフォルトの名無しさん
2005/08/07(日) 03:26:280603デフォルトの名無しさん
2005/08/07(日) 03:27:20実行してる環境の「何が」32ビットか64ビットかによって判定法が異なる。
0604デフォルトの名無しさん
2005/08/07(日) 03:55:470605デフォルトの名無しさん
2005/08/07(日) 04:34:51OSが64bitであろうと32bitであろうと、
実行環境のbit数は関係ないだろう。emulatorかもしれないんだし。
0606デフォルトの名無しさん
2005/08/07(日) 12:28:22そもそも dmesg が入っているとは限らない。
0607デフォルトの名無しさん
2005/08/07(日) 12:47:210608デフォルトの名無しさん
2005/08/07(日) 13:02:41両方のバイナリを実行できるOSもあるし。
>>600,603あたりがFAじゃねーの。
0609デフォルトの名無しさん
2005/08/07(日) 13:06:000610デフォルトの名無しさん
2005/08/07(日) 13:16:35結局603を間がえたあと
http://www.opengroup.org/public/tech/aspen/lp64_wp.htm
見たいな感じで600のようなことをすることになるわけで。
0611デフォルトの名無しさん
2005/08/07(日) 14:11:01簡単な解説があるサイトを紹介していただいても結構です。
0612デフォルトの名無しさん
2005/08/07(日) 14:13:020613sage
2005/08/07(日) 14:17:31例をもとに、動作検証してみます。
0614デフォルトの名無しさん
2005/08/07(日) 14:18:12ひとつのスレッドで同時に複数I/Oを実行したいとい
0615sage
2005/08/07(日) 14:37:06サンプルとか例などはありませんでしょうか?
0616デフォルトの名無しさん
2005/08/07(日) 14:45:350617デフォルトの名無しさん
2005/08/07(日) 14:51:05理解できるように努力してみます。
ありがとうございました。>> 614 616
0618デフォルトの名無しさん
2005/08/07(日) 17:05:000619デフォルトの名無しさん
2005/08/07(日) 18:12:180620デフォルトの名無しさん
2005/08/07(日) 18:32:310621デフォルトの名無しさん
2005/08/07(日) 19:12:58理論上は
0622デフォルトの名無しさん
2005/08/07(日) 19:35:420624デフォルトの名無しさん
2005/08/07(日) 20:54:12読んだらEOF返るだろ
select()しても無駄なんじゃないの
そのへぼプログラムはポータブルに動くのか?
0625デフォルトの名無しさん
2005/08/07(日) 21:09:09ファイルがまだcloseしてないときでも
EOFが帰るのか
ちょっと試してみるか
0627デフォルトの名無しさん
2005/08/07(日) 21:35:000628デフォルトの名無しさん
2005/08/07(日) 21:41:54いや、>>619と>>618が戦ってるだけだろ
>>618が標準入力とファイルを読む という話をしているのに対して
>>619がファイルは云々と標準入力のことを棚上げして
以降話がかみ合わないままなんだよ
0629デフォルトの名無しさん
2005/08/07(日) 21:48:25標準入力はEOFにならないとしてもファイルはEOFになるんじゃないの?
一度EOFまで達したファイルディスクリプタって
その後書き込みがあったときに読み込み可能になるの?
標準入力はselectで待てるけど、ファイルは最後まで読み切ったら
selectのタイムアウト後に自分でseekしてみるしかないんじゃなくて?
それは別々な処理だし、selectで待つとは言い切れないんじゃない?
0630デフォルトの名無しさん
2005/08/07(日) 21:52:40一旦EOFを返しても、そのファイルが拡大されれば、
その後のread(2)でデータが読める。select(2)もOK。
この仕様は4BSDが始めた。(たしかtail -fのために)
その頃のSystem Vは駄目だったけど、今これがダメなUNIXはないと思う。
www.opengroup.orgあたりはどういう風に言及しているのかな。
0631デフォルトの名無しさん
2005/08/07(日) 22:00:00そりゃずいぶんな実装だなw
0632630
2005/08/07(日) 22:08:03最近のUNIXはfile notificationがあるので、
(fcntl(2)のF_NOTIFY&DN_MODIFY)
こっちを使えば、いい場合もあるけど。(tail -fではみたことないけどね)
0633デフォルトの名無しさん
2005/08/07(日) 22:09:28どんなプログラムだったんだろう・・・見てみたい
0634デフォルトの名無しさん
2005/08/07(日) 22:18:15EOFに達してもselect抜けるよね
EOFに達したあと、再度selectにつっこんだら
拡大されるまではブロックされるの?
0635デフォルトの名無しさん
2005/08/07(日) 23:16:39スマートに実装されてる訳だが。
0636デフォルトの名無しさん
2005/08/07(日) 23:42:36http://www.freebsd.org/cgi/cvsweb.cgi/src/usr.bin/tail/tail.c?rev=1.21&content-type=text/x-cvsweb-markup
0637デフォルトの名無しさん
2005/08/07(日) 23:57:54tail/forward.c
http://www.freebsd.org/cgi/cvsweb.cgi/src/usr.bin/tail/forward.c?rev=HEAD&content-type=text/x-cvsweb-markup
0638デフォルトの名無しさん
2005/08/08(月) 00:57:00makefileのあるディレクトリの下に、
Aというサブディレクトリと、Bというサブディレクトリがあり、
ここのサブディレクトリにもそれぞれmakefileがあります。
このとき、親ディレクトリからAとBの両方を一度にメイクするには
どのように書けば良いのでしょうか。
よく他人の作ったプログラムやLinuxのカーネルをメイクすると、
入ります ディレクトリ xxx
出ます ディレクトリ xxx
というような表示が出るのですが、その方法を教えてほしいです。
0639デフォルトの名無しさん
2005/08/08(月) 00:57:550640デフォルトの名無しさん
2005/08/08(月) 01:02:24http://pc8.2ch.net/test/read.cgi/tech/1029599472/
0641618
2005/08/08(月) 02:45:52--
FILE * fp = fopen(file, "r");
fseek(fp, 0, SEEK_END);
for (;;) {
if (fgets(fp)) {
/* tail -f相当 */
}
FD_SET(0);
select();
if (rtn > 0) {
if (FD_ISSET(0)) {
if (!fgets(stdin)) {
break;
}
/* ファイルに書き出す */
}
--
実際にはこれにmsgが絡んでもう少し複雑。
0642デフォルトの名無しさん
2005/08/08(月) 10:08:29バッファには先読みされてるがselectでは空という場合もあるぞ。
0643デフォルトの名無しさん
2005/08/08(月) 10:10:120644デフォルトの名無しさん
2005/08/08(月) 13:22:16fscanf()あたりと使うのは絶望的。
0645618
2005/08/08(月) 18:52:10流石に標準入力は実際にはfgets()してません。
バッファリングしない一行入力関数を作ってそれを呼んでます。
#だから概略なんだってば。
0646デフォルトの名無しさん
2005/08/08(月) 20:04:39sleep(3)を使おうと思ってるのですが、sleep(3)はスレッドセーフですか?
man(FreeBSDとLinuxの両方)を見たけどその記述が見つかりませんでした。
0647デフォルトの名無しさん
2005/08/08(月) 20:07:560648デフォルトの名無しさん
2005/08/09(火) 01:20:09SIGALRMでsleep(3)実装ってどんな化石OSの話でつか。
0649デフォルトの名無しさん
2005/08/09(火) 01:41:57( ゚д゚) ポカーン
(´-`).。oO(わからないなら黙ってればいいのに…)
0650デフォルトの名無しさん
2005/08/09(火) 02:55:14レベルはK&Rを読了です。
0651デフォルトの名無しさん
2005/08/09(火) 03:07:35( ゚д゚) ポカーン
thread safeにするため最近のOSじゃalarmは軒並みnanosleepで実装されてるよ。
(´-`).。oO(じじいはひっこんでりゃいいのに…)
0652デフォルトの名無しさん
2005/08/09(火) 03:08:54大事なところで噛んだ。ちきしょう。
0653デフォルトの名無しさん
2005/08/09(火) 08:08:50Xorg のソースあたりから
0654デフォルトの名無しさん
2005/08/09(火) 08:20:58ないんじゃないか?
0655デフォルトの名無しさん
2005/08/09(火) 08:46:06http://www.opengroup.org/onlinepubs/009695399/functions/sleep.html
ポータブルにしたいなら、sleep(3)は使わない方がいいね。
0656デフォルトの名無しさん
2005/08/09(火) 13:11:11ソケットファイルのパーミッションは 何で指定するの?
あとから 777 に変えたいときはどうしたらいいの?
system("chmod a+rw hoge");はかっこわるくてもうヤ
0657デフォルトの名無しさん
2005/08/09(火) 13:20:24出来ると同時に指定したいときは、umask(0)。
パーミッションを落すわけじゃないから、後でいいだろうね。
0658デフォルトの名無しさん
2005/08/09(火) 13:49:28かっこ悪いというより、頭悪いな。
0659デフォルトの名無しさん
2005/08/09(火) 16:43:40ようするに最近のOSはsleep(3)がスレッドセーフで実装されてるってことか?
0660デフォルトの名無しさん
2005/08/09(火) 21:39:20つまりnanosleepで実装されてれば○。alarmで実装されてたら×。
移植性高めたいならselect使えということ。
0661デフォルトの名無しさん
2005/08/09(火) 22:09:010662デフォルトの名無しさん
2005/08/09(火) 22:13:29http://www.kt.rim.or.jp/~ksk/wskfaq-ja/articles/lame-list.html
0663デフォルトの名無しさん
2005/08/09(火) 23:16:370664デフォルトの名無しさん
2005/08/10(水) 00:23:08usleep()で実装されていても駄目(な可能性がある)。
nanosleep()は、signal non-intrusiveであることが保証されている。
http://www.opengroup.org/onlinepubs/009695399/functions/nanosleep.html
nanosleep()はPOSIXリアルタイム拡張。
0665デフォルトの名無しさん
2005/08/10(水) 01:07:24やっぱ、Pthreadを使用してsleepしたいならselectかpollを使用するのが無難だな。
sleep(3)は、過去(pthreadが無い時代)の物との互換性維持の為にあるようなもんだろ。
0666デフォルトの名無しさん
2005/08/10(水) 02:11:22pthread的には現代的なAPI設計とは言いがたいからね。
0667デフォルトの名無しさん
2005/08/10(水) 06:46:30そもそもここUNIXスレだしな
WinsockならSleepが確実にあるはずだからそれ使えというのも分かるけど
0668デフォルトの名無しさん
2005/08/10(水) 09:11:37それのさ、BSDソケット版というかUNIX版?みたいな感じのやつはある?
0669デフォルトの名無しさん
2005/08/10(水) 09:38:00ネットワークプログラミングスレのテンプレへGO!
0670デフォルトの名無しさん
2005/08/10(水) 09:47:130671デフォルトの名無しさん
2005/08/10(水) 10:19:55ttp://www.sony.co.jp/Products/Computer/NEWSWAVE/DevelopersInf/Porting/pty.html
あとはStevens本とか。
0672デフォルトの名無しさん
2005/08/10(水) 11:07:46script(1)のソース。
http://svn.clkao.org/svnweb/freebsd/checkout/cvs/branches/RELENG_5/usr.bin/script/script.c?rev=122468
0673デフォルトの名無しさん
2005/08/10(水) 11:08:500674デフォルトの名無しさん
2005/08/10(水) 22:38:25値が衝突しないような方法はないでしょうか
0675デフォルトの名無しさん
2005/08/10(水) 22:41:110676デフォルトの名無しさん
2005/08/10(水) 23:06:02関数呼び出しの可能性がある。with pthreadの場合。
http://www.opengroup.org/onlinepubs/009695399/functions/xsh_chap02_03.html#tag_02_03
0677デフォルトの名無しさん
2005/08/11(木) 00:42:570678デフォルトの名無しさん
2005/08/11(木) 01:29:24そんなこといったら読み出しだって保証されませんよ?
0679デフォルトの名無しさん
2005/08/11(木) 11:16:560680デフォルトの名無しさん
2005/08/11(木) 12:16:260681デフォルトの名無しさん
2005/08/11(木) 12:49:48このページの要約お願いします
0682デフォルトの名無しさん
2005/08/11(木) 13:37:170683デフォルトの名無しさん
2005/08/11(木) 18:06:230684デフォルトの名無しさん
2005/08/11(木) 18:07:24環境はLinux、GCCです
0685デフォルトの名無しさん
2005/08/11(木) 18:10:28マルチは氏ね
0686デフォルトの名無しさん
2005/08/11(木) 18:18:04向こうに挨拶くらいしてから移動しろ。
cursesには現在座標を取得する関数は確かないから、
自前でどこにあるかを追跡し続ける必要があったと思う。
つーか、目的が判らんからそれ以上はなんとも言えん。
0687デフォルトの名無しさん
2005/08/11(木) 18:46:22getyxだろ?
0688デフォルトの名無しさん
2005/08/11(木) 18:54:31正気?
0689デフォルトの名無しさん
2005/08/11(木) 19:13:10aho
0690デフォルトの名無しさん
2005/08/11(木) 20:54:35>>687
ありがとうございます。勉強になりました。
ファイラーを作ろうとしているのですがカーソルを押したときに座標を読み取ってどのファイルが選択されているかをチェックしようとしていました。試してみます。
0691デフォルトの名無しさん
2005/08/11(木) 21:34:45え? Solaris ではデフォルトだけど。
0692デフォルトの名無しさん
2005/08/12(金) 00:42:130693デフォルトの名無しさん
2005/08/12(金) 02:20:280694デフォルトの名無しさん
2005/08/13(土) 15:56:40このタイムゾーンの文字列の取得方法を教えてください。
0695デフォルトの名無しさん
2005/08/13(土) 16:18:36正規表現で抜けばいいんでないの?
0696デフォルトの名無しさん
2005/08/13(土) 17:39:22time_t t = 1116908090;
printf("%s\n",localtime(&t)->tm_zone);
0697デフォルトの名無しさん
2005/08/14(日) 00:32:090698デフォルトの名無しさん
2005/08/14(日) 01:28:55リモート側でrstatd動かすとかsnmp使うとか
0699デフォルトの名無しさん
2005/08/14(日) 12:12:00UNIX上で、とあるコマンドをどのユーザーが発行しても同一ユーザーが
発行しているようにさせたいのですが、どのようにすればいいのでしょうか?
自分で思いつくところだと、コマンドを発行させたいユーザが起動するデーモン
プログラムに、その他ユーザーが発行要求を投げて。デーモンはそれをSystem関数やら
何やらで発行して結果を返す。という感じで考えているのですが、
他に妙案ってありますでしょうか。
文章力無くてすみません
0700デフォルトの名無しさん
2005/08/14(日) 12:25:410701699
2005/08/14(日) 12:44:24返信ありがとうございます。
実行権を与える、というわけではなくてA、Xとユーザーが存在するならば、
Aがxxxを実行 →psで見るとxxxをAが実行していることになっている。
これを、
Xはxxx_daemonを起動しておく
Aがxxx_daemonを実行 → xxx_daemonからxxxをコール →psで見るとxxxをXが実行していることになっている。
という事がしたいのです。
0702デフォルトの名無しさん
2005/08/14(日) 13:44:300704デフォルトの名無しさん
2005/08/15(月) 09:42:450705デフォルトの名無しさん
2005/08/15(月) 09:53:020706669
2005/08/15(月) 23:38:03早速レス頂いたとおりchmod ug+sでモジュールに権限つけたら上手くいったのですが、
該当モジュールがシェルで、中でコマンド発行している場合はユーザが元のユーザで実行
している扱いになってしまいます。(man chmodでもそう書かれていたのですが)。
これを回避する方法ってありますでしょうか?
0707デフォルトの名無しさん
2005/08/16(火) 00:02:38ってかなんでそっちなんだ?
0708デフォルトの名無しさん
2005/08/16(火) 01:21:320709デフォルトの名無しさん
2005/08/16(火) 10:12:280710デフォルトの名無しさん
2005/08/16(火) 10:17:020711デフォルトの名無しさん
2005/08/16(火) 10:18:300712デフォルトの名無しさん
2005/08/16(火) 10:21:46限りなく光速に近い速度で移動する
0713デフォルトの名無しさん
2005/08/16(火) 10:40:230714デフォルトの名無しさん
2005/08/16(火) 10:50:350715デフォルトの名無しさん
2005/08/16(火) 12:34:42man co だろ。はいはいワロスエロス
0716デフォルトの名無しさん
2005/08/16(火) 14:47:45限りなくco速に近い速度で移動する
0717デフォルトの名無しさん
2005/08/16(火) 15:56:270718デフォルトの名無しさん
2005/08/16(火) 22:16:530719669
2005/08/17(水) 00:10:13>>708
結局所有者rootのCモジュールにug+s、で、その中でsetuidしてsystem関数をコールさせることで
落ち着きました・・・まだ実機で確認取れてないんですが(汗
アドバイスありがとうございました(感謝
0720デフォルトの名無しさん
2005/08/17(水) 01:45:51まぁそういう場合はsudo使うと楽なのだが。
0721デフォルトの名無しさん
2005/08/17(水) 10:22:21に、rm *.oと書いているんですが、
*.oがひとつもない時はエラーになってしまいます。
エラーを出さないようにするにはどうしたらいいんですか?
0722デフォルトの名無しさん
2005/08/17(水) 10:26:16rm -f
0723デフォルトの名無しさん
2005/08/17(水) 12:17:020724デフォルトの名無しさん
2005/08/17(水) 21:04:090725デフォルトの名無しさん
2005/08/17(水) 21:37:440726デフォルトの名無しさん
2005/08/18(木) 08:25:38たぶんあなたのしたいのはこういうこと。
エラーになっても、makeが無視して続行するようにする。
http://www.gnu.org/software/make/manual/html_chapter/make_5.html#SEC56
0727デフォルトの名無しさん
2005/08/18(木) 08:27:220728デフォルトの名無しさん
2005/08/19(金) 23:44:09もしくは、cygwinなんかを使ったり。。
貴方の最適環境を教えてちょ
0729デフォルトの名無しさん
2005/08/19(金) 23:52:02X端末でなければ当然telnet端末だったりするわけだから、
通常GUIの開発でもない限り端末エミュレータ上でmuleを動かしている。
理由は、自由に日本語を表示/入力したいのと、いっぱい行を表示させたいの
ちょっと、コード書いたり使うくらいならコンソールでもやるけどね
>もしくは、cygwinなんかを使ったり。。
これだと、Windowsプログラミングにならないかね?
自分は、
kterm 6.2.0 custom
kinput2 version 3.0 (1999/05/26)
Canna Server (Ver. 3.6)
gcc 3.3.3 custom
VIM - Vi IMproved 6.3 custom
XFree86
ってかんじかな。
細かいのはおいとくけど
0731デフォルトの名無しさん
2005/08/20(土) 01:25:55X は使うけど、起動してるのは全画面表示の mlterm と Emacs。
Emacs だけ端末エミュレータで起動してるのは、elscreen と screen で
キーバインドがゴッチャになって混乱するから。
やってる作業自体に本質的に必要ってわけではない。たまに Flash 見たり
するのに Firefox 起動するとか、そんなもんじゃねーかな。
0732デフォルトの名無しさん
2005/08/20(土) 02:02:28Cannaとかまだあったんか
0733デフォルトの名無しさん
2005/08/20(土) 04:12:24使っている人がいるから保守が続いているけど
新規にインストールする人は年々減ってる
0734デフォルトの名無しさん
2005/08/20(土) 08:34:57gnome-terminal, screen, gnuclient, ssh
eclipse (with/without emacs plugin)
Xcode (Mac OS X)
不思議なもんで、screenがあっても、
gnome-terminalのtabは使うし、virtual desktopも使う。
0735デフォルトの名無しさん
2005/08/20(土) 14:54:510736デフォルトの名無しさん
2005/08/20(土) 18:16:010737デフォルトの名無しさん
2005/08/22(月) 00:18:350738デフォルトの名無しさん
2005/08/22(月) 00:20:170739デフォルトの名無しさん
2005/08/22(月) 19:01:110740デフォルトの名無しさん
2005/08/22(月) 19:03:250741デフォルトの名無しさん
2005/08/22(月) 20:04:270742デフォルトの名無しさん
2005/08/23(火) 12:14:300743デフォルトの名無しさん
2005/08/23(火) 12:18:510744デフォルトの名無しさん
2005/08/23(火) 13:41:570745ばか
2005/08/23(火) 14:33:320746デフォルトの名無しさん
2005/08/23(火) 20:23:010747デフォルトの名無しさん
2005/08/25(木) 07:07:18特にクロック数を取得したいのですが。
環境はOpteron、Fedora Core4、gcc4.0.0です。
マシンはいくつかあって、CPUのクロックが違います。
0748デフォルトの名無しさん
2005/08/25(木) 07:50:27メモリ情報とかいっぱいあるフォルダに入ってた悪寒
ごめんドコかはわからんorz
0749デフォルトの名無しさん
2005/08/25(木) 08:04:03cat /proc/cpuinfo
fopen("/proc/cpuinfo", "r")
0750デフォルトの名無しさん
2005/08/25(木) 13:26:000751デフォルトの名無しさん
2005/08/25(木) 15:34:160752デフォルトの名無しさん
2005/08/25(木) 15:36:59http://pc8.2ch.net/test/read.cgi/tech/1014691583/
0753デフォルトの名無しさん
2005/08/25(木) 19:01:050754デフォルトの名無しさん
2005/08/25(木) 20:07:21フォルダー → 一般人
0755デフォルトの名無しさん
2005/08/25(木) 20:10:140756デフォルトの名無しさん
2005/08/25(木) 20:56:33標準ライブラリのリファレンスは何を参照していますか?
manのようにUNIX環境でさくっと参照できる資料はないもんでしょうか。
0757デフォルトの名無しさん
2005/08/25(木) 21:04:010758デフォルトの名無しさん
2005/08/25(木) 21:08:390759デフォルトの名無しさん
2005/08/25(木) 21:23:20無い
あきらめろ
0760デフォルトの名無しさん
2005/08/25(木) 22:07:01X3J16-96がhtmlになっているのをnamazuで検索。
ぐぐれば転がっている。
1997 C++ Public Review Document
もっと新しいのでhtmlになっているのある?
0761デフォルトの名無しさん
2005/08/25(木) 22:07:52> X3J16-96が
これはよぶん。省略してちょ
0762デフォルトの名無しさん
2005/08/25(木) 22:10:31ちょろっと思い出すにはお手軽。
ttp://www005.upp.so-net.ne.jp/episteme/html/stlprog/
0763デフォルトの名無しさん
2005/08/26(金) 10:23:480764デフォルトの名無しさん
2005/08/26(金) 10:34:40argv[0] …か?
0765デフォルトの名無しさん
2005/08/26(金) 10:38:05その話題は荒れるからよせw
0766デフォルトの名無しさん
2005/08/26(金) 16:51:12>>3の1.14
0767デフォルトの名無しさん
2005/08/27(土) 22:30:46Fedora Core 2でUSB<->Serial変換を使って制御をやっています。
C++で自前のclassですが、基本はCのread()とwrite()を使ってのやり取りです。
Win 2kのハイパーターミナルで通信するのに比べると、
FC2でreadする動作速度が遅いようです。
何かreadを高速化させる方法と言うのがあるんでしょうか?
タイミングの問題でしょうか。
使用している装置は内部にFTDIのUSBのチップが載っています。
0768デフォルトの名無しさん
2005/08/28(日) 00:23:03stty
0769デフォルトの名無しさん
2005/08/28(日) 01:37:24えーと、sttyでbaud rateを変更せよ、という事でしょうか。
出来ればもう少し詳しくお願いします。
自分の書き方が悪かったのですが、
読む量は非常に少なく、read()1回あたりに数characterです。
read()を実行してから、読み始めるまでが遅い印象です。
ちゃんと計測していませんが、read()1回にコンマ数秒かかっています。
0770デフォルトの名無しさん
2005/08/28(日) 02:15:49tcgetattr、tcsetattr、cfsetispeed、cfsetospeedあたりを駆使してください。
ただ、ハードウェアやドライバの問題の可能性もあります。
0771767
2005/08/28(日) 02:43:53Class名は晒すとまずいので、myClassにします。
int main(){
myClass mon("/dev/usb/ttyUSB0");
mon.Open();
(略)機器特有の設定のみ。この時点でread()を使っても遅いので、
ここでの設定は細かく晒しません。
cout << mon.ReadVoltage() << "¥t" << mon.ReadCurrent() << endl;
return 0;
}
mainを短くするとこんな感じ。
ちなみに、FTDIのチップというのは、Linux 2.4.20以降に標準でデバドラが入ってます。
0772767
2005/08/28(日) 02:53:55myClass::myClass(string deviceName)
: RS232C(deviceName)
{
SetIOSpeed(B115200);
SetDelimiter(MAC);
}
RS232C::RS232C(string deviceName)
: fDeviceName(deviceName)
{
fFileDescriptor = -1;
SetDefault();
}
myClassはRS232Cというclassを継承してます。
0773767
2005/08/28(日) 02:55:59void RS232C::SetDefault()
{
SetDelimiter(WIN);
fInputSpeed = B9600;
fOutputSpeed = B9600;
fSleep = 0;
struct termios tmp;
fOptions = tmp;
UnsetIflag(INPCK | ISTRIP);
UnsetIflag(IXON | IXOFF | IXANY);
UnsetOflag(OPOST);
SetCflag(CLOCAL | CREAD);
UnsetCflag(PARENB);
UnsetCflag(CSIZE);
SetCflag(CS8);
UnsetCflag(CSTOPB);
UnsetCflag(CRTSCTS);
UnsetLflag(ICANON | ECHO | ECHOE | ISIG);
SetCc(VMIN, 0);
SetCc(VTIME, 10);
SetInputSpeed(fInputSpeed);
SetOutputSpeed(fOutputSpeed);
SetTermios(fOptions);
}
です。
delimiterとbaud rateは後で変更しています。
0774767
2005/08/28(日) 02:58:38string RS232C::Read() const
{
string line = "";
char buf[100];
while(1){
int size = read(fFileDescriptor, &buf, 100);
if(0<size && size <=100){
line += buf;
} else {
break;
} // if
} // while
return line;
}
Read()はこんなです。
自分の通常使用では100文字を超えるようなread()の結果はないので、
100で一旦区切ってます。
0775767
2005/08/28(日) 03:05:22問題があるとすればread()の使い方か、
もしくは>>773の設定内容でしょうか。
SetCflag(CLOCAL | CREAD);
などは、
void SetCflag (int flag){ fOptions.c_cflag |= flag;}
などという関数を呼んでいます。
ちなみにcode内でfで始まっている変数はmember変数です。
長いですが、よろしくお願いします。
職業柄、宇宙の神秘の解明に繋げます。
0776デフォルトの名無しさん
2005/08/28(日) 03:25:550777767
2005/08/28(日) 03:42:01speed 115200 baud; rows 0; columns 0; line = 244;
intr = t; quit = M-r; erase = M-~; kill = M-^¥; eof = R; eol = I; eol2 = ^M;
start = s; stop = M-r; susp = M-~; rprnt = L; werase = ^C; lnext = M-<;
flush = M-^]; min = 0; time = 10;
-parenb -parodd cs8 hupcl -cstopb cread clocal -crtscts
ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl -ixon -ixoff
-iuclc -ixany -imaxbel
-opost -olcuc ocrnl onlcr -onocr -onlret ofill -ofdel nl0 cr1 tab0 bs1 vt0 ff1
-isig -icanon iexten -echo -echoe echok echonl -noflsh -xcase tostop -echoprt
-echoctl -echoke
です。
0778767
2005/08/28(日) 03:45:58void RS232C::Open()
{
fFileDescriptor = open(fDeviceName.c_str(), O_RDWR | O_NOCTTY | O_NDELAY);
fcntl(fFileDescriptor, F_SETFL, 0);
SetTermios(fOptions);
}
0779デフォルトの名無しさん
2005/08/28(日) 05:14:30特殊文字の設定がでたらめだな。
0780デフォルトの名無しさん
2005/08/28(日) 06:40:16if(0<size && size <=100){でいいの?
0781780
2005/08/28(日) 06:40:500782デフォルトの名無しさん
2005/08/28(日) 10:22:27なんかぐちゃぐちゃだな。cfmakeraw で raw モードにしてみれ。
0783767
2005/08/28(日) 12:17:58>>773の
fOptions = tmp;
の後ろに
cfmakeraw(&fOptions);
を追加しました。その状態で、
>>776を打つと、
speed 115200 baud; rows 0; columns 0; line = 180;
intr = M; quit = M-q; erase = M-~; kill = M-^¥; eof = r; eol = I; eol2 = ^M;
start = L; stop = M-q; susp = M-~; rprnt = L; werase = ^C; lnext = M-<;
flush = M-^]; min = 0; time = 10;
-parenb -parodd cs8 hupcl -cstopb cread clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl -ixon
-ixoff -iuclc -ixany -imaxbel
-opost -olcuc ocrnl onlcr -onocr -onlret ofill -ofdel nl0 cr1 tab0 bs1 vt0 ff1
-isig -icanon -iexten -echo -echoe echok -echonl -noflsh -xcase tostop -echoprt
-echoctl -echoke
となります。まだ実行速度は変わりません。
0784デフォルトの名無しさん
2005/08/28(日) 15:20:55だめか。
というかどうやって計測してる?単にreadがブロックしてるだけじゃないよな。
それでも遅いなら、linuxのデバドラあたりの問題な気がする。つづきは犬板かなぁ。
0785デフォルトの名無しさん
2005/08/28(日) 18:00:16>単にreadがブロックしてるだけじゃないよな。
open()でO_NDELAYしてるみたいだけど..
0786デフォルトの名無しさん
2005/08/28(日) 18:44:12そういうものだと思ってあきらめた方がいいかもしれない。
遅いだけならともかく、負荷をかけるとデータ取りこぼして使いものにならん。
0787デフォルトの名無しさん
2005/08/28(日) 19:20:59メジャーなカーネルハカーは、もはや2.4系など弄って無い
0788デフォルトの名無しさん
2005/08/29(月) 01:48:240789デフォルトの名無しさん
2005/08/29(月) 02:22:06問題が切り分けられたりするんではないだろうか。
0790デフォルトの名無しさん
2005/08/29(月) 13:46:47めんどくさいなら最初からやるな
0791デフォルトの名無しさん
2005/08/29(月) 14:31:400792767
2005/08/29(月) 15:02:57>>786-787
uname -rの結果は、
2.6.5-1.358smp
です。FC 2を使っています。
>>784
>readがブロックしてる
これはどういう意味でしょうか。
0793デフォルトの名無しさん
2005/08/29(月) 19:42:420794デフォルトの名無しさん
2005/08/30(火) 13:38:350795デフォルトの名無しさん
2005/09/01(木) 12:52:130796デフォルトの名無しさん
2005/09/01(木) 13:02:560797デフォルトの名無しさん
2005/09/01(木) 13:51:320798デフォルトの名無しさん
2005/09/01(木) 21:11:530799デフォルトの名無しさん
2005/09/02(金) 02:14:040800デフォルトの名無しさん
2005/09/02(金) 08:04:200801デフォルトの名無しさん
2005/09/02(金) 16:30:20httpd とかさぁ。
0802デフォルトの名無しさん
2005/09/02(金) 16:33:09プロセスって実行ファイルに結びついてるもんなの?
0803デフォルトの名無しさん
2005/09/02(金) 16:53:34forkしたプロセスを実行ファイルと結びついてると解釈できるかどうかによるな
0804デフォルトの名無しさん
2005/09/02(金) 16:55:540805デフォルトの名無しさん
2005/09/02(金) 17:02:440806デフォルトの名無しさん
2005/09/02(金) 20:43:590807デフォルトの名無しさん
2005/09/02(金) 20:48:400808デフォルトの名無しさん
2005/09/02(金) 23:44:58なんか怒られるときがあるけど
http://58.156.48.133/data/katsuaki/futarietti28/078.jpg
0809デフォルトの名無しさん
2005/09/03(土) 00:53:100810デフォルトの名無しさん
2005/09/03(土) 01:54:07Cygwinでなければunlinkによる削除はできる
上書きはEBUSYエラーでできない
0811デフォルトの名無しさん
2005/09/03(土) 01:57:590812デフォルトの名無しさん
2005/09/03(土) 03:36:31削除(unlink)はできる。unlinkしてもディレクトリからウファル実体への
参照が消えるだけで、実行中プロセスがウファルを参照しているので、
ウファル実体はまだウファルシステムからは消えない。
実行プロセスが終了して他にそのウファルを参照しているプロセスも
なくなったら、ウファル実体は参照数ゼロになるので消滅する。
cp等による上書き(単にオープンして書き込む)はウファル実体を
変更することになるので、エラーになる。
(OSによってはエラーにならないが実行中のプロセスに致命的な結果を生じる)
ウファルをインストールするときにcpでなくinstallコマンドを使うのは
一つにはこのためで、まずunlinkしてからウファルを作成するようになっている。
0813デフォルトの名無しさん
2005/09/03(土) 08:51:210814デフォルトの名無しさん
2005/09/03(土) 09:15:56白髪染めクリームらしい
0815デフォルトの名無しさん
2005/09/03(土) 09:39:09また、書き込みブロックされた際に、ロックが解放されるまで待つようにするにはどのようにするのがよいでしょうか?
0816デフォルトの名無しさん
2005/09/03(土) 09:40:290817デフォルトの名無しさん
2005/09/03(土) 09:50:47よりによってflockかよ…
lockf(3)かfctrl(2)を。
fctrlはF_GETLK, F_SETLK, F_SETLKW
0818デフォルトの名無しさん
2005/09/03(土) 09:54:060819デフォルトの名無しさん
2005/09/03(土) 10:22:140820デフォルトの名無しさん
2005/09/03(土) 10:31:280821デフォルトの名無しさん
2005/09/03(土) 12:00:020822デフォルトの名無しさん
2005/09/03(土) 13:49:04サンクスコ
実行中でのウファルの振る舞いが完全理解できたよ
0823デフォルトの名無しさん
2005/09/03(土) 14:18:220824デフォルトの名無しさん
2005/09/03(土) 14:24:28逆に(笑)がけっこうムカツクことに気づいた。
時代は変わったということだな。
0825デフォルトの名無しさん
2005/09/03(土) 14:36:50argv[0]なの?
0826デフォルトの名無しさん
2005/09/03(土) 14:38:43そうは言うが、ではしつこく残ってるflockの存在意義って何よ?
0827デフォルトの名無しさん
2005/09/03(土) 14:41:58backward compatiblityってやつじゃないの。
0828デフォルトの名無しさん
2005/09/03(土) 18:54:51flock(2)は*BSDで独自の発展をとげているし、(4.2BSDの頃から仕様が変わっている)
POSIX等で標準化されてないから、OSを超えたポータビリティはないと思ってくれ。
ロックしたファイルをclose(2)したり、dup(2)したり、
プロセスが終了したり、fork(2)したり、execve(2)したりした時の振る舞い。
FreeBSDのマニュアルは、POSIX fcntl(2)のロックの意味を、
stupidと言っているが、標準であることの意味は大きい。
問題とされているところを、回避するような実装を行えばいいだけだから。
http://www.freebsd.org/cgi/man.cgi?query=fcntl&apropos=0&sektion=0&manpath=FreeBSD+4.5-RELEASE&format=html
FreeBSDはflock(2)がefficientであると言っているから、
#ifdef FreeBSD
#error "....."
#endif
なソースでflock(2)するのは、いい場合もあるんじゃないかと思うが。
0829デフォルトの名無しさん
2005/09/04(日) 00:11:210830デフォルトの名無しさん
2005/09/04(日) 01:18:150831デフォルトの名無しさん
2005/09/04(日) 08:41:32両方使える人は好きなほう使えばいいじゃん。ってことっしょ
0832デフォルトの名無しさん
2005/09/04(日) 11:20:290833デフォルトの名無しさん
2005/09/04(日) 12:20:240834デフォルトの名無しさん
2005/09/04(日) 19:57:150835デフォルトの名無しさん
2005/09/05(月) 10:53:20唯我独尊&孤立無援状態
0836デフォルトの名無しさん
2005/09/05(月) 15:07:320837デフォルトの名無しさん
2005/09/05(月) 15:56:290838デフォルトの名無しさん
2005/09/06(火) 07:00:57これを見てみたのですが、どれがnice値に相当するのでしょうか?よろしくお願いします。
0839デフォルトの名無しさん
2005/09/06(火) 07:30:26ググったらgetpriorityが見つかったけど違う?
0840デフォルトの名無しさん
2005/09/06(火) 08:35:10>>839は正しい。
0841デフォルトの名無しさん
2005/09/06(火) 18:36:04普通Windowsアプリケーションは、
Win32APIやDirectXのAPI郡などのMSが提供している関数を用いて作ってるのですが。
主にFedoraCoreやVineではこれらと同じような、もしくは頑張れば表現可能なAPI郡は存在するのでしょうか?
0842デフォルトの名無しさん
2005/09/06(火) 18:39:24Gtk+なるSDKがあるのですね、、
ちと勉強してきます
0843デフォルトの名無しさん
2005/09/06(火) 20:23:35WindowsっていうOSは、ウィンドウシステムも含んでリリースされています。
でも、一般的にUNIX系のOSは、ウィンドウシステムは含まれていません。
使いたい人が使いたいウィンドウシステムを使えばいいという考え方です。
(とは言え、X以外のウィンドウシステムってあんまり聞きませんが。)
ゆえに、ウィンドウシステムに対するAPIも1つではなく、さまざまな種類が
存在しています。(XというウィンドウシステムのAPI:ツールキットも様々な
種類があります。)
Gtk+もその一つにすぎません。
と言うことを念頭においておかないと、せっかく覚えたのに、数年後には
だれもつかっていない過去の遺物となってしまうかも知れません。
0844デフォルトの名無しさん
2005/09/06(火) 20:37:07Xtを使うのが普通
0845デフォルトの名無しさん
2005/09/06(火) 21:03:19> Win32APIやDirectXのAPI群
に相当するものではないけど。
0846デフォルトの名無しさん
2005/09/06(火) 21:21:33X自体がセキュリティもアクセラレータもなんもない地雷環境なので、
世にある窓マネージャは例外なくスナップショットの画像で誤魔化してます。
Gtk+もその1つで、実際の動作を見るとその醜さに驚かされるでしょう。
>>844
UNIXでGUIなんてダメだよ
Windowsを使うのが普通
0847デフォルトの名無しさん
2005/09/06(火) 21:27:530848デフォルトの名無しさん
2005/09/06(火) 21:44:100849デフォルトの名無しさん
2005/09/06(火) 21:57:05DRI じゃダメなのか?
0850デフォルトの名無しさん
2005/09/06(火) 21:58:29> X自体がセキュリティもアクセラレータもなんもない地雷環境なので、
無知蒙昧だな。
0851デフォルトの名無しさん
2005/09/06(火) 22:25:240852デフォルトの名無しさん
2005/09/06(火) 22:39:55アクセラレーションなら MIT SHM拡張があるし
0853デフォルトの名無しさん
2005/09/06(火) 22:46:510854デフォルトの名無しさん
2005/09/06(火) 22:53:13acceleration つったら普通は h/w acceleration じゃない?
↓ここが参考になるかも。
Xの描画が一番速いグラフィックカードってどれ?
http://pc8.2ch.net/test/read.cgi/linux/1005144431/
0855デフォルトの名無しさん
2005/09/07(水) 01:54:38C言語で組むのとどう違うのか、本質が理解できません。
目の覚めるようなご教授をお願いします。
なるほどー、というようなやつで。
0856デフォルトの名無しさん
2005/09/07(水) 02:00:030857デフォルトの名無しさん
2005/09/07(水) 02:09:51おまえには無理
0858デフォルトの名無しさん
2005/09/07(水) 02:12:340859デフォルトの名無しさん
2005/09/07(水) 02:15:090860デフォルトの名無しさん
2005/09/07(水) 02:41:17自分の居場所を説明出来ないヤツに道案内するのはしんどいからパスだな。
0861マイク ◆yrBrqfF1Ew
2005/09/07(水) 02:41:37遅いけど変更しやすいソフトウェアがあるはずだが
そのソフトウェアに合わせてハードを選ぶのは本末転倒だよな?
0862デフォルトの名無しさん
2005/09/07(水) 03:38:01違わないと何か困るの?
>>861
日本語不自由なんだね。ちゃんと勉強しないと高校行けないよ。
0863デフォルトの名無しさん
2005/09/07(水) 03:46:250864デフォルトの名無しさん
2005/09/07(水) 03:50:350865デフォルトの名無しさん
2005/09/07(水) 03:54:310866デフォルトの名無しさん
2005/09/07(水) 04:06:250867デフォルトの名無しさん
2005/09/07(水) 04:16:290868マイク ◆yrBrqfF1Ew
2005/09/07(水) 04:26:500869デフォルトの名無しさん
2005/09/07(水) 04:27:550870デフォルトの名無しさん
2005/09/07(水) 04:28:260871デフォルトの名無しさん
2005/09/07(水) 04:51:030872デフォルトの名無しさん
2005/09/07(水) 04:58:20なければ、エラーか、新規作成かは第二引数で選ぶことができる。
0873デフォルトの名無しさん
2005/09/07(水) 11:46:11よくしらんが、GUIならコピー&ペーストという手がある。
0874デフォルトの名無しさん
2005/09/07(水) 12:07:11どんなプログラム書けばいいんですか?
0875デフォルトの名無しさん
2005/09/07(水) 12:11:53それと同じようにすればいい
0876デフォルトの名無しさん
2005/09/07(水) 12:17:53詳しく
0877デフォルトの名無しさん
2005/09/07(水) 12:38:000878デフォルトの名無しさん
2005/09/07(水) 13:12:09いや、>>872だから。
>>867は、>>870のpopen(3)。
0879デフォルトの名無しさん
2005/09/07(水) 13:44:51emacs使ってるキモイ奴は困らないだろうけど
fdcloneの入ってない環境はクソ
0880デフォルトの名無しさん
2005/09/07(水) 13:45:57ワラタ
0881デフォルトの名無しさん
2005/09/07(水) 13:47:030882デフォルトの名無しさん
2005/09/07(水) 13:52:20おまえ、タイプ量考えろよ
おれはファイル選択はカーソルキー以外使いたくないの
0883デフォルトの名無しさん
2005/09/07(水) 13:57:23GUIはクソ
コピペもまともにできないXサーバーなんて入れるかっつーの
おれはteratermで十分
けどCUIのファイラーがfdcloneしかないのはマジでクソ
0884デフォルトの名無しさん
2005/09/07(水) 13:58:47ファイラって便利?
0885デフォルトの名無しさん
2005/09/07(水) 13:59:03正規表現つかえるツールもいっぱいあるやん。
肌に合わないなら無理してUnix使うなよ(笑)
0886デフォルトの名無しさん
2005/09/07(水) 14:02:00今でも8インチ片単に入れて持ち歩いている。
0887デフォルトの名無しさん
2005/09/07(水) 14:03:390888デフォルトの名無しさん
2005/09/07(水) 14:06:090889デフォルトの名無しさん
2005/09/07(水) 18:42:10指の本数足りない人は大変だね
0890デフォルトの名無しさん
2005/09/07(水) 21:23:500891デフォルトの名無しさん
2005/09/07(水) 21:35:07大杉。
0892デフォルトの名無しさん
2005/09/08(木) 11:18:540893デフォルトの名無しさん
2005/09/08(木) 11:52:010894デフォルトの名無しさん
2005/09/08(木) 11:55:49・画面のイメージが欲しい。
・画面全体を文字列として取得したい。
・vimの出力するコントロールシーケンスを取得した。
どれ?
0895デフォルトの名無しさん
2005/09/08(木) 12:17:45二番目か三番目です。そのへんも良くわからないもので…
0896デフォルトの名無しさん
2005/09/08(木) 12:20:00> ・画面全体を文字列として取得したい。
端末エミュレータでcut&paste
> ・vimの出力するコントロールシーケンスを取得した。
script(1)
0897デフォルトの名無しさん
2005/09/08(木) 12:21:02自分の書いた画面を知りたいと言うこと?
curses(3)を使って画面を書けばあ?
0898デフォルトの名無しさん
2005/09/08(木) 12:24:47おお、ありがとうございます!scriptを使ってみます。
0899892=895=898
2005/09/08(木) 12:27:09vramって何か分かりません…
>>897
自分の書いたプログラムから他のプログラムを呼びだして、その画面出力が得られないかと思ったのですが…。
0900デフォルトの名無しさん
2005/09/08(木) 12:30:59scriptはそういう使い方じゃないなあ。
cursesの方が良さそう。>>687>>683
0902デフォルトの名無しさん
2005/09/08(木) 13:13:26騙されるなキミが調べるべきものは pty だ。
0903デフォルトの名無しさん
2005/09/10(土) 12:28:450904デフォルトの名無しさん
2005/09/10(土) 12:31:030905デフォルトの名無しさん
2005/09/10(土) 12:57:56ttp://www.adl.nii.ac.jp/~moro/unix-programmer/faq-j_2.html#SEC18
0906デフォルトの名無しさん
2005/09/10(土) 14:35:120907デフォルトの名無しさん
2005/09/10(土) 14:42:550908デフォルトの名無しさん
2005/09/10(土) 14:51:26>>3
0909名無しさん@そうだ選挙に行こう
2005/09/10(土) 21:54:37書籍じゃないんだから訳が気に入らないなら自分も訳せば?
0910名無しさん@そうだ選挙に行こう
2005/09/10(土) 22:45:090911名無しさん
2005/09/11(日) 08:40:39vim abc.txt |tee vim.log
でどう?
0912911
2005/09/11(日) 09:01:00vim -c ":1,25w! onepage.txt" orig.txt
0913名無しさん@そうだ選挙に行こう
2005/09/11(日) 19:05:010914名無しさん@そうだ選挙に行こう
2005/09/11(日) 19:10:030915デフォルトの名無しさん
2005/09/12(月) 09:54:370916デフォルトの名無しさん
2005/09/12(月) 09:58:270917デフォルトの名無しさん
2005/09/12(月) 10:15:590918デフォルトの名無しさん
2005/09/12(月) 14:10:34(一応)社会人の俺もあてはまってしまうではないか。
0919デフォルトの名無しさん
2005/09/12(月) 14:18:35NEETってこと?
0920デフォルトの名無しさん
2005/09/12(月) 15:04:12スレ違い
0921デフォルトの名無しさん
2005/09/12(月) 15:36:29板違い
0922名無しさん
2005/09/16(金) 19:59:21だけど、
amazon.com から直接買うのと
amazon.co.jp から買うのとどっちが安い?
0923デフォルトの名無しさん
2005/09/16(金) 20:21:590924名無しさん
2005/09/16(金) 20:52:18amazon.com(古本) + 送料9.79ドル + 日本の消費税 = 7848円 (3週間以上かかる?)
amazon.co.jp(新本) + 送料無料 + (税込み) = 8734円 (数日)
0925デフォルトの名無しさん
2005/09/17(土) 08:41:080926名無しさん
2005/09/17(土) 13:26:080927デフォルトの名無しさん
2005/09/17(土) 13:46:490928デフォルトの名無しさん
2005/09/17(土) 18:00:490929デフォルトの名無しさん
2005/09/17(土) 18:03:520930名無しさん
2005/09/17(土) 20:19:39第1版 著者Stevens(1999年に死去) 邦訳 『詳解UNIXプログラミング』
第2版 Pagoによる改定版(2005年) (いずれ第2版の邦訳も出るだろう)
Linuxについての記述を読んでみたいので買うか。
0931デフォルトの名無しさん
2005/09/17(土) 23:59:20http://www.amazon.co.jp/exec/obidos/ASIN/0132017997/
http://www.amazon.co.jp/exec/obidos/ASIN/0596005652/
http://www.amazon.co.jp/exec/obidos/ASIN/0130313580/
http://www.amazon.co.jp/exec/obidos/ASIN/0136386776/
0932デフォルトの名無しさん
2005/09/18(日) 08:01:52http://www.mckusick.com/FreeBSDbook.html
具体的なんじゃなくて、概論だったらこっちがお勧め。
http://www.amazon.com/exec/obidos/tg/detail/-/0201741962/
タンネンバウムはMINIX(とamoeba)で有名になったけれど、著作は激しくイマイチ。
0933デフォルトの名無しさん
2005/09/18(日) 12:16:16LinuxかOpenSolarisだろ
0934デフォルトの名無しさん
2005/09/18(日) 12:50:49Solarisインターナル
http://www.amazon.co.jp/exec/obidos/ASIN/4894714582/
0935デフォルトの名無しさん
2005/09/18(日) 12:52:00基本的な技法はそれほど変わらないよ。
>>931のような人なら。
Linuxはいい本あるかね?
構造がころころ変わるしなあ。
0936デフォルトの名無しさん
2005/09/18(日) 15:34:39おれは、無理。
0937名無しさん
2005/09/18(日) 21:25:270938デフォルトの名無しさん
2005/09/18(日) 21:28:200939デフォルトの名無しさん
2005/09/18(日) 23:36:060940デフォルトの名無しさん
2005/09/19(月) 11:43:210941デフォルトの名無しさん
2005/09/19(月) 13:04:580942デフォルトの名無しさん
2005/09/19(月) 14:03:15こういうのって御当地カップラーメンのバージョンいくつ覚えてるか
とかいうのと大差無いどうでもいい知識なんだよな。面白いけど。
0943デフォルトの名無しさん
2005/09/19(月) 15:19:54openlog("test", LOG_NDELAY|LOG_PID, 0, LOG_LOCAL2);
のようにオープンして出力しているログファイルを、SIGHUP受信時に
再オープンしたいのですが、
signal(SIGHUP,sighup_handler);
...
void sighup_handler(int signal)
{
closelog();
openlog("test", LOG_NDELAY|LOG_PID, 0, LOG_LOCAL2);
}
では、処理以降にログが記録されなくなってしまいました。
GoogleやKodersなどで調べてみてもこれというものが見つからなかったのですが
正しい処理の書き方はどのようにすればいいのでしょうか?
0944943
2005/09/19(月) 15:26:41最終的にログローテートを正常に行いたいわけですが、/etc/syslog.conf に
local2.*/var/log/test.log
とした上で、/etc/logrotate.d/syslog に
/var/log/test.log {
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
endscript
}
と書いたのですが、ローテート後のログファイルには何も出力されませんでした。
それでプログラム側でもSIGHUPで何かしないとだめなのかと思ったのですが。。。
0945デフォルトの名無しさん
2005/09/19(月) 15:48:34やり方はだいたいOKだから
closelogとopenlogを疑うしかないな
openlog内のファイルの開き方が特に心配だ
0946デフォルトの名無しさん
2005/09/19(月) 16:00:270947943
2005/09/19(月) 16:02:03openlog()で開いてsyslog()で出力しているだけなので、openlog()の処理が
実際どのように行われているか分かりません…。渡している引数がおかしかったり
するのでしょうか?
それと環境を書いていませんでした。RedHat9(gcc3.2.2, glibc2.3.2)です。
単純なサーバプログラムの練習で書いています。
0948943
2005/09/19(月) 16:24:38ありがとうございます。
試してみましたが、ファイル名を変更しても以前のログファイルにそのまま
追記されてしまいました。
根本的な質問で恐縮ですが、syslogにログを出力する場合にログローテートに
必要なこととは何なのでしょうか?
・アプリケーション側でHUPシグナル受信時などにログファイルを再オープン
・syslogdを再起動
↑上記は二つとも必要でしょうか?
0949943
2005/09/19(月) 16:26:42間違っていました。訂正いたします。
誤: openlog("test", LOG_NDELAY|LOG_PID, 0, LOG_LOCAL2);
正: openlog("test", LOG_NDELAY|LOG_PID, LOG_LOCAL2);
0950デフォルトの名無しさん
2005/09/19(月) 16:51:07何もする必要ないだろ。
syslogdが腐ってるんじゃないの?
それになんでわざわざkillのエラー出力を捨ててるのさ。
0951943
2005/09/19(月) 18:00:21syslogに出力している場合、syslogdを再起動(またはHUP)するだけで
良いということですね。ローテート後にログが出力されなくなるのは別の
原因かもしれませんので、もう少し調べてみます。
killのエラー出力を捨てているのは、/etc/logrotate.d/syslog の他の
デフォルト記述がそうなっていたので流用していました。
0952デフォルトの名無しさん
2005/09/19(月) 18:06:38SIGHUP送ればどうとかそんなことは環境依存。少なくとも最近の
OSに同梱のsyslogdなら、ローテートするためのコマンドが一緒に
ついてくるか、ローテートする方法がマニュアルに書いてある
はずだが。
どっちも無いとしたらそのロクでもない環境を恨め。
0953デフォルトの名無しさん
2005/09/19(月) 18:14:01ログローテイトはsyslogd側の仕事。
殆んどの場合、SIGHUPでsyslogdがログファイルをreopenする。
ただし、新しいファイルはtouch(1)などで作成してやる必要があることが多い。
>>945>>946は、かなり無知だから、知らないことは黙っているように。
0954デフォルトの名無しさん
2005/09/19(月) 18:37:40か?
下のプログラムを実行してもシグナルハンドラが呼ばれず、一瞬で
終了してしまいます。linuxとsolarisでテストしてみました。
#include <stdio.h>
#include <unistd.h>
#include <signal.h>
void f(int a)
{
printf("sigpipe\n");
}
int main(int argc, char **argv)
{
int fds[2];
pipe(fds);
close(fds[0]);
write(fds[1], "hoge", 4);
signal(SIGPIPE, f);
sleep(100);
return 0;
}
0955デフォルトの名無しさん
2005/09/19(月) 18:44:24syslogがsyslogdにログを送る関数なんて決まってないんだが
LinuxとBSDしか触ってないとこういう人間になるんだろうか
0956デフォルトの名無しさん
2005/09/19(月) 19:00:45ちょっと誤解を招きそうな書き方じゃないか?
syslogdはHUPを受けてクチをパクパクするだけで
ログローテート自体はnewsyslog(ないし類似品)の仕事。
どのみちsyslogを吐くプログラムの知ったことではないんだが。
>>954
KILLとSTOP以外は捕捉できる筈だが。他のttyでkillを使ってSIGPIPEを
送ってみたか?
言っておくが、writeより後に設定したシグナルハンドラが時空を遡って
機能するなんてことはないぞ普通。
>>955
質問からsyslogdが存在するシステムなのは明らかなんだから別に構わないだろ。
この質問でimplementation-defined logging facilityがsyslogd以外であることを
想定する奴はいないだろ。
0958デフォルトの名無しさん
2005/09/19(月) 19:53:54$ cat tt.c
#include <stdio.h>
#include <unistd.h>
#include <signal.h>
void f(int a)
{
fprintf(stderr, "sigpipe\n");
fflush(stderr);
}
int main(int argc, char **argv)
{
signal(SIGPIPE, f);
for (;;) {
printf("This is a test\n");
fflush(stdout);
}
return 0;
}
$ ./a.out | echo
sigpipe
sigpipe
sigpipe
0959デフォルトの名無しさん
2005/09/20(火) 17:39:45小さいプログラムのソースと挙動から都合のいい解釈してます
でダメだししてほしいんですけども
intforked = -1;
int main() {
fork();
}
int fork() {
if (forked == -1)
forked = 0;
return (forked = main());
} else {
return (forked);
}
}
この自作forkはforkっぽいですか?全然話になりません?
0960デフォルトの名無しさん
2005/09/20(火) 17:44:22なにがやりたいの?
0961デフォルトの名無しさん
2005/09/20(火) 18:11:49pthreadあたりと混同してるね
0962デフォルトの名無しさん
2005/09/20(火) 18:16:530963デフォルトの名無しさん
2005/09/20(火) 18:22:44やりたい事はとりあえず理解したいです
あれであってます?forkがpidだけ違う複製(子)を生成します。て各所で書かれてますが
forkは己を呼ぶって事ですよね?どこを呼ぶんんでしょうか、もーまるごと疑問ですよ
根本が間違ってると思うんで質問しづらいんですけども
switch(fork()) {
case 0:
exec();
}
こんなコードとか見かけるんですけど
forkしてからexec()呼んだりするのは
何のメリットがあるんでしょうか
普通にexec()呼ぶコード見かけません
0964デフォルトの名無しさん
2005/09/20(火) 18:51:25exec() は現在のプロセスに別のプログラムをロードして実行する。
fork() してから exec() すれば、現在のプロセスはそのまま実行しつつ、
新しいプロセスで別のプログラムを実行することができる。
fork() しないで exec() すれば、現在のプログラムは別のプログラムに置き換わってしまう。
0965デフォルトの名無しさん
2005/09/20(火) 18:51:52そのコードだと、fork()でプロセスがコピーされた後は
親プロセスも子プロセスもswitch()で真偽の評価を行う。
fork()の返り値は親と子で異なるから
そのswitchによって親と子の動作が分岐する。
「普通にexec()呼ぶ」と1つのプロセスが他のプログラムに化けるだけ。
それに対してfork()してexec()呼ぶとマルチプロセスになる。
0966965
2005/09/20(火) 18:57:13>親プロセスも子プロセスもswitch()で真偽の評価を行う。
ミスった。
「親プロセスも子プロセスもswitch()で値の評価を行う」が正しい。
0967デフォルトの名無しさん
2005/09/20(火) 19:54:03fork()した途端にパラレルワールドができると思え。
そのパラレルワールドは元の世界とまったく同じだが、
ひとつだけ、fork() の戻り値と、親の pid だけが違う。
0968963
2005/09/20(火) 20:21:53すっごい、今その事を頭にいれて読み直しました。で
親はforkの戻り値がおおー、
子のプロセスが再度同じfork通って、おおーー
これ子もwait通っていいの?おおーすげーーーー
とか自己完結の連発です。上手く言えません
ぐっときましたありがとう。更に深めにのめり込んで見ます
これ2重人格だ
0969デフォルトの名無しさん
2005/09/20(火) 20:27:510970デフォルトの名無しさん
2005/09/20(火) 20:34:43> 子のプロセスが再度同じfork通って、おおーー
メモリの中身も全く同じ分身(子プロセス)が出来て、
そいつはfork()を返るところから始まるんですよ。
ただpidや帰り値が違うと。
0971デフォルトの名無しさん
2005/09/21(水) 04:54:25なんかもっと上手い方法は無かったんかね。
0972デフォルトの名無しさん
2005/09/21(水) 04:58:57*BSDのrfork()もpretty!
0973デフォルトの名無しさん
2005/09/21(水) 12:16:54Windows の CreateProcess みたいな一見すっきりしたAPIだと、
新プロセスに情報を渡すのが面倒。
0974デフォルトの名無しさん
2005/09/21(水) 13:43:43すっきりしてるかなあ?
まあWin32のプロセスは親子の結び付きが弱いような気はしますな。
0975デフォルトの名無しさん
2005/09/21(水) 14:08:17・コンセプト単純
・関数仕様複雑
・機能貧弱
POSIX fork()は、
・コンセプト抽象的
・関数仕様超単純
・(モデルが)高機能
fork()に戸惑う人は、抽象的なコンセプトにやられていると思われ
fork/joinモデルよりも、分身が出来るという概念に。
0976デフォルトの名無しさん
2005/09/21(水) 17:12:14してるんだけど、いくらgetopt()してもoptindをprintコマンド
で見るといつも1になってるんです。
コード中でprintf()してoptindを見ると、ちゃんと数字が上がる
んだけど。
で、optindのポインタを調べてみたら、gdbでprintしたやつと
コード中でprintf()したやつとは違った物になってた。
どうやったらgdbで正しいoptindを見ることが出来ますでしょうか。
0977デフォルトの名無しさん
2005/09/21(水) 20:04:01最適化外してコンパイルしてみればあ。
0978デフォルトの名無しさん
2005/09/21(水) 20:17:420979デフォルトの名無しさん
2005/09/21(水) 20:19:040980デフォルトの名無しさん
2005/09/21(水) 21:13:300981デフォルトの名無しさん
2005/09/21(水) 21:20:42逆だろ? callerが、calleeによって変えられたメモリじゃなくて、
registerのみを見てるんだろ?
(gdb) printf *(&optind)
でどうかな?
0982976
2005/09/22(木) 10:15:47CPUに弱いのでcallerとかcalleeとか全くわからいのですが、
>>981さんの言う
(gdb) print *(&optind)
でも結局同じでした。
皆さんの環境ではどうなんでしょうか。ちゃんと正しい optind
が gdb の print で見れているのでしょうか。
あと、犬板に相応のスレが無いのでここに来た次第です。
0983デフォルトの名無しさん
2005/09/22(木) 10:39:38#include <stdio.h>
#include <unistd.h>
extern int optind;
int main(int argc, char **argv)
{
int opt;
while ((opt = getopt(argc, argv, "abc")) >= 0) {
printf("opt=%c optind=%d &optind=%08x\n", opt, optind, (int)&optind);
}
}
0984デフォルトの名無しさん
2005/09/22(木) 10:40:20(gdb) break 9
Breakpoint 1 at 0x8048414: file optind.c, line 9.
(gdb) run -a -b
Starting program: /home/matsui/a.out -a -b
Breakpoint 1, main (argc=3, argv=0xbfdd1884) at optind.c:9
9 while ((opt = getopt(argc, argv, "abc")) >= 0) {
(gdb) s
10 printf("opt=%c optind=%d &optind=%08x\n", opt, optind, (int)&optind);
(gdb) s
opt=a optind=2 &optind=080496b8
9 while ((opt = getopt(argc, argv, "abc")) >= 0) {
(gdb) print optind
$1 = 1
(gdb) print &optind
$2 = (int *) 0xb7fb07d8
どうなってんのかね?
0985>>981
2005/09/22(木) 11:03:22すると、正しい値だね。
0986>>981
2005/09/22(木) 11:07:49にも報告されてる。
6.0, 6.3でも駄目。
0987デフォルトの名無しさん
2005/09/22(木) 15:34:09>GNUが低品質なのはconfigureと無関係ではないだろう。
>GNUが低品質なのはconfigureと無関係ではないだろう。
>GNUが低品質なのはconfigureと無関係ではないだろう。
0988デフォルトの名無しさん
2005/09/22(木) 15:42:270989デフォルトの名無しさん
2005/09/22(木) 15:47:220990デフォルトの名無しさん
2005/09/22(木) 15:48:140991デフォルトの名無しさん
2005/09/22(木) 15:50:440992デフォルトの名無しさん
2005/09/22(木) 15:52:090993デフォルトの名無しさん
2005/09/22(木) 15:53:360994デフォルトの名無しさん
2005/09/22(木) 15:56:020995デフォルトの名無しさん
2005/09/22(木) 15:57:57同意!
RMSは反社会的な共産主義者!
0996デフォルトの名無しさん
2005/09/22(木) 15:58:34このままでは国内産業が壊滅してしまう。
0997デフォルトの名無しさん
2005/09/22(木) 16:00:13こういうソース公開の押し付けは、いらないんじゃないかって。
0998デフォルトの名無しさん
2005/09/22(木) 16:01:27こいつのせい
0999デフォルトの名無しさん
2005/09/22(木) 16:02:19それから、gdbで、optind = 100としても、メモリ側は書き変わってないけれど、
(gdb) print optind
すると、100が出力される。
やはり>>981ということで、メモリをフェッチせずにレジスタを見ているようだ。
1000デフォルトの名無しさん
2005/09/22(木) 16:02:19http://pc8.2ch.net/test/read.cgi/tech/1114223450/
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。