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


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

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



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


346 名前:デフォルトの名無しさん [2006/10/08(日) 02:22:40 ]
>>344
LINUXでやってます。
プログラミングの知識が乏しくて
プログラミングをかけないんです。
#include <math.h>
double log(double x);
って感じで書くんですけど・・・
その後がいまいちわからなくて・・・

347 名前:344 mailto:sage [2006/10/08(日) 02:27:22 ]
>>346
入門書読め

乗算以前にC言語の構文が理解できてない

348 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 02:41:50 ]
eが自然対数の底ならlog(x)じゃなくexp(x)でそのものずばりだろ。

349 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 03:13:13 ]
exp(x)関数使わせるだけの演習なの?

350 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 03:16:42 ]
構文が理解できてないようだから、構文の勉強中じゃないの?

351 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 05:41:59 ]
金払ってまで勉強する領域で講義もろくに聞いてないとは。

352 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 06:06:21 ]
俺も思う。

金払って勉強してるのに、なぜ答えてくれるかどうかもわからない2chなんかで聞くのか。
金払ってるんだから講師にでも聞けよ

353 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 10:22:06 ]
勉強でも遊びでも、学生時代の経験ってのは大切だ。

市民権のある立場を買ってると考えればよい。

354 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 13:26:51 ]
留学生には市民権はないぞ。
市民権というのは、citizenshipの訳語で、
政治参加の権利を持っている人のことだぞ。
ギリシャのポリス市民から来ている。




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してりゃいんじゃね?






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

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

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