[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 05/09 09:49 / Filesize : 207 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん mailto:sage [2005/05/24(火) 13:14:50 ]
UNIXおよびUNIX clone環境一般のプログラミングに関する質問スレッド

前スレ
Part5 pc8.2ch.net/test/read.cgi/tech/1105723117/
Part4 pc5.2ch.net/test/read.cgi/tech/1095843584/
Part3 pc5.2ch.net/test/read.cgi/tech/1085930894/
Part2 pc5.2ch.net/test/read.cgi/tech/1055110889/
Part1 pc2.2ch.net/tech/kako/992/992057422.html

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

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


関連板
pc8.2ch.net/unix/
pc8.2ch.net/linux/

488 名前:デフォルトの名無しさん mailto:sage [2005/07/09(土) 19:11:28 ]
>>487
シリアルポートは生きてるかも知れないけどな

489 名前:デフォルトの名無しさん mailto:sage [2005/07/09(土) 19:29:12 ]
非常時は巫女/ぐにょ Linux で Emacs

490 名前:デフォルトの名無しさん mailto:sage [2005/07/09(土) 20:20:51 ]
非常時にCDブートなんかしてたら漏らしちゃうよ。

491 名前:デフォルトの名無しさん mailto:sage [2005/07/09(土) 21:36:13 ]
じゃUSBブートでおながいします。


492 名前:デフォルトの名無しさん [2005/07/10(日) 01:32:30 ]
晒しあげてやる。

493 名前:デフォルトの名無しさん mailto:sage [2005/07/10(日) 01:46:43 ]
Xlibを使ったコードを書いていて実行してみたら
XCreateFontSetのところで以下の様なエラーが出ました
これはどのような意味なのでしょうか?


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

494 名前:デフォルトの名無しさん mailto:sage [2005/07/10(日) 01:51:11 ]
>>493
X_CreateWindow()のパラメータがあってなくてBadValueエラーがでたんだろ。
そのXCreateFontSet()の呼び出しをコメントにして同じエラーがでるなら
それ以前に呼んでる関数を疑え。

495 名前:デフォルトの名無しさん mailto:sage [2005/07/10(日) 02:20:34 ]
あるいはデバッグ時には、main()の先頭かあるいは
デバッガを使って実行前に
_Xdebug = 1;
をしておくという手もある。(遅くなるが)
こうすると、毎回XSync()するのと同じ効果があるので、
パラメータ間違いがあった場合すぐにエラーが起きる。
これって昔は常識だったけど、今は lost technology
に近い?


496 名前:デフォルトの名無しさん mailto:sage [2005/07/10(日) 02:24:56 ]
そもそも生の Xlib 自体が lost technology に近い



497 名前:デフォルトの名無しさん mailto:sage [2005/07/10(日) 03:16:21 ]
今更X Windowを何かのシステムのインタフェースに
使おうという発想がlost ideaだ

498 名前:デフォルトの名無しさん mailto:sage [2005/07/10(日) 10:20:30 ]
>>400は本当に生のXlibでいいのか?
Motif, gtkとかフレームワークもいろいろあるが…
www.free-soft.org/guitool/

499 名前:デフォルトの名無しさん mailto:sage [2005/07/10(日) 10:30:28 ]
Qt

500 名前:デフォルトの名無しさん mailto:sage [2005/07/10(日) 11:24:14 ]
QtはGPLだから用途によってはまずいぞ。
LGPLなgtkの方がまだ安全。

501 名前:デフォルトの名無しさん mailto:sage [2005/07/10(日) 11:28:11 ]
え?Qtはライセンス料払えば非GPLでもOKやん。

502 名前:デフォルトの名無しさん mailto:sage [2005/07/10(日) 11:26:37 ]
Windowプログラミングは初めてなのですが、何か良い入門書があったら教えてください

503 名前:デフォルトの名無しさん mailto:sage [2005/07/10(日) 11:29:46 ]
金を払ってQtを使う阿呆は(ry

504 名前:デフォルトの名無しさん mailto:sage [2005/07/10(日) 11:56:34 ]
>>502
釣りでないならスレ違い。

505 名前:デフォルトの名無しさん mailto:sage [2005/07/10(日) 11:57:48 ]
マックプログラミングは初めてなのですが、何か良い入門書があったら教えてください

506 名前:デフォルトの名無しさん mailto:sage [2005/07/10(日) 12:15:56 ]
面白くないよ



507 名前:デフォルトの名無しさん mailto:sage [2005/07/10(日) 12:30:47 ]
>>504
書籍の質問はダメですか?

508 名前:502 mailto:sage [2005/07/10(日) 12:58:29 ]
わかりました別スレに行きます。さようなら

509 名前:502 mailto:sage [2005/07/10(日) 12:58:59 ]
わかりました別スレに行きます。さようなら

510 名前:502 mailto:sage [2005/07/10(日) 13:02:04 ]
わかりました別スレに行きます。さようなら

511 名前:502 mailto:sage [2005/07/10(日) 13:00:12 ]
わかりました別スレに行きます。さようなら

512 名前:493 mailto:sage [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);
}



513 名前:デフォルトの名無しさん mailto:sage [2005/07/10(日) 16:44:19 ]
それ実行してみたが、特にエラー出ないんだけど?

514 名前:493 mailto:sage [2005/07/10(日) 16:54:34 ]
はい、わたしも上記のだけですとエラーはでないです
上記のようなコードを書く際になにか注意事項のようなものはありませんでしょうか?

515 名前:デフォルトの名無しさん mailto:sage [2005/07/10(日) 16:59:04 ]
回答不能な質問するな

516 名前:デフォルトの名無しさん mailto:sage [2005/07/10(日) 17:00:43 ]
解答できないのなら書き込むな



517 名前:デフォルトの名無しさん mailto:sage [2005/07/10(日) 17:12:01 ]
真性のアホか。
そういう時はエラーが確実に発生する簡略化したコードを貼るんだ


518 名前:デフォルトの名無しさん mailto:sage [2005/07/10(日) 17:14:06 ]
>>494-496 を 150 万回くらい読みなおすこと。

通常は Xlib の関数を呼んだからといって
その時点でサーバにリクエストが投げられるのではない
(効率のためバファリングされる)
ということを頭に入れておくこと。

>>516
馬鹿は黙っていること。

519 名前:デフォルトの名無しさん mailto:sage [2005/07/10(日) 17:23:42 ]
おまえらちんこ生えてるくせになまいきいってんじゃねーよ

520 名前:デフォルトの名無しさん mailto:sage [2005/07/10(日) 19:51:47 ]
>>519
金玉も無いくせに(以下同文)

521 名前:デフォルトの名無しさん [2005/07/10(日) 22:00:59 ]
とりあえず、
X protocolは非同期メッセージを使ったprotocolで、
Xlibはその非同期メッセージを直接扱うAPIであること、
を理解してください。


522 名前:デフォルトの名無しさん mailto:sage [2005/07/10(日) 22:01:23 ]
>>519 お友達になってください。おながいします。

523 名前:デフォルトの名無しさん mailto:sage [2005/07/10(日) 22:47:03 ]
>>516の尻の穴で我慢しる

524 名前:デフォルトの名無しさん [2005/07/11(月) 17:52:50 ]


525 名前:516 mailto:sage [2005/07/11(月) 17:58:37 ]
>>522
いれて、、、、、、、、、、、
ポッ



526 名前:デフォルトの名無しさん [2005/07/11(月) 19:05:03 ]
皆さんのお知恵をかりたいのですが

OS: Linux CentOS 4

自作アプリ内からの firefox 起動/終了について

アプリには、firefox起動メッセージとパラメータとしてURLがきます。
(URLはその都度変化する)

するとアプリは
1. スレッドをDETACHEDで生成
2. "1"のスレッドで system("firefox <URL>"); を行い firefox を起動
3. syste() が終了したら、
  メインスレッドにメッセージを送信して"1"のスレッド終了

としてます。




527 名前:526 [2005/07/11(月) 19:05:29 ]
続き

アプリには複数回メッセージがきます。
その都度上記処理を実行し、これにより複数のURLに対してそれぞれ
firefoxウィンドウ が開きます。


ここで質問です、
特定のURLへの firefoxウィンドウが閉じたというアクションを自アプリ内で
どうすれば知ることが出来るでしょうか?


当初、各子スレッドが system(3)でブロックすることを期待していたのです
が firefoxは、既に起動していると既存のfirefoxプロセスにて新URLへのウ
ィンドウを開くため system(3)がすぐに終了してしまいます。

よろしくお願いします。


528 名前:デフォルトの名無しさん mailto:sage [2005/07/11(月) 19:34:37 ]
>>527
firefoxが生きている間待ちつづけるスクリプトを書くとか

529 名前:デフォルトの名無しさん mailto:sage [2005/07/11(月) 19:41:24 ]
拡張とか書かないと無理じゃないかねぇ。

530 名前:527 [2005/07/11(月) 19:56:25 ]
>>528
ちょっとイメージがわきません。
詳しく教えていただけますか?


531 名前:デフォルトの名無しさん mailto:sage [2005/07/11(月) 19:56:32 ]
systemじゃなくて fork + exec じゃだめなんか?


532 名前:527 [2005/07/11(月) 20:12:31 ]
>>531

pid_t child;

if ((child = fork()) == 0) {
  execlp("firefox", "www.linux.or.jp/", (char*)0);
}

if (child < 0) {
  goto end;
}

waitpid(child, NULL, WNOHANG);

をやったのすが、指定したURL www.linux.or.jp/ が表示されず、
また waitpid もすぐ戻ってしまいました。

どうすればいいんだろう...


533 名前:デフォルトの名無しさん mailto:sage [2005/07/11(月) 20:24:35 ]
execlpの引数合ってる?

534 名前:デフォルトの名無しさん mailto:sage [2005/07/11(月) 20:26:19 ]
> firefoxは、既に起動していると既存のfirefoxプロセスにて新URLへのウ
> ィンドウを開くため

が真実ならば、fork() & exec()で実行しようが何の解決にもならんだろ
馬鹿馬鹿しい

535 名前:デフォルトの名無しさん mailto:sage [2005/07/11(月) 21:57:58 ]
ソース読めばぁ?

536 名前:デフォルトの名無しさん mailto:sage [2005/07/11(月) 22:37:12 ]
つーか、ソフトウェア板行ったら、
誰かがその目的に合った拡張を書いてくれると思う。



537 名前:526,527 [2005/07/12(火) 13:33:12 ]
dirtyな方法でしょうが、なんとか動かすことができました。
とった手段は次の通りです。


1.スレッドでURLに対応したプロファイルを作成する
 プロファイルは既存のものでも大丈夫なようです。

  system("firefox -CreateProfile <profile>");


2."1"のプロファイルを指定し、firefox を起動
  system("firefox -P <profile> <url>");

  新規に作成したプロファイルの場合、標準エラー出力にエラー/警告がでます。


上記によりその都度 firefoxが別プロセスで起動し、子スレッドが system でブロックするようになりました。
firefoxを閉じると system から戻ります。


他に良い方法がありましたらどうぞご教授下さい。
色々考えてくれたか方々、ありがとうございました。


538 名前:デフォルトの名無しさん mailto:sage [2005/07/12(火) 20:01:45 ]
>>537
だからさー、何でソース読まないの?

539 名前:537 mailto:sage [2005/07/12(火) 20:52:14 ]
         -、            ,.-、
        ./  .\          /  ヽ
       /    ;ゝ--──-- 、._/    .|
       /,.-‐''"´          \   |
     /                ヽ、 |
    /  ●                ヽ| >>538
     l       (_人__ノ         ●   l いや、そんな事言われても
    .|  ´´    |   /            |             ワテ猫やし
     l        ヽ_/         ´´  l
    ` 、                    /
      `ー 、__              /
          `'''ー‐‐──‐┬‐‐'''""
           /      |
           /        |

540 名前:デフォルトの名無しさん mailto:sage [2005/07/12(火) 21:08:08 ]
>>539
なごんだ

541 名前:デフォルトの名無しさん mailto:sage [2005/07/14(木) 00:27:29 ]
APUEの新版買った人いる?
いたら感想聞かせて


542 名前:デフォルトの名無しさん [2005/07/17(日) 07:40:38 ]
クラスの関数でEUCの文字列をUTF-8に変換するものを作りました。
これをあるプログラムから呼ぶと正しく処理できるのに、別のプログラムから
呼ぶと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);
  ( ... 略 ... )
 }
}
  

543 名前:デフォルトの名無しさん mailto:sage [2005/07/17(日) 09:36:49 ]
まずmainの直後でやれ
話はそれからだ

544 名前:デフォルトの名無しさん mailto:sage [2005/07/17(日) 09:39:21 ]
man iconv_open の ERRORS のセクションはご覧になってらっしゃる?


545 名前:542 mailto:sage [2005/07/17(日) 12:57:11 ]
>>543
変換部分だけを切り出して実行すると正常に動作します。
またクラスから呼び出して動作する場合もあるのです。

もともとは大きな(?)プログラムの中で使用されていたクラスで
そこではエラーになるので、クラスの関数だけ呼び出して実行
する簡単なプログラムで試したらエラーが出ないという謎の状況
です。

>>544
変換だけ行うプログラムなどでは正常に動作するので、サポートは
されていると思うのです。また、iconv -l でもEUC-JP、UTF-8がある
ことを確認しました。同じ環境でプログラムによってEINVALが返って
しまうことはあったりするのでしょうか…?



546 名前:デフォルトの名無しさん mailto:sage [2005/07/17(日) 13:57:34 ]
iconv_openの呼び出しをstraceしてみるトカ



547 名前:542 mailto:sage [2005/07/17(日) 14:40:26 ]
>>543
ふと思い立って、動かないほうのプログラムのmain()で
iconv_open() 〜 iconv_close() までの処理を書いてみたら
そこでも「Invalid argument」になってしまいました。
だんだんワケがわからなくなってきました…orz

>>546
ありがとうございます。やってみます。
(実はstrace自体知らなかったりしますが…)

548 名前:542 [2005/07/17(日) 14:53:40 ]
straceの結果、下のような行がありました。
open("/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しておきたいのですが、何か良い解決策はない
ものでしょうか。

549 名前:デフォルトの名無しさん mailto:sage [2005/07/17(日) 14:57:56 ]
chrootした先にも必要なもの一式そろえてあげればいいのでは。

550 名前:デフォルトの名無しさん mailto:sage [2005/07/17(日) 15:33:21 ]
>>548
chrootの意味わかってるか?


551 名前:542 mailto:sage [2005/07/17(日) 15:35:38 ]
>>549
ホームディレクトリを基点に/usr/lib/gconvのディレクトリを掘って
丸ごとコピーしたら動きました。ありがとうございます。

552 名前:デフォルトの名無しさん mailto:sage [2005/07/17(日) 15:39:15 ]
ソースをざっと見ただけだけどchrootの前に一回iconvを呼べばそれは必要ない気がする。

553 名前:542 mailto:sage [2005/07/17(日) 15:49:42 ]
>>550
一応解っていたつもりだったのですが、iconv_open()などの
内部で行われる動作についてはなんとなく例外のような感じが
していました…

>>552
最初に生成した変換ディスクリプタを使いまわすということでしょうか。
うまく行きそうな気がするのですが、ちょっと構造が大きく変わってしまうので
別の機会に試してみたいと思います。

554 名前:デフォルトの名無しさん mailto:sage [2005/07/17(日) 15:58:15 ]
そうじゃなくて、gconvは最初に呼ばれたときに一回だけgconv-modulesを読み込んで
初期化して、それ以降はファイルアクセスしないみたいだから。

555 名前:542 mailto:sage [2005/07/17(日) 16:58:39 ]
>>554
確かに>>548のエラーもログの中で一度しかでていませんでした。
仰るとおりchrootの前にiconv_open()→iconv_close()だけ実行したら
コピーしたファイル無しでも問題なく動作しました。

これで全てすっきりです。
ご回答いただいた方々、本当にありがとうございました。

556 名前:デフォルトの名無しさん mailto:sage [2005/07/17(日) 20:02:05 ]
このスレやっぱスゲー



557 名前:デフォルトの名無しさん mailto:sage [2005/07/17(日) 20:48:13 ]
どの辺がすごいのかよくわからないのだが
ム板のほうが深い話できるだろ

558 名前:デフォルトの名無しさん mailto:sage [2005/07/17(日) 23:05:32 ]
根拠がソースだけだと気持ち悪いのでマニュアルの記述を探してきた。
英語を面倒がらず、ソース読む前にマニュアルを読むべきだったな。>自分
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.

559 名前: ◆AE4dNGZqMw mailto:sage [2005/07/21(木) 07:09:48 ]
ちょっと愚痴らせてくれや
コンソールでscreen使ってソース書いてたんだけど
Xlibを使ったコードだったから、実験するためにtwm立ち上げて
そこでscreenをデタッチしてkterm上で実行してみたわけよ、でもなぜか
セグフォるの、調べてみたら
color_black = BlackPixel( disp, 0);
これでセグフォる
どう考えてもセグフォる部分じゃない
3時間ものすごい頭使って今まで考えたわけよ
pika−−−−−−−−−−nn!!!!!!!
もしかして、screenをデタッチしてやったからコンソールのときのなんかの変数受け継いでるのかな?
で、あたらしくkterm立ち上げてashで生で実行
‥‥‥‥‥‥‥‥‥‥
いけた‥‥‥‥
ほんと、今までの3時間なんだったんだろう‥‥


ごめん、 どうしても誰かにいいたかったの‥‥

560 名前:デフォルトの名無しさん mailto:sage [2005/07/21(木) 07:33:36 ]
あるマニュアル読んでたら
フォント名はコードに直書きするんじゃなくて
.Xresourcesに書けって書いてあるんだけど
なんで? 指定フォントの決め打ちなのにわざわざ書かせなきゃいけないの?

ってか、どうやって読み込めってんだよ


561 名前:デフォルトの名無しさん mailto:sage [2005/07/21(木) 09:31:59 ]
再コンパイルすることなく、
カスタマイズすることができる

562 名前:デフォルトの名無しさん mailto:sage [2005/07/21(木) 09:45:40 ]
>>559
環境変数を確認するのはことXWindowに関しては常道。

>>560
おまいさんもXWindowに関して基礎から勉強し直した方が…

563 名前:デフォルトの名無しさん mailto:sage [2005/07/21(木) 10:58:37 ]
XWindowの基礎なんて勉強しても無駄になることうけあい

564 名前:デフォルトの名無しさん mailto:sage [2005/07/21(木) 11:09:11 ]
身に付けて無駄になる基礎なんてない。

565 名前:デフォルトの名無しさん mailto:sage [2005/07/21(木) 11:24:32 ]
Xを使う以上、基本はXを知ることだと思うんだけど
Xの知識が無駄になるってどういうことなの?
また違うWindowSystem誰か作ったの?

566 名前:560 mailto:sage [2005/07/21(木) 11:46:10 ]
ありがと

でも決め打ちだよ?
そのフォントじゃないと正しく動作しないの
それでも、やれっていうの?



567 名前:デフォルトの名無しさん mailto:sage [2005/07/21(木) 12:07:51 ]
今使ってるフォントに問題が発覚して
正しく動作する別のフォントに入れ替える必要が出てくるかもしれない。
とかね。

べつにローカルな使用だけでソースが手元にあって
いつでもコンパイルできるならなんでもいんじゃね?

568 名前:デフォルトの名無しさん mailto:sage [2005/07/21(木) 12:29:23 ]
>>565
「Xの仕事が無い」というだけのこと

569 名前:565 mailto:sage [2005/07/21(木) 19:43:12 ]
お前らの人生全て仕事なんだ・・・
寂しいね

570 名前:デフォルトの名無しさん mailto:sage [2005/07/21(木) 20:53:19 ]
>>569
お、俺を一緒にするなよな? な?

571 名前:デフォルトの名無しさん mailto:sage [2005/07/21(木) 21:11:20 ]
うーん
でも仕事以外にXって使わないからなぁ・・・

572 名前:デフォルトの名無しさん mailto:sage [2005/07/21(木) 21:58:54 ]
家ではWindows使ってるって事?

573 名前:デフォルトの名無しさん mailto:sage [2005/07/22(金) 07:56:56 ]
>>559
> もしかして、screenをデタッチしてやったからコンソールのときのなんかの変数受け継いでるのかな?

「もしかして」じゃなくて調べろよ。

for i in `env | awk -F= '{ print $1 }'`; do (unset "$i"; ./a.out); done

どうせ全然違う原因だと思うが。

574 名前:デフォルトの名無しさん mailto:sage [2005/07/22(金) 08:36:40 ]
なにがしたいのかがまったくわからん

575 名前:デフォルトの名無しさん mailto:sage [2005/07/22(金) 22:48:34 ]
単に XOpenDisplay() に失敗していたけどエラーチェックして
なくて、disp == NULL で落ちてたってだけじゃないの?


576 名前:デフォルトの名無しさん mailto:sage [2005/07/30(土) 11:01:11 ]
C/C++質問スレから誘導されてきました。

子プロセスの標準出力と標準エラー出力を親プロセスで取りたいのですが、
たまに出力を取る部分で止まってしまいます。fgetsしているところで止まっている
ので、eofがくるまで待っているのか、とも思っているのですが・・・。

子プロセスの標準出力と標準エラー出力を別に取りたいので、forkしてパイプを
つなげる必要があると認識しています。

テストでつかったソースは以下のアップローダにupしました。

kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/819.c

#main関数内で起動用のコマンド文字列を作っているのですが、
#このソースでは省略しています。

このような時、どうすればよいのでしょうか。どなたかご教授ください。



577 名前:デフォルトの名無しさん mailto:sage [2005/07/30(土) 12:05:12 ]
子側でstderrのバッファが満杯になってブロックされてんじゃないの?

578 名前:デフォルトの名無しさん mailto:sage [2005/07/30(土) 12:19:30 ]
selectかスレッドを使って読み出せ。

579 名前:576 mailto:sage [2005/07/30(土) 12:55:27 ]
アドバイスありがとうございます。

> 577さん
バッファが満杯でブロックされてる場合は578さんが書いているように
1.スレッドで満杯になる前に逐次読み出してやる
2.selectでタイムアウトを設定する
という形でしょうか。

> 578さん
スレッドはぱっと調べた結果、手に負えそうもないので、selectについて調べてみました。
selectはファイルディスクリプタが読み書き可能になるまで待機して、準備できた場合は
1以上を返す、という理解でよろしいのでしょうか。

#上記のブロックされた場合はタイムアウトでbreakする?

selectを使って色々いじってみます。

580 名前:デフォルトの名無しさん mailto:sage [2005/07/30(土) 14:49:47 ]
select(2)やってみる前に、
とりあえずstrace -p PIDを全てに試してみたらどうなのよ?
# Solarisだとtruss

ありがちなのが、bugで誰も書いてないpipeを読んでいるケース。

581 名前:576 mailto:sage [2005/07/30(土) 19:23:22 ]
> 580さん
straceですか。そのようなコマンドがあることは知りませんでした。

#ものすごい今更ですが、Linux/gcc環境なので
#straceで使えました。

早速実行してみた結果、以下のように・・・

$ strace -p 19592
write(2, "書き込みメッセージ・・・"..., 46

$ strace -p 19590
read(3,

もしかして580さんの仰るとおり読み出すpipeが違うのでしょうか。デバッグライト
では、子プロセスの書き込み先は対になる4だったのですが・・・。
メッセージを読み出せる場合の方が多かったので油断していました。

582 名前:デフォルトの名無しさん mailto:sage [2005/07/30(土) 19:37:43 ]
>>581
>>579の時点で妥当な結論が出ているので580はさくっと無視するのが吉。
どうせあなたのプログラムも読んでない。



583 名前:デフォルトの名無しさん [2005/08/02(火) 11:54:06 ]
kernel2.6系で、システムコールをフックする方法を教えて下さい。

このページには2.4での方法が書いてありますが、2.6ではうまくいかないです。
ttp://www.atmarkit.co.jp/fsecurity/rensai/rootkit03/rootkit02.html


上のページと同じように、sys_unameをフックするソースを晒して下さい!!

584 名前:デフォルトの名無しさん mailto:sage [2005/08/02(火) 11:58:37 ]
それくらい自分で調べられないお子ちゃまはおいたしちゃダメ。


585 名前:デフォルトの名無しさん mailto:sage [2005/08/02(火) 12:37:43 ]
>>583
LKM rootkit のソース読めばいいじゃん。

586 名前:デフォルトの名無しさん mailto:sage [2005/08/02(火) 17:30:35 ]
>> 585

kernel2.6では、結構大変そう。。。
カーネルのバージョン毎にrootkitの対応状況が異なる。

最新版カーネルで、フック&晒しよろろ。

2.6全般のシステムコールをフックするrootkitがあれば、教えてください。



587 名前:デフォルトの名無しさん mailto:sage [2005/08/02(火) 19:24:43 ]
>>586
いや、だから自分で読めよ。

588 名前:デフォルトの名無しさん mailto:sage [2005/08/04(木) 02:23:45 ]
>>586

straceは、すべて(!?)のシステムコールをフックしてるんじゃないか?

よくしらんがね。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<207KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef