1 名前:970 [2006/05/18(木) 18:56:16 ] UNIXおよびUNIX clone環境一般のプログラミングに関する質問スレッド 前スレ Part7 pc8.2ch.net/test/read.cgi/tech/1127373405/ 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
388 名前:デフォルトの名無しさん mailto:sage [2006/10/21(土) 23:03:29 ] >387 ロケールを設定。 ttp://www.google.co.jp/search?q=C%2B%2B+locale
389 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 11:34:31 ] 常にウインドウを最前面に配置したいのですが、 それはどのようにして実現できるのでしょうか?
390 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 12:06:50 ] >>389 ウィンドウ環境によって異なります。
391 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 12:42:58 ] >>390 汎用的な方法は無いのでしょうか?
392 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 13:00:05 ] >>391 window managerにそう指定する。
393 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 13:19:10 ] >>392 どこが汎用的なんだ? >>391 やったことないけど、Windowが隠されたら最前面にマップするようにしたら?
394 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 13:54:08 ] > Windowが隠されたら最前面にマップ 2つのアプリがそれやり出したらとっても楽しいことになりそうだな
395 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 13:54:25 ] そもそもXWindowかどうかさえ判らないのに汎用的な方法なぞあるわけがない。
396 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 13:57:40 ] >>394 重なったWindowのプロパティ見れば?
397 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 14:01:27 ] >>396 素朴な疑問だが、どんなウインドウシステムを仮定している?
398 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 14:10:56 ] >>397 汎用的な方法なんだから何も仮定してるわけないだろ。 それでプロパティってのが何のことなのかはさっぱりわからんが
399 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 14:16:43 ] XならWMに対してポリシーのヒントみたいのん設定するんじゃないっけ あとはWM次第みたいな
400 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 14:22:38 ] >>399 それ>>392 じゃないの? 違いは「Xなら」と「あとはWM次第」って予防線?
401 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 14:26:03 ] ああ、そうなんだけど、なんか妙な方向に流れてるから多少具体的に言ってみました
402 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 17:50:02 ] 環境がわからないのに汎用的な方法もクソも無いだろうに…
403 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 20:27:21 ] >>402 環境を選んでる時点で汎用ではないだろ
404 名前:デフォルトの名無しさん mailto:sage [2006/10/23(月) 23:08:26 ] ウィンドウのない環境まで想定したら汎用的な方法などありえない、で終わってしまうな
405 名前:デフォルトの名無しさん mailto:sage [2006/10/26(木) 05:06:24 ] cursesならキャラクタ端末でもウィンドウが
406 名前:デフォルトの名無しさん mailto:sage [2006/10/26(木) 07:44:01 ] 質問した奴はげんなりしてるだろうなw
407 名前:デフォルトの名無しさん [2006/10/26(木) 15:31:08 ] Xのプログラムで質問です。 外部からの指示により、スクリーンサイズと同じサイズの背景透 過なウィンドウを作成したいのですが良い方法はありませんか? やりたいことは、画面上は他のウィンドウが表示されているけど 画面をクリックしたらそのイベントを他のウィンドウに渡さず透 過なウィンドウで受けとって座標位置にあった処理をしたいので す。 デプス1のピクスマップをつくってXShapeCombineMask()を使 用したら透明なウィンドウはできたのですが、画面クリックする と透過された他のウィンドウがイベント拾っちゃいました(TT
408 名前:386 mailto:sage [2006/10/29(日) 15:15:49 ] >>388 レスが遅くなりましたが、ありがとうございます。 なお、ロケール設定後も文字化けして表示してしまって いました。その後、SSHクライアントが日本語に対応して いなかったためだと分かり、やっと解決しました。
409 名前:デフォルトの名無しさん mailto:sage [2006/10/29(日) 18:07:23 ] >>407 xwininfoのソース嫁
410 名前:デフォルトの名無しさん mailto:sage [2006/11/01(水) 16:26:12 ] >>409 それは XGrabPointer使えってことだよね。>>407 が考えていることとは微妙に違う気がする。
411 名前:デフォルトの名無しさん mailto:sage [2006/11/01(水) 19:49:03 ] >>407 XShapeで作成したウィンドウは、下のレイヤのウィンドウを透過しているのではなくて、ビットマスクによって自身の ウィンドウの形状を変更(クリッピング)している。ウィンドウが無いとみなされているので、下のレイヤのウィンドウに イベントが通知される。 参考になりそうなのはkinput2等、IMのソース。 ・class=InputOnly, override_redirect=True なウィンドウを作成すると、非表示のウィンドウでマウス入力が取れる。 ・非表示のウィンドウはフォーカスを持たないため、キー入力を取るためには別途 XGrabKeyboard すれば桶。
412 名前:デフォルトの名無しさん [2006/11/02(木) 22:15:24 ] TCP サーバーソケットで、受信メッセージからDestination IP addressの取得するのは、どうすればよいでしょうか? 一応今までは、UDPだったので、RAWソケットを使ってIPパケットを見ていたのですが、 今度、TCPでもやることになってしまいました。 RAWソケットを使わず、取得する方法は無いでしょうか?
413 名前:デフォルトの名無しさん [2006/11/02(木) 22:26:55 ] >>412 Packet Socket
414 名前:デフォルトの名無しさん mailto:sage [2006/11/02(木) 22:30:26 ] acceptのときに得られるんでない?
415 名前:デフォルトの名無しさん mailto:sage [2006/11/02(木) 22:41:49 ] >>412 ×受信メッセージから ○受信ソケットから getpeeraddr(2)
416 名前:デフォルトの名無しさん mailto:sage [2006/11/02(木) 23:35:44 ] getsockname
417 名前:デフォルトの名無しさん mailto:sage [2006/11/04(土) 10:27:33 ] >>412 質問を明確にしたほうがいいんじゃない? 受信パケットのDestinationってことは、自ノードのアドレスってことだよね 複数アドレスがある場合に特定する方法があれば俺も知りたい(以前調べてわからんかった)
418 名前:デフォルトの名無しさん mailto:sage [2006/11/04(土) 11:08:42 ] >>417 ギャグですか?
419 名前:412です [2006/11/04(土) 14:18:42 ] すみません。レス遅れました。 getsocknameで、自分の情報(受信ソケットの場合Destination IPを取得)ということですね。 どうもありがとうございます。 >>417 そうです。受信パケットのDestinationってことです。もう少しこの部分を強調すれば 良かったですね。 >>413 パケットソケットだと、RAW ソケットになるとおもいますが、私の勘違い?
420 名前:デフォルトの名無しさん mailto:sage [2006/11/05(日) 12:20:08 ] ファイルやディレクトリが存在するかどうかを調べるにはどうしたらよいでしょうか?
421 名前:デフォルトの名無しさん mailto:sage [2006/11/05(日) 12:40:52 ] stat
422 名前:デフォルトの名無しさん mailto:sage [2006/11/05(日) 12:55:23 ] >>421 ありがとうございます。やってみます。
423 名前:デフォルトの名無しさん mailto:sage [2006/11/09(木) 14:50:43 ] close(2)が失敗した場合、ファイルデスクリプタはまだ有効なんでしょうかね? つまりもう一度closeを呼ぶべきかということですが。 EBADF, EINTRの場合は自明として、それ以外の場合は?
424 名前:デフォルトの名無しさん mailto:sage [2006/11/09(木) 23:12:35 ] 中のワークエリアを開放するのは一番最後だろうから、 生きてるんじゃないかい。
425 名前:デフォルトの名無しさん mailto:sage [2006/11/09(木) 23:20:26 ] stat(2)が正統だろうけど、ENOENTが返るならなんでもOKかも。access(2)とか。
426 名前:デフォルトの名無しさん mailto:sage [2006/11/10(金) 00:18:02 ] >>424 ,425 複数のプロセスがopenしてる可能性を考えたことはないのか? システムリソースとプロセスリソースは別物だって考えたことはないのか? Unix系前提で話をすれば... o closeすればプロセスリソースは破棄. o 該当資源を最後にcloseしたやつは待たされるかもしれんが プロセスリソースは破棄されている(システムコールから戻ってくれば) o 残ったI/O処理は破棄される(ドライバが正常/以上完了すれば) o ドライバの作りによっては, プロセスはゾンビになってkillすらできない o 最悪の場合システムダウン
427 名前:デフォルトの名無しさん mailto:sage [2006/11/10(金) 07:18:21 ] おちんぽ^^
428 名前:デフォルトの名無しさん mailto:sage [2006/11/10(金) 12:16:43 ] >>426 複数のプロセスがopenしていても、close したプロセスでは ファイルディスクプリタは無効になるんじゃない? だから>>425 は別に問題ないように思うけど。
429 名前:デフォルトの名無しさん mailto:sage [2006/11/10(金) 12:21:40 ] お前ら流れよく読め。425は423じゃなく420への回答だろ。
430 名前:デフォルトの名無しさん mailto:sage [2006/11/10(金) 12:23:53 ] >>423 もう一度呼ぶべきかどうかは俺にはわからんが、気になるなら 成功かEBADFのどちらかになるまでリトライすりゃいいんじゃね?
431 名前:デフォルトの名無しさん mailto:sage [2006/11/10(金) 12:24:10 ] >>426 が>>424 ,425にまとめて説教してるのが謎
432 名前:デフォルトの名無しさん mailto:sage [2006/11/15(水) 20:35:50 ] >>426 しらんぷりしてりゃいいんだよ
433 名前:デフォルトの名無しさん mailto:sage [2006/11/18(土) 18:51:54 ] close(2)が失敗するような状況で何ができるの?
434 名前:デフォルトの名無しさん mailto:sage [2006/11/18(土) 21:33:25 ] 警告メッセージを吐いておくくらいかな
435 名前:デフォルトの名無しさん mailto:sage [2006/11/19(日) 00:32:14 ] ファイルデスクリプタは放置?
436 名前:デフォルトの名無しさん mailto:sage [2006/11/19(日) 02:17:14 ] ファイルデスクリプタが間違ってたらclose(2)は失敗するけど 間違ったファイルデスクリプタはどうしようもないやん
437 名前:デフォルトの名無しさん mailto:sage [2006/11/23(木) 09:53:13 ] デーモンとか常駐するプログラムの終了処理ってどうすればいいんでしょう? シグナルを受け取ったら終了処理、っていう感じでいいんでしょうか
438 名前:デフォルトの名無しさん mailto:sage [2006/11/23(木) 10:26:44 ] SIGTERMのハンドラで正常終了処理。 例えば、Debian GNU/Linuxだと、 start-stop-daemonコマンドで--stopすることになっているけれど、 この時の送られるシグナルはディフォールトだと、SIGTERM。 FreeBSDでshutdownする時も、SIGTERMが送られる。 kill(1)のディフォールトがSIGTERMだかね。
439 名前:デフォルトの名無しさん mailto:sage [2006/11/23(木) 10:32:11 ] ありがとうございます!
440 名前:デフォルトの名無しさん mailto:sage [2006/11/24(金) 08:29:20 ] シグナルは非同期なので、ハンドラでフラグを立てて 適切な時にフラグをチェックすると楽
441 名前:デフォルトの名無しさん mailto:sage [2006/11/24(金) 09:41:33 ] デバッグ時には、コントローリングターミナルを切り放さずに、 フォアグラウンドで実行することが多いから、 Ctrl-Cで止めた時の、SIGINTも同じハンドラにしておくと便利。
442 名前:デフォルトの名無しさん [2006/11/27(月) 08:46:54 ] >>440 シグナルが非同期、というのは メインスレッドでハンドラが実行される ということですよね?
443 名前:デフォルトの名無しさん mailto:sage [2006/11/27(月) 09:03:23 ] >>442 どのスレッドがシグナルを受け取るかはOSにより異なる
444 名前:デフォルトの名無しさん mailto:sage [2006/11/27(月) 15:34:27 ] シグナルマスクで制御できんじゃね?
445 名前:デフォルトの名無しさん mailto:sage [2006/11/27(月) 19:15:05 ] それではpthread_createからpthread_sigmaskまでの間が危険。 普通はメインスレッド以外ではpthread_killでメインスレッドにシグナルを ルーティングするだけにして、そちらで処理する。 SEGVとかは原因となったスレッドに通知されるのでその限りではないが。
446 名前:デフォルトの名無しさん mailto:sage [2006/11/27(月) 19:28:59 ] スレッド作るまえに全部ブロックしといて、そのあと専用スレッドでsigwaitしてりゃいんじゃね?
447 名前:デフォルトの名無しさん mailto:sage [2006/12/02(土) 00:39:35 ] 今開発中の環境でディスクに書き込む速度を調節したいのですが RAID5の書き込みで、400MB/secも速度が出てしまいちょっと 長い時間データの読み書きを1プロセスが行うだけでIOを占拠してしまいます。 そこで1プロセスで使用できるディスクの速度を75MB/sec固定にしたいのですが どうやってやればいいのかご存知の片いませんか?
448 名前:デフォルトの名無しさん mailto:sage [2006/12/02(土) 01:32:53 ] OS が何だか知らないけど、複数プロセスで書き込めば勝手に分散されるでしょ。
449 名前:デフォルトの名無しさん mailto:sage [2006/12/02(土) 01:33:23 ] >>447 で、あんたの使っているOSは?
450 名前:デフォルトの名無しさん mailto:sage [2006/12/02(土) 01:55:54 ] HPです
451 名前:デフォルトの名無しさん mailto:sage [2006/12/02(土) 02:00:53 ] >>448 それだと平均75MB/sec出ないのですよ Readだけで合わせても、30MBと150MBとか わかれてしまって困ってます。均一に資源を割り当てたいが どうすればいいのかさっぱりわかりません
452 名前:デフォルトの名無しさん mailto:sage [2006/12/02(土) 02:23:06 ] dd で同じオプションで2並列で書き込んでも大きな差が出るの?
453 名前:デフォルトの名無しさん mailto:sage [2006/12/02(土) 08:14:13 ] 流れ切ってすいません…。 設定ファイルを読み込み、解析するためのライブラリはないでしょうか?
454 名前:デフォルトの名無しさん mailto:sage [2006/12/02(土) 08:58:22 ] >>453 あります。 うちのプロジェクトではみんなが好き勝手に設定ファイルを作りたがるので、 切れて共通で使えるようなライブラリを提供してフォーマットを固定にしました。
455 名前:デフォルトの名無しさん mailto:sage [2006/12/02(土) 12:45:51 ] >>453 XMLで書けばいいじゃん 最終的にノード単位で結合すればいいんだし もし設定ファイル読むのに遅いとかいいだしたら 勝手にやって暮れだが
456 名前:デフォルトの名無しさん mailto:sage [2006/12/04(月) 09:32:42 ] 手で書くのが前提の設定ファイルならXMLはお勧めできない。 YAMLあたりで。
457 名前:デフォルトの名無しさん mailto:sage [2006/12/04(月) 18:18:36 ] 手で書くのだって、XML扱えるテキストエディターの方が多い。
458 名前:デフォルトの名無しさん mailto:sage [2006/12/05(火) 05:23:11 ] >>453 C なら libConfuse とかってライブラリがあるよ。 あとは Boost の program_options とかどうよ?
459 名前:デフォルトの名無しさん [2006/12/05(火) 12:08:08 ] 質問です。 普段Microsoft Visual C++を使って数値演算をしているのですが、 演算サーバーの方が処理が早いということで、UNIXを使い始めたところ、 Visual C++で走るプログラムがUNIXとなると実行結果に『NaNQ』が出てきてしまいます。 ソースは同じものを使っているはずなのに。。。 UNIXでのコンパイルは成功しています。 原因としては何が考えられるのでしょう??
460 名前:デフォルトの名無しさん mailto:sage [2006/12/05(火) 12:26:53 ] OS の名前もコンパイラの名前もプログラミング言語の名前も処理の内容も書いてないから 当てずっぽうだけど、改行コード/バイトオーダー/データモデルの何れかじゃない。 取り敢えず改行コードを LF のみに変換してみては?
461 名前:デフォルトの名無しさん mailto:sage [2006/12/05(火) 12:42:58 ] スマソ。言語は C++ だったか。
462 名前:デフォルトの名無しさん mailto:sage [2006/12/05(火) 12:54:12 ] >>459 普通にどっかで桁落ちしてるんじゃねぇの?
463 名前:デフォルトの名無しさん [2006/12/05(火) 13:06:31 ] このような事ができるようなプログラムを1時間以内で教えて下さい。お願いします 1:4個の1桁の数字からなる順列を乱数で生成 (4個の数字は全て異なる) 2:4個の数字の順列を入力 3:生成した順列と入力の順列を比較 (数と位置があっている「hit]) (数はあるけれど位置が違う「blow]) 4:hit数とblow数を表示 5:順列があたるまで入力を繰り返す 実行例 Number?:0123 Hits:0,Blows:1 Number?:0124 Hits:0,Blows:0 Number?:3567 Hits:3,Blows:0 Number?:3568 Hits:3,Blows:0 Number?:3569 Hits:4,Blows:0 Trials:5
464 名前:デフォルトの名無しさん mailto:sage [2006/12/05(火) 13:08:49 ] >>463 宿題スレ行けよ
465 名前:デフォルトの名無しさん mailto:sage [2006/12/05(火) 14:09:51 ] >>459 そういうときはFPUのCWを再設定しろ。 ってばっちゃがいってた。 どうでもいいけどQNaNじゃないの?
466 名前:デフォルトの名無しさん mailto:sage [2006/12/09(土) 16:31:42 ] WindowsのGDI+並に高機能で、主にUNIXで動く、 画像ファイルの読み書き・描画などを行うライブラリはありますか?(GDよりも高機能で できればC/C++等で使えるものでありたいのですが、GIMPのスクリプトとかになるのでしょうか。
467 名前:デフォルトの名無しさん mailto:sage [2006/12/09(土) 17:11:33 ] UNIX板でいきなりGDI+といわれても…
468 名前:467 mailto:sage [2006/12/09(土) 17:13:10 ] ごめん。UNIX板ではなかった。 で、なにそれ?
469 名前:デフォルトの名無しさん mailto:sage [2006/12/09(土) 17:48:10 ] >>466 cairoとかになるのかなぁ
470 名前:デフォルトの名無しさん mailto:sage [2006/12/09(土) 17:53:05 ] 何やりたいかによるんでわ? 画像開いてちょっと加工するならImageMagickとか・・・
471 名前:デフォルトの名無しさん [2006/12/12(火) 13:17:21 ] linux上でプロセス情報を取得するプログラムを作成したいと思っています。 検索して調べたところ task_structという構造体にプロセス情報が格納されているということは分かったのですが、 検索したサイト先であげられているヘッダファイル "include/linux/sched.h" 内に task_structに関する記述が無いのです。 上記構造体を利用するためには、 何か別の手段をとらないといけないのでしょうか? カーネルバージョンは"2.4.21-20.EL"です 分かる方いましたらよろしくお願いします。
472 名前:デフォルトの名無しさん mailto:sage [2006/12/12(火) 13:24:27 ] Linuxの事は良く知らんけど、それってカーネル内のデータ構造と違うの? /procとか見ただけじゃいかんの?
473 名前:デフォルトの名無しさん mailto:sage [2006/12/12(火) 13:36:11 ] ユーザーレベルでそういう情報が見られるように procファイルシステム というのがあるわけだが。
474 名前:471 mailto:sage [2006/12/12(火) 14:03:15 ] >>472-473 レスありがとうございます。 プログラム中からカーネルのプロセス情報を取得するのはムリなのでしょうか?
475 名前:デフォルトの名無しさん mailto:sage [2006/12/12(火) 14:07:55 ] >>474 お礼だけ言って内容は無視するのかよ!
476 名前:471 mailto:sage [2006/12/12(火) 14:44:05 ] >>475 申し訳ないです。 やりたいことなのですが psコマンドで表示されるプロセスのプロセス名を全て取得し、 指定したプロセス名が存在したらそのプロセス開始時間を取得する。 という処理をC言語で実装したいのです。 なので>>471 の内容で質問をしました。 >>472-473 さんの仰るように/procを参照しようとすると 何らかの手段で全プロセスのプロセス番号を取得する必要があると思うのですが c言語でそのようなことは可能なのでしょうか?
477 名前:デフォルトの名無しさん mailto:sage [2006/12/12(火) 14:50:00 ] これでも読んだら? ttp://www.linux.or.jp/JM/html/LDP_man-pages/man5/proc.5.html
478 名前:デフォルトの名無しさん mailto:sage [2006/12/12(火) 14:50:49 ] /proc/[0-9]*/cmdlineを全てfopenして読め。 該当するのが見つかったら、 /proc/該当するPID/statを読んで、start_timeを調べろ。 /usr/src/linux-*/fs/proc/array.cを読めばどれか分かる。
479 名前:デフォルトの名無しさん mailto:sage [2006/12/12(火) 17:27:38 ] >>476 psのソース嫁
480 名前:デフォルトの名無しさん mailto:sage [2006/12/12(火) 19:01:17 ] psの出力を使ったほうが。
481 名前:デフォルトの名無しさん mailto:sage [2006/12/12(火) 19:07:45 ] Linuxなら/proc覗くのが普通なんじゃないの?
482 名前:デフォルトの名無しさん mailto:sage [2006/12/12(火) 22:55:57 ] >>476 > >>472-473 さんの仰るように/procを参照しようとすると > 何らかの手段で全プロセスのプロセス番号を取得する必要があると思うのですが > c言語でそのようなことは可能なのでしょうか? それが/procを参照するってことだ。 opendir() & readdir()
483 名前:デフォルトの名無しさん mailto:sage [2006/12/13(水) 05:48:39 ] readdir()するくらいならlsの出力でも…… と書き掛けて気付く。それだったらpsでいいね。
484 名前:デフォルトの名無しさん mailto:sage [2006/12/14(木) 22:29:15 ] UNIXでは標準コマンドの出力加工して使うのって WindowsでDLL呼び出すのと同じくらいふつーに使う気がする
485 名前:デフォルトの名無しさん mailto:sage [2006/12/14(木) 22:35:46 ] proc読もうがps呼ぼうが、どっちでもいいけど、 見に行ったときにそのプロセスがまだある保証はないから気をつけよう。
486 名前:デフォルトの名無しさん mailto:sage [2006/12/14(木) 23:04:57 ] それは当たり前だろう
487 名前:デフォルトの名無しさん mailto:sage [2006/12/15(金) 01:31:34 ] >>484 しかしそれを意図して書式化されていない場合とかlsのようにオプションに 気をつけないと情報ロスが存在しうる場合は注意が必要だったりするし、 やっぱあまり普通には使わないな。 スクリプトなんかでそれで済んじゃう場合はそれでもいいけど。 特にpsの出力なんかパースするくらいなら素直に/procを読むか kvm_なんたらを使う方が変なところで悩まなくてよい。
488 名前:デフォルトの名無しさん mailto:sage [2006/12/15(金) 02:03:35 ] >psの出力なんかパース もしかして、フォーマットを木目細かく指定できることをご存知内のだろうか。