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
355 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 17:01:33 ] >>354 どうでもいいよ。定義なんて。
356 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 17:07:05 ] >>355 どうでもいいよ。お前の意見なんて
357 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 17:11:18 ] >>356 じゃあわざわざwikipedia書くような労力払わんで下さいよ。
358 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 17:11:39 ] キミタチキモイヨ
359 名前:デフォルトの名無しさん [2006/10/09(月) 13:21:17 ] GCCとMakeの質問です。 Apacheモジュールからpostgresへつなげる処理を 作っているのですが、 Makeしたときに"closesocket"関数がpostgres.hとport.h内で再定義(redefined)された という警告が出力されます。 こういう場合、何か回避するよい方法がありますでしょうか? 今のところpostgres側のヘッダ(port.h)に #define closesocket pg_closesocket とかすればよいのだろうかと考えていますがどのような影響があるかわからず躊躇しています。 ・Make時のログ In file included from /usr/local/include/postgresql/server/c.h:822, from /usr/local/include/postgresql/server/postgres.h:48, from mod_blog.c:9: /usr/local/include/postgresql/server/port.h:273:1: warning: "closesocket" redefi ned In file included from /usr/local/include/apache/httpd.h:29, from mod_blog.c:2: /usr/local/include/apache/ap_config.h:1084:1: warning: this is the location of t he previous definition ・ソースファイル(ヘッダ部) #include <string.h> #include "httpd.h" #include "http_config.h" #include "http_protocol.h" #include "ap_config.h" #include "http_log.h" #include "libapreq/apache_request.h" #include <postgres.h> #include <libpq-fe.h> <略>
360 名前:デフォルトの名無しさん mailto:sage [2006/10/09(月) 13:22:35 ] 警告出したくないだけなら/dev/nullにパイプしろ
361 名前:359 [2006/10/09(月) 13:29:00 ] 訂正です。 X Makeしたときに"closesocket"関数がpostgres.hとport.h内で再定義(redefined)された ○ Makeしたときに"closesocket"関数がap_config.hとport.h内で再定義(redefined)された >>360 いやそれだと意味が...;
362 名前:デフォルトの名無しさん mailto:sage [2006/10/09(月) 13:40:11 ] >>359 自作モジュールでclosesocketを使わなければうまく行く。 (と言うか問題があればリンク時にこけるので取りあえず無視して良い)
363 名前:デフォルトの名無しさん mailto:sage [2006/10/09(月) 13:40:14 ] >>361 どう回避したいのかいってないから、警告を表示したくないと思われても仕方ない罠
364 名前:デフォルトの名無しさん mailto:sage [2006/10/09(月) 13:41:04 ] >>363 知らんのなら出てくんなや。と言う正論。
365 名前:デフォルトの名無しさん mailto:sage [2006/10/09(月) 13:51:04 ] 知った上で書き込めるのはエスパーだけ!
366 名前:デフォルトの名無しさん mailto:sage [2006/10/09(月) 13:53:03 ] >>365 そこそこ回答が上がってるわけですがw
367 名前:デフォルトの名無しさん mailto:sage [2006/10/09(月) 13:56:45 ] じゃぁ、それで満足しておけよw
368 名前:359 [2006/10/09(月) 13:57:12 ] >>362 >>と言うか問題があればリンク時にこけるので取りあえず無視して良い) なるほどー 今のところ、モジュール自体は動いているし Makeがエラーを吐いてとまることもないので 実用上問題はないかも・・・と とりあえず postgresの関数の内部(PQfinishとか接続を切る系?) などの中で該当関数が使われてないかをみて影響範囲を絞り込んでみます。 ありがとうございます。 >>363 そうですねー 重複しているclosesocket関数が、内部的に衝突・上書きされずに共存する回避の仕方 がないかということです。
369 名前:デフォルトの名無しさん mailto:sage [2006/10/09(月) 14:17:22 ] #ifndef __WIN32__ #define closesocket close #endif みたいな感じだと思うけどねー。
370 名前:デフォルトの名無しさん [2006/10/10(火) 14:59:06 ] 任意の長さの文字列データをファイルから読み込み、辞書順に並び替えて最終結果のみを表示するプログラミングを作成せよ。ただし、データは改行で区切られており、文字列の最大長を64、データの最大個数を1000とする。 っていう問題が学校で出たんですけど、誰か教えてくれませんか。
371 名前:デフォルトの名無しさん mailto:sage [2006/10/10(火) 15:00:13 ] >>370 先生に聞け
372 名前:デフォルトの名無しさん mailto:sage [2006/10/10(火) 15:20:36 ] 辞書順の定義が謎だね。出題者(センセ)は分かってるんだろうか。 アルファベットだけでも aAbBなのかAaBbなのかabABなのか ABabなのかはロカールによって違う。 ロカール指定で済むなら、strcmpの代わりにstrcollを使えば LC_COLLATEを見てくれるので話ははやいが。
373 名前:デフォルトの名無しさん mailto:sage [2006/10/10(火) 16:01:45 ] UNIX関係ない質問に答えている人って馬鹿なんでしょうか?
374 名前:デフォルトの名無しさん mailto:sage [2006/10/10(火) 16:04:31 ] 関係ない上に重箱の隅w
375 名前:デフォルトの名無しさん mailto:sage [2006/10/10(火) 22:22:53 ] 釣りだろ。373に答える奴は馬鹿かとも言ってるわけだから。
376 名前:デフォルトの名無しさん mailto:sage [2006/10/11(水) 02:34:40 ] >>370 system("sort");
377 名前:デフォルトの名無しさん mailto:sage [2006/10/11(水) 04:56:51 ] >>376 おそれいった。
378 名前:デフォルトの名無しさん mailto:sage [2006/10/11(水) 23:15:38 ] >>文字列の最大長を64 ぬるい。 どうせなら文字列は可変長、リストに格納しつつソートとか のほうが実践的
379 名前:デフォルトの名無しさん mailto:sage [2006/10/11(水) 23:51:43 ] >>378 実戦で底までせなあかん局面がない。
380 名前:デフォルトの名無しさん mailto:sage [2006/10/12(木) 01:00:06 ] メモリ資源の乏しい計算機でも実行できるというメリットがある
381 名前:デフォルトの名無しさん [2006/10/19(木) 11:41:06 ] コマンド実行で誤って*******(アスタリスク7文字)を入力したら subjectの入力となりました。 mailコマンドを実行したわけでもなく原因がわかりません。 ご教授よろしくお願いします。
382 名前:デフォルトの名無しさん mailto:sage [2006/10/19(木) 11:46:27 ] echo ******* とかやってみ。たぶん先頭にMailがいるんじゃないか?
383 名前:デフォルトの名無しさん mailto:sage [2006/10/19(木) 11:53:58 ] >>381 鼬害。シェルにおける'*'の意味を考えれば、何が起きたか判るはず。
384 名前:デフォルトの名無しさん [2006/10/19(木) 22:05:28 ] >>383 それを説明しろ できねんだろ?
385 名前:デフォルトの名無しさん mailto:sage [2006/10/20(金) 00:17:47 ] ありゃりゃ?そこにからむのか?w
386 名前:デフォルトの名無しさん [2006/10/21(土) 22:48:10 ] すみません。どなたか教えてください。 cout << "こんにちは" << endl; を含むコードをコンパイルし、実行したところ、"こんにちは"の部分が文字化けして、読めません。 OSはCent OS4.3です。
387 名前:386 [2006/10/21(土) 22:49:39 ] どうしたら、日本語の出力ができるようになるんでしょうか?
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で書けばいいじゃん 最終的にノード単位で結合すればいいんだし もし設定ファイル読むのに遅いとかいいだしたら 勝手にやって暮れだが