- 1 名前:名無しさん@お腹いっぱい。 [2005/09/22(木) 20:29:34 ]
- UNIXおよびUNIX clone環境一般のプログラミングに関する質問スレッド
過去スレ(プログラム技術板) Part6 pc8.2ch.net/test/read.cgi/tech/1116908090/ 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/ 関連板 Linux板 pc8.2ch.net/linux/ プログラム技術板 pc8.2ch.net/tech/
- 652 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/15(木) 20:04:21 ]
- fork: 現在のプロセスを複製して新しいプロセスを作る
exec: 現在のプロセスで別のプログラムの実行をはじめる
- 653 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/15(木) 20:28:15 ]
- spawn
- 654 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/15(木) 20:34:26 ]
- つまり、プロセスを実行するのがフォークで、
プログラムを実行するのがエグゼックなんですか?
- 655 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/15(木) 20:50:26 ]
- こんなとこで質問して宿題すませようとしないで本読めよ。
- 656 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/15(木) 21:09:09 ]
- 普通のアプリケーションを実行する場合、
フォークとエグゼックとでは、どちらを使うのが一般的ですか?
- 657 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/15(木) 21:58:46 ]
- 必要なものを必要なときに使うのが一般的です。
- 658 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/15(木) 22:01:24 ]
- 普通のアプリケーションを実行したいのですが、
フォークとエグゼックとでは、どちらが必要ですか?
- 659 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/15(木) 22:05:20 ]
- execlp
execv
- 660 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/15(木) 22:29:53 ]
- 普通のアプリケーション業務を行ないたいのですが、
execlとexcelとでは、どちらが必要ですか?
- 661 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/15(木) 23:33:59 ]
- 宿題をしなければなりませんが、
フォークとエグゼックとでは、どちらが必要ですか?
- 662 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/16(金) 13:18:31 ]
- 普通のフォークをエグゼックしたいのですが、
業務と宿題とでは、どちらが必要ですか?
- 663 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/16(金) 13:46:50 ]
- 宿題。
- 664 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/16(金) 14:46:15 ]
- 拡張子によって違うんだよ。
*.exeファイルを実行する場合はエグゼック、 *.fokファイルを実行する場合はフォークを使う。
- 665 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/16(金) 21:26:59 ]
- すみません教えてください。
プログラムとプロセスについて調べているのですが、 フォークとエグゼックの違いを教えてください。
- 666 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 04:32:57 ]
- 逆に考えてみるんだ。
フォークとエグゼックの同じところを。
- 667 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 07:16:16 ]
- フォークは左手ナイフは右手ですねわかります
- 668 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 07:36:30 ]
- 必要な業務をどちらかしたいのですが、
フォークと普通とでは宿題がエグゼックですか?
- 669 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 07:45:08 ]
- 俺は昔夏休みの英語の書き取りの宿題をフォークして発音記号の書き取りをエクゼックしたら
先生にどうして宿題をやってこなかったのかと叱られたのでぶちきれる必要がありました。
- 670 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 08:57:28 ]
- つまらないネタで引っ張るバカがいるな。彼らなりに面白いのだろうか?
- 671 名前:名無しさん@お腹いっぱい。 [2009/10/17(土) 09:41:59 ]
- UNIXではリダイレクトしたファイルはargvに載らないのでしょうか?
ファイル名がわからないのでアクセス権を変更できません。どうするのこれ?
- 672 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 09:59:01 ]
- リダイレクトされてるのは前のコマンドの出力であって、
ファイルそのものではないからね。で、何をしたいのそれ?
- 673 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 10:02:12 ]
- >>672
なんで「前のコマンドの出力」って限定するの? パイプと混同してるだろ
- 674 名前:671 mailto:sage [2009/10/17(土) 10:06:33 ]
- >>672
いいえ、ファイルそのものです。すでに書いた通りアクセス権を変更したいんですが。
- 675 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 10:33:22 ]
- >>673
ああ、そっか。ごめん。 cmd > foo とか cmd < foo した時に foo のアクセス権を変更したいってこと? cmd は foo の事を知らずに単なる入出力先として扱っているだけで、foo は cmd が open() する訳じゃないから無理じゃないの。
- 676 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 11:20:36 ]
- >>674
試したわけじゃないけど SIDOUT_FILENO なり SIDOUT_FILENO を fstat で調べてファイルだったら fchmod でパーミッション変える ってのは可能かも
- 677 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 11:22:01 ]
- と思ったけど、Solaris で cat > foo したプロセスを pfiles してみると
出力先が foo であるのを確認できるね。だから何らかの方法でファイルの 名前を手繰る事はできるみたい。 あと fchmod() ってのがあったよ。これを使ったら良いんじゃないの。
- 678 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 11:24:47 ]
- あ、スマソ。>>677 は >>675 の続きで >>671 宛のレスです…
自分がユーザなら、リダイレクトしただけでファイルのパーミッションを 変更されたらがっかりしちゃうと思うけど…
- 679 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 14:56:44 ]
- 初心者は黙ってろ。
何も考えずfchmod(2)。パイプならエラーになるだけ。
- 680 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 15:05:15 ]
- さっすが上級者の言う事は含蓄があるなあw
話が片付いたあとにやってきて何故か上から目線で語りたがる奴って居るよな…
- 681 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 15:14:35 ]
- fchmodを見つけたなら、fstatとかpfilesとかグダグダと余計な事は
書かないでよろしい。
- 682 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 15:30:13 ]
- 問題が解決したのが分かったなら、初心者とか上級者とかグダグダと意味の無いレスは
書かないでよろしい。
- 683 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 15:35:18 ]
- 余計な事グダグダ言って>>676も>>677も解決してないだろ。
- 684 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 15:49:49 ]
- >>683
それでは今から目の覚める様な解決方法を見せて頂けるんですね? お願いします!
- 685 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 16:23:02 ]
- あれあれ?
- 686 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 16:43:20 ]
- 結局、偉そうにしたいだけだったんだな。がっかりだわ。
- 687 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 17:01:43 ]
- >>679で解決済み。
- 688 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 17:13:26 ]
- え、>>679って何も新しい事言って無いじゃん…
- 689 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 17:25:17 ]
- fchmodの前にレギュラーファイルである事を調べる必要はないと言っている。
- 690 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 17:34:45 ]
- それだけ?
- 691 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 17:44:21 ]
- fchmod一発の処理なんだからfstat付きと比べると雲泥の差。
初心者は無理して答えなくていいよ。邪魔だから。
- 692 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 17:50:28 ]
- それ、雲泥の差って自分に言い聞かせてるだけじゃん…
しかも誰も fstat() が必須とは言ってないんだよなあ
- 693 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 18:40:56 ]
- バカ? メクラ? >>676
- 694 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 18:44:51 ]
- 初心者はなんで足りない知識で先を争って回答しようとするのだろう?
そんなに答えたいならOKWebでも行けばいいのに。
- 695 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 18:47:59 ]
- え〜、どこをどう読んでも fstat() をしないといけないという風には読めないけど?
それで、どこら辺が雲泥の差だったの?
- 696 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 18:50:13 ]
- 自称上級者は、既に出ている情報を偉そうな断定口調で書き込んだら、俺解決者宣言できる訳か。
2chは凄いインターネッツですね。
- 697 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 23:19:46 ]
- fstatしてファイルだったらfchmodって書いてありますが。バカですね。死んだ方が良いですね。
- 698 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 23:35:48 ]
- バカとか死ねとか子供の喧嘩かよw
お前面白い奴だな。このまま一生続けてくれ。
- 699 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/17(土) 23:45:11 ]
- ケンカはやめて(><)
- 700 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/18(日) 01:42:17 ]
- 言い逃れが出来ないようですな。理解していない事は無理して答え無くて良いのだから、
初心者は出しゃばらないように。
- 701 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/18(日) 01:53:01 ]
- fstat しなくてはいけないと書いてある訳じゃないから反論する必要も無いでしょ。
元々、大した情報も持ってない人が後出しで上級者を気取ってるだけみたいだし。 バカとか死ねとか初心者とか書いて煽ってるのはレスが欲しいからなんだろうけど、 そういうレス乞食みたいなのは止めにしようぜ。
- 702 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/18(日) 02:04:01 ]
- 最早雲丹板邪内罠
- 703 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/18(日) 05:48:52 ]
- >>700
つ 鏡
- 704 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/18(日) 07:58:10 ]
- > SIDOUT_FILENO なり SIDOUT_FILENO を fstat で調べてファイルだったら
> fchmod でパーミッション変える 呼べとは言ったが、必ず呼べよとは言っていない...www 呼べとは言ったが、必ず呼べよとは言っていない...www 呼べとは言ったが、必ず呼べよとは言っていない...www 無様すぎ。お前の完敗。
- 705 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/18(日) 10:23:55 ]
- ところで、
> SIDOUT_FILENO なり SIDOUT_FILENO って何? この辺にも知識レベルが露呈してますな。
- 706 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/18(日) 14:31:56 ]
- 何だ、お前自称上級者か。まだやってたんだなw
そうやって無理矢理に勝利宣言しても意味ないぞ。自分でも分かってるんだろ。 誰も fstat が必須だとは書いてないし、fstat したところでお前さんの言う所の 雲泥の差なんて物はない。君が来る前に問題は解決してたんだよ。残念だったな。 ↓もう少し見ててやるから何か書き込めや。
- 707 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/18(日) 15:05:54 ]
- ちょっと聞いてくれよ。
実は3〜4年前銭湯で幼稚園ぐらいの女の子に「パパー この人のちんちん大きー」と指をさされて大声で言われた。 確かに俺の息子は大きい方だったが、指をさされたのは初めてだった。俺は特にタオルで隠すことはしなかったので特に目立ったのだろう。 その子のお父さんは「すみません」と恥ずかしそうに謝っていた。 しかし、それだけでは終わらなかった。 俺が体を洗っているとその女の子が友達の女の子2人を連れてきて「ほら、この人のちんちんとっても大きいんだよ」とわざわざ見に来た。 お父さんが「やめなさい」と言ったのと同じくらいに女湯の方から「○○ちゃ〜ん、なにお話してるの?」と同じくらいの女の子の声が聞こえてきた。 すると「この人、とってもちんちんが大きいの。ゾウさんみたいなの」とありったけの大声で叫んでいた。 すると男湯、女湯の両方からくすくすと笑い声が聞こえた。 俺はとんでもなく恥ずかしくなって石鹸を流して早く上がろうと思い立ち上がったとき、不覚にも勃起してしまった。 その場にいた女の子3人から「わっ!」と声が上がり「○○ちゃ〜ん、大変〜、この人のちんちん上にいっちゃったの〜、パオーンしてるの〜」と 女湯に向かって叫んだ。男湯・女湯同時に大爆笑がおこった。その女の子達は「すごーい! すごーい!」と俺の息子に向かって拍手をしていた。 それを見た男湯の人たちがさらに爆笑し、その爆笑につられて女湯でもいっそう大きな爆笑になった。 その日以来、銭湯へは行かなくなった…。
- 708 名前:名無しさん@お腹いっぱい。 [2009/10/18(日) 17:34:21 ]
- 呼べとは言ったが、必ず呼べよとは言っていない...www
呼べとは言ったが、必ず呼べよとは言っていない...www 呼べとは言ったが、必ず呼べよとは言っていない...www
- 709 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/18(日) 17:47:21 ]
- 最後にレスしたら勝ちみたいな思考がワロスw
- 710 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/18(日) 18:32:17 ]
- 「必ず呼べよとは言っていない」というのはわかりました。
で、試しに SIDOUT_FILENO を使って fstat()を呼んでみたところ、 エラーになりました。本当に SIDOUT_FILENO を使って呼んでいいんですか?
- 711 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/18(日) 18:48:46 ]
- >>710
>「必ず呼べよとは言っていない」というのはわかりました。 何だ、理解できるんじゃん… 何でこんな時間が掛かったのか知らんけど、分かったならもう粘着するなよ。
- 712 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/18(日) 19:03:54 ]
- じゃなくて、呼ぼうとするとエラーになるんだから、
「呼んではいけない」と訂正するべきじゃないんですか? あと、SIDOUT_FILENOについてはいつまで訂正しないつもりですか?
- 713 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/18(日) 19:14:25 ]
- 何でそれを俺に言うんだ?
そんなに気になるなら君が訂正してあげれば良いんじゃないの。
- 714 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/18(日) 19:16:38 ]
- >>676 に言ってるんだが
- 715 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/18(日) 19:18:44 ]
- >>714
じゃあ、これは何だ? >>712 >じゃなくて、 紛らわしい書き方をするなよ。あとレスアンカー付けろ。
- 716 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/18(日) 19:23:50 ]
- >>708
> 呼べとは言ったが、必ず呼べよとは言っていない ↑つまり、「呼んでも構わない」とは言ったということだよね。 ところが、 呼ぶとエラーになるんだ。呼んではいけない。 よって、>>708 = >>676 の負け。
- 717 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/18(日) 19:26:46 ]
- ところで、お前さんに勝って誰が得するんだ?
- 718 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/18(日) 19:57:15 ]
- > 呼べとは言ったが、必ず呼べよとは言っていない...www
馬鹿丸出しの小学生並みの言い逃れですな。
- 719 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/21(水) 23:27:56 ]
- プログラミングに使いそうな単語を使った言葉遊びのスレなんですね、ここは
- 720 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/22(木) 12:22:07 ]
- 自分の間違いを認められない初心者が粘着しているだけ。
- 721 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/22(木) 19:46:41 ]
- 初心者が初心者を見下してどうするんだ
- 722 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/22(木) 20:20:31 ]
- > 呼べとは言ったが、必ず呼べよとは言っていない...www
こんな無様な言い逃れ、めったにお目に書かれない。
- 723 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/22(木) 20:38:26 ]
- デスマご苦労さまでちゅ!
仕事がなくてヒマしているPGさんも ご苦労さまでちゅ! 壊れて辞めてしまったPGさんも これまた本当にご苦労さまでちゅた! さて、フロは入ったほうがさっぱりいたしますが、 スレタイどおりと思いませんか?
- 724 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/10/22(木) 20:40:32 ]
- お前ら仲良いなw
- 725 名前:名無しさん@お腹いっぱい。 [2009/11/08(日) 22:13:22 ]
- select(2)のfd_setのサイズが馬鹿でかくてウザいんですけど、
ファイル記述子が32個以下であることが確実な場合、 fd_setの代わりに強引にintの変数を使っても問題ないですかねぇ? あ、poll()使えというのは無しの方向で。
- 726 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/09(月) 05:05:19 ]
- ダメに決まってるだろ。
- 727 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/09(月) 06:36:35 ]
- >>725
もちろんOK。warningを消すためにキャストしてね。
- 728 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/09(月) 08:05:25 ]
- >>727
ありがとうございます。intで行ってみます。 >>726 ありがとうございませんでしたw
- 729 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/09(月) 17:34:47 ]
- システムコールしたらカーネルはfd_set分の大きさをcopyinするだろうから、
そのintがページ末尾にあって、fd_setの大きさだったらページ境界をまたぐ 場合、そしてその次のページのメモリをプロセスがとっていなかったとすると そのタイミングでsegmentation faultで落ちるんじゃないか。
- 730 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/09(月) 17:49:46 ]
- >>729
そんなことはない。 select()の第1引数がビットの最大値を決めていて、 カーネルはそのビットを含むアドレスまでしか見に行かないから Segmentation faultなどしない。 (そもそも、fdsetのサイズはユーザー空間で決めていて、カーネルは知らない) (Solarisとかだと、ユーザープログラムのコンパイル時にfdsetのサイズを再定義することが可能) ただ、FD_ZERO()などのマクロは正常動作しないので、 ビットのセットやテスト等はintに対して自分で演算すること。
- 731 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/09(月) 17:55:31 ]
- あー、なるほど。たしかに。
- 732 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/09(月) 21:18:59 ]
- つーかそんなことOS依存なんでは?
POSIXとかで、panicしてはいけないとか、決まってるの?
- 733 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/09(月) 21:19:39 ]
- ああ、panicじゃなくてerrno=EFAULTでのエラーか。
- 734 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/10(火) 01:09:38 ]
- >>730
> (そもそも、fdsetのサイズはユーザー空間で決めていて、カーネルは知らない) 上限はあるけどね。
- 735 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/10(火) 07:18:09 ]
- >>734
下限の話をしているのに「上限」とは的はずれで蛇足な突っ込み しかもその上限は、open filesとしての上限であって、 fdset自体の上限じゃないし。
- 736 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/10(火) 08:01:23 ]
- >>734
fd_setのビット数、2147483647 (=2^31-1) まで正常動作を確認。(上限無し)
- 737 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/10(火) 09:38:55 ]
- そんなにたくさんfdを作れるとでも?
- 738 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/10(火) 09:45:16 ]
- >>737
だから、fdの話じゃなくてselect()のインターフェイス上のfd_setの話だって。 >>735 も言ってるでしょw fd_setは(int最大でも使えるから)上限無し。
- 739 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/10(火) 09:50:25 ]
- userlandから渡すfd_setの幅がいくら広くても仕方ないでしょ。
カーネルがそこまで本当にアクセスしてると思ってるわけ?
- 740 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/10(火) 09:53:27 ]
- >>739
最初の議論ちゃんと読んでる? 「カーネルがそこまで本当にアクセス」しないからこそ問題が起きない。 だから、fd_setは(fdとは無関係に)好きなサイズで確保して構わない、 という話をしてるのだが。
- 741 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/10(火) 10:07:26 ]
- 上限の話をしても意味がないってのを理解してないらしい
- 742 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/11(水) 00:45:33 ]
- >>736
環境書かないと意味ないんじゃない?
- 743 名前:名無しさん@お腹いっぱい。 [2009/11/11(水) 15:44:44 ]
- 詳しい人にとってはとてもレベルの低い話かもしれませんが、よろしくご教授下さい。
Linux環境でライブラリの中の動きを見ようと思っています。 ライブラリのソース(*.c)の頭の#include <stdio.h>を追加し、fprintfを沢山追加してコンパイルしました。 すると、そのライブラリを使用する一部のコマンドがsegfaultするようになりました。 error 4 in libc-2.10.1.so[xxxxxxxxx]と出力されています。 多分初歩的な大きな間違いを犯していると思うんですが、どうしたらいいですか?
- 744 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/11(水) 16:23:46 ]
- スタックのどこかが壊れるバグを入れ込んだ、ないし顕在化させたんだと思うが。
とりあえず、一つ一つ付けたり外したり、あるいは半分ずつ切り分けるなり、 デバッガで怪しい動作をさぐるなり、そういう手しかない。
- 745 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/11(水) 16:30:40 ]
- >>743
libcのファイル名見るとLinuxっぽいね。 #define EINTR 4 /* Interrupted system call */ だからそこでfprintf(3)は厳しい状況じゃないかな。
- 746 名前:名無しさん@お腹いっぱい。 [2009/11/11(水) 17:00:16 ]
- >>745
そこに書いてある意味はよくわからないんですが、 「error 4 in」って出るライブラリはそもそもfprintfを使えないということですかね 回避策はシステムコールのみを使ってfprintfの役割を代替するものを使えばいいって ことでしょうか?
- 747 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/11(水) 19:01:27 ]
- いや、システムコールの呼び出し自体が問題になってる。
「再スタート可能なシステムコール」あたりでググって、 読んでもらえば分かるけど、理解するのはちょっと厳しいかもね。 どこかメモリ上に書けば? core dumpするから読めるでしょ。
- 748 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/11(水) 23:27:36 ]
- 知ったかぶりに振り回されないように注意しな。
error 4はセグメントフォルトの詳細コード。EINTRは全然関係ない。 どうせ、%sに無効ポインタ渡しているとかいう原因だろ。
- 749 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/11(水) 23:51:15 ]
- >>745
Linuxって言って質問してるのに「Linuxっぽいね」って、、、
- 750 名前:名無しさん@お腹いっぱい。 [2009/11/11(水) 23:53:47 ]
- >>748
>>747が正しい可能性が高いと思います。 >>747を受けて、既にログ出力用の関数が用意されていないかと探してみたんですが、 Makefile.amに 「このソースファイルはライブラリに使える」 「このソースファイルはデーモンとテストアプリに使える」みたいな 記述があって、ログ出力の関数は後者の中にしかありませんでした。 前者だとソケットプログラミングしないと中の動きは見れないようです。
- 751 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/11(水) 23:56:58 ]
- >>748
知ったかぶりに振り回されないように注意。 %sに無効ポインタ渡してるのが原因なら質問するまでもなく自己解決する。
- 752 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/11/12(木) 00:04:09 ]
- EINTRは関係ない。 error 4は↓の40行目 PF_USER(ユーザモードでのページフォルト)
www.gelato.unsw.edu.au/lxr/source/arch/x86_64/mm/fault.c segfaultが発生してると言っているのにEINTRとか馬鹿杉。無能杉。
|

|