[表示 : 全て 最新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


331 名前:デフォルトの名無しさん [2006/10/02(月) 23:08:27 ]
だれか教えて。
Makefileで環境変数(PATH)を変更したいのです。
現在設定されているPATHの先頭に/aaaを追加するには
どう記述すればよいですか

332 名前:デフォルトの名無しさん mailto:sage [2006/10/02(月) 23:52:36 ]
>>331
PATH=$(PATH):/aaa

333 名前:デフォルトの名無しさん mailto:sage [2006/10/02(月) 23:55:44 ]
PATH=/aaa:$PATH

334 名前:331 [2006/10/03(火) 00:18:02 ]
ありがとう^^
試してみます。

335 名前:デフォルトの名無しさん mailto:sage [2006/10/03(火) 09:41:22 ]
>>333
括弧つけろよ。

336 名前:デフォルトの名無しさん mailto:sage [2006/10/04(水) 01:51:39 ]
>>321って何?

337 名前:デフォルトの名無しさん mailto:sage [2006/10/04(水) 01:59:02 ]
>>336
動かしてないけど、連続した数の列を吐くスクリプトだな。

その上にある質問(>>317)への回答(>>318)に出てきたGNUのseq(やBSDの
jotだっけ?)は移植性がないので、スクリプトとして作ったわけ。

スクリプトのはじめの長いif文は引数の数によって、開始値・終了値・刻みを
セットしている。(case $# in...のほうが見やすいかも)

338 名前:デフォルトの名無しさん mailto:sage [2006/10/04(水) 16:02:10 ]
esac だけはいまだに慣れない

339 名前:デフォルトの名無しさん mailto:sage [2006/10/04(水) 16:12:40 ]
caseだとこうか。

case $# in
1) FIRST=1; INC=1; LAST=$1;;
2) FIRST=$1; INC=1; LAST=$2;;
3) FIRST=$1; INC=$2; LAST=$3;;
*)
[ $# -lt 1 ] && echo missing operand 1>&2
[ $# -gt 3 ] && echo missing operand 1>&2
exit 1;;
esac



340 名前:デフォルトの名無しさん mailto:sage [2006/10/05(木) 10:21:44 ]
マイナスになることはないので、0)と*)でいいのではないか?

341 名前:デフォルトの名無しさん [2006/10/08(日) 01:31:24 ]
すみません、突然なんですけど
昨日プログラミングの講義で課題を出されて
eのx乗を求めるプログラムを作れと言われて
困ってます。昨日からずっと考えてるんですが
全くわかりません。
どなたか教えてもらえませんか?


342 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 01:48:32 ]
pow関数使ってもいいのか?

343 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 01:49:04 ]
昨日からずっと考えてるって…
何を、どんな知識をベースに考えてたんだ?

単純に、こういうことなんじゃないのか?
www.google.co.jp/search?hl=ja&q=%22math.h%22+log&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja


344 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 02:08:30 ]
>>341
UNIX関係あるのか?
math.h使わないとして普通に考えても
0乗なら 1
1条なら e
x乗なら e^x
をしたらいいだけじゃないのか?

345 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 02:16:04 ]
xが整数とは限らないとちょっと面倒かも
つか宿題スレ池

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

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の出力なんかパース
もしかして、フォーマットを木目細かく指定できることをご存知内のだろうか。

489 名前:デフォルトの名無しさん mailto:sage [2006/12/15(金) 07:27:53 ]
ここもtips自慢大会か



490 名前:デフォルトの名無しさん mailto:sage [2006/12/15(金) 09:30:27 ]
NGワーオ:バッドノウハウ

491 名前:デフォルトの名無しさん [2006/12/16(土) 10:58:01 ]
pc8.2ch.net/test/read.cgi/tech/1164951094/298
> 分かりやすくMakefileの書き方が載ってるサイトがあれば教えてください

GNU makeのinfoがいいと思います。入門にも、リファレンスにもできる。
↓まずはこの節から。
Makefile入門
www.ecoop.net/coop/translated/GNUMake3.77/make_2.jp.html#SEC4

492 名前:デフォルトの名無しさん mailto:sage [2006/12/16(土) 14:08:41 ]
>>491
ありがとうございます。
今から挑戦してきますね。

493 名前:466 mailto:sage [2006/12/19(火) 07:45:47 ]
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3218.txt

これを理解しないと次の授業からついてこれなくなるといわれたのですが、
何をしているのかが全くわかりません。どなたかコメントで解説つけていただけないでしょうか。

494 名前:デフォルトの名無しさん mailto:sage [2006/12/19(火) 08:02:04 ]
二進木の操作

495 名前:デフォルトの名無しさん mailto:sage [2006/12/19(火) 09:23:16 ]
UNIX関係ねーし。

LOOP1:
fprintf(stdout," followed by any nonnumeric character:");
if(scanf("%d",&x) != 1){ goto LOOP1END; }
Insert(&root, x);
goto LOOP1;
LOOP1END:

ワロタ

496 名前:デフォルトの名無しさん mailto:sage [2006/12/19(火) 09:34:13 ]
whileを知らんのか

497 名前:デフォルトの名無しさん mailto:sage [2006/12/23(土) 05:50:37 ]
fopenを使って書かれたプログラムを、ofstreamを使って書き換えています。
ファイル記述子の必要な関数fsyncを使いたいのですが、ファイル記述子は
どのように取得すればよいのでしょうか?

498 名前:デフォルトの名無しさん mailto:sage [2006/12/23(土) 10:34:36 ]
fileno (3)

499 名前:デフォルトの名無しさん mailto:sage [2006/12/23(土) 11:05:58 ]
こうかな?
stream.rdbuf()->fd()



500 名前:デフォルトの名無しさん mailto:sage [2006/12/23(土) 11:35:47 ]
↑いやうそです。どこでもつかえるわけじゃないらしい。

501 名前:デフォルトの名無しさん mailto:sage [2006/12/23(土) 14:39:44 ]
support.microsoft.com/kb/148505/ja
windowsだとこうみたいだね。

502 名前:デフォルトの名無しさん [2006/12/24(日) 23:34:32 ]
ところで、
 /proc/<pid>/stat/utime
 /proc/<pid>/stat/stime
ってどの関数がどのくらいの周期で
書き込んでいるのでしょうか?

503 名前:デフォルトの名無しさん mailto:sage [2006/12/24(日) 23:50:09 ]
スケジューラが、CLOCK_TICK_RATEで。

504 名前:デフォルトの名無しさん [2006/12/25(月) 00:00:32 ]
>>503
scheduler_tick でしょうか?それとも schedule ?
それらしき箇所が見あたりません。
できれば、何という関数で書き込んでいるのか教えてください。


505 名前:デフォルトの名無しさん mailto:sage [2006/12/25(月) 01:04:11 ]
そういうのって、読み出すときに値(カウンタ)を取得して返すんじゃないのか?

506 名前:デフォルトの名無しさん mailto:sage [2006/12/25(月) 11:30:47 ]
ほんとにファイルがあるわけじゃないしねぇ・・・

507 名前:デフォルトの名無しさん mailto:sage [2006/12/25(月) 11:33:27 ]
カウンタが更新されるタイミングを聞いていると思ったが、
/procを勘違いしている可能性もあるのか。

508 名前:デフォルトの名無しさん mailto:sage [2006/12/25(月) 12:45:24 ]
procfsのソース嫁

509 名前:502です [2006/12/25(月) 12:46:56 ]
■505さん
>そういうのって、読み出すときに値(カウンタ)を取得して返すんじゃないのか?
cat /proc/<PID>/stat を実行した時に cat が値を読み込むと言うことでしょうか?

■506さん
>ほんとにファイルがあるわけじゃないしねぇ・・・
たぶん、その辺が理解できていないのだと思われます。
#自分で書くのもなんですが。

■507さん
>/procを勘違いしている可能性もあるのか。
勘違いしています。もし、その辺のことが詳しく記載されている
書物があればご教示下さい。

すみません。(;。;)



510 名前:デフォルトの名無しさん mailto:sage [2006/12/25(月) 12:54:16 ]
>>509
/procは本当のファイルじゃなくて、カーネル内の情報を取り出すための仕組み。
それらを読もうとすることはカーネル内のデータを取り出す事に相当する。
そこらへんはドライバレベルでうまいことやってるので、
読み込んでるプログラムからは本当のファイルなのか、
/procのような仮想的なファイルなのかは見分けがつかない。

511 名前:デフォルトの名無しさん mailto:sage [2006/12/25(月) 12:55:48 ]
/proc以下のファイルは、(procファイルシステムは)
ファイルじゃなくて、ファイルのように振る舞うもの。

ファイルだって実際ファイルがあるんじゃなくて、
ファイルシステムがあるかのようにdisk I/Oしてるんだしね。

512 名前:502です [2006/12/26(火) 00:36:31 ]
■510さん、511さん
有り難うございます
もう少し修行を積んで再度出直します。



513 名前:デフォルトの名無しさん mailto:sage [2006/12/28(木) 20:16:54 ]
iconv の変換ディスクリプタが指している converter が保持している
変換の状態 (shift の状態など) を,丸々コピー (clone) して
新しいディスクリプタを作成することってできないですよね?できないですよね……

514 名前:デフォルトの名無しさん mailto:sage [2006/12/28(木) 20:26:49 ]
iconv_duplicate関数があるよ










ウソ

515 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 02:08:18 ]
自前の暗号処理をしようと思って
crypt_des.c
を見てるんですが export されているのは crypt_des だけなんですけど
do_des とか des_chipher とかを export しなおして
自分のプログラムから使っても大丈夫ですか?
コメントには輸出規制が云々と書かれているのでちょっと心配です。


516 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 02:47:38 ]
北朝鮮とかリビアに輸出する予定がなければ大丈夫

517 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 10:22:49 ]
輸出規制のほうもexportと出てくるからややこしいな。


518 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 19:33:54 ]
crypt_desは実際にはDESそのものを使っているとは言えないところを
グレーゾーンにして上手く逃げているんじゃないかな
だからdo_desを勝手に使うとまずいと思うよ
export禁止なのが輸出禁止なのか文字通りexport禁止なのかが良く分からないね
対象は米国外輸出だったと思うから北朝鮮とかリビアは関係ないんじゃないかな


519 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 19:48:16 ]
法律が変わって同盟国には輸出OKになったんじゃなかったっけ?
IE5.01あたりで暗号強度が128bitになったのはそのおかげだし



520 名前:デフォルトの名無しさん mailto:sage [2007/01/04(木) 08:23:13 ]
くだらない質問ですいませんlll
親プロセスに対するシグナルは全ての子プロセスにも送られるんでしょうか?

521 名前:デフォルトの名無しさん mailto:sage [2007/01/04(木) 19:45:11 ]
送られない。送りたいなら「シグナル プロセスグループ」でぐぐれ。

522 名前:デフォルトの名無しさん mailto:sage [2007/01/04(木) 20:03:00 ]
送られない

523 名前:デフォルトの名無しさん mailto:sage [2007/01/04(木) 20:05:12 ]
送りたいなら

524 名前:デフォルトの名無しさん mailto:sage [2007/01/05(金) 01:02:15 ]
親が子プロセス生成時にid全部残しておいて
自分でシグナルハンドリングしてしまえばいい

525 名前:デフォルトの名無しさん mailto:sage [2007/01/05(金) 04:38:32 ]
ありがとうございます!

526 名前:デフォルトの名無しさん [2007/01/11(木) 00:53:23 ]
デーモンについて質問です。
デーモンプロセスを作ろうと思って
childをforkして親プロセスを終了させたりとか
詳解UNIXプログラミング通りにやりました。
どうやらうまくいったっぽいのですが、
できたプログラムがすぐにExitして終了してしまいます。

while(1)
とかでループしたりとかすると、cpu使用率が90%以上になってしまいました。

目標としては、STDINからの入力を待って、いろいろ処理した後
STDOUTに結果を返して再び入力待ちに移行するデーモンを作りたいのですが、
SIGIOを感知するまでpauseするというところまではなんとなくわかった
(つもり)なのですが、
参考になるソースコードや何かヒントだけでもいただけませんでしょうか
よろしくお願いします。

527 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 01:03:58 ]
sleep(1)とか呼ぶと100%にはならないかな


528 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 01:23:41 ]
select(2)は?


529 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 01:43:08 ]
STDINから読もうとしたらブロックする(止まる)でしょ
非同期IO使ってるんじゃなければSIGIOは関係ないんじゃないの



530 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 02:17:38 ]
>>526
> 参考になるソースコード

tail -f とかどうよ。


531 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 11:53:54 ]
デーモンだから標準入出力閉じてるに7300スティーブンス

532 名前:デフォルトの名無しさん [2007/01/11(木) 20:14:52 ]
ぽまえらどこで髪切ってんの?
俺は当然ここだぜ。www.unix.co.jp/

533 名前:526 mailto:sage [2007/01/12(金) 00:32:43 ]
どうもです。

>>527
pause()でどうやらcpu使用率0%で静止してくれました。
sleep(1)だと一瞬でsleepがとかれるみたいで・・

>select(2)
manをよんでみましたーまだよく理解できてませんが試してみます。

>tail -f
ううむなるほど、ありがとうございます。srcをあさってみます

>>529
そうですね...
なんとなくソケットのListenみたいなもののほうが近い気がしてきました。
スティーブンス本のネトワク2巻、IPCあたりを読み込んでみます。

ありがとうございましたー





534 名前:デフォルトの名無しさん mailto:sage [2007/01/12(金) 06:06:30 ]
関係ない横レスですいませんが
他のスレッドの終了を待つような処理は
while(スレッドの終了フラグ){
 sleep(1);
}
とかいう感じで待つしかないんでしょうか?

535 名前:デフォルトの名無しさん mailto:sage [2007/01/12(金) 06:11:06 ]
pthreadならjoinとか状態変数で合図するのを待つとか

536 名前:デフォルトの名無しさん mailto:sage [2007/01/12(金) 06:34:33 ]
pthreadです
ちょっと調べてみましたがデタッチについても理解していませんでした
とりあえず上の質問はナシということでお願いします

537 名前:デフォルトの名無しさん mailto:sage [2007/01/20(土) 02:55:58 ]
日本語を使えるcursesで標準のものってあるんでしょうか?

538 名前:デフォルトの名無しさん [2007/01/22(月) 00:04:02 ]
UNIX上で稼動するCのプログラムを作っていますが、その際
C言語のソースをWindows PCにてCVS管理しています。
下記のような段取りでやっているのですが、初心者のため、
詳しい皆さんはどんな手順で行っているのか知りたいと思います。
効率よくできる方法、一般的な方法(下記のような手順はおかしい、etc)等、
もしあればご教授いただきたく。

@必要なソースをチェックアウトし、Windows PCにて修正(エクリプス使用)
A修正したファイルをFTPでUNIXサーバにアップロード
BUNIX上でmakeを使用しコンパイル
CUNIX上で稼動確認し、問題なければソースをチェックイン

使用している環境は。。。
CVS用マシン ・・・     Windows XP
ソース修正用マシン ・・・  Windows 2000
実際に稼動するサーバ ・・・ HP-UX 11i v2

539 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 00:18:43 ]
漏れなら5分で不機嫌になって15分でブチ切れそう。



540 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 00:19:04 ]
>>538
・Unix上で編集しない理由は?
・稼動確認前にコミットしない理由は?
・最終確認をexport版で行なわない理由は?

541 名前:デフォルトの名無しさん [2007/01/22(月) 00:26:47 ]
全部秀丸を遣っているオレにはなんともいえん

542 名前:デフォルトの名無しさん [2007/01/22(月) 00:39:23 ]
>>540
稼動確認前にコミットはしねぇだろ。
複数人で開発しているのならなおさら。
チェックアウトしてテストしようとして担当外のところが問題で
うごかなかったら普通きれるぞ。

後なんだexport版って?

543 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 00:44:24 ]
とりあえず、HP側のビルドするディレクトリをWin2kにマウントしとけば、
いちいちftpする手間がなくなってストレスがかなり減るぜ。

544 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 00:46:37 ]
>>542
>export版
cvs exportで取り出したもの。CVSディレクトリがつかないから、リリース用に使うのに都合がいい。
>稼動確認前にコミット
何のためにブランチがあるとお思いで?
稼動確認を行なった版が管理されないとしたら、稼動確認のエビデンスをどうやって残すの?
#まぁ、コンパイルが通るかどうか位は当然コミット前にやるとして。

545 名前:デフォルトの名無しさん [2007/01/22(月) 00:49:10 ]
全部viを遣ってるオレにはなんとも言えん

546 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 00:53:16 ]
544はあまり相手にしないほうがよさげ

547 名前:デフォルトの名無しさん [2007/01/22(月) 01:00:06 ]
わざわざcvs exportして確認する必要ないだろ。

ブランチはなんの関係があるんだ?
コミットの度にブランチ切ってんのか?笑


548 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 01:15:05 ]
>>547
安定するまではブランチで作業するし、他人はそのブランチを使わない。
それだけのこと。

最終版をexportでやるのは、開発機とリリース機が違うときに便利。
それ以外では、リリース版をアーカイブするときにCVSディレクトリが邪魔にならずに済む程度のメリット。

549 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 01:17:56 ]
そういう豆知識が求められてる場面じゃないからw



550 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 08:59:05 ]
マメ知識だったのかw

551 名前:デフォルトの名無しさん mailto:ググってもヒントすら見つからないorz [2007/01/22(月) 15:04:08 ]
CentOS 4.4 x86_64で以下のようなプログラムを走らせると、
errno=22(Invalid argument) のエラーになってしまいます。

#include <errno.h>
#include <sys/quota.h>
int main( void ) {
int result;
struct dqblk quotaStatus;
result = quotactl( QCMD(Q_GETQUOTA,USRQUOTA), "/dev/hda8", 500, (caddr_t)"aStatus );
printf("result: %d, errno: %d: %s¥n", result, errno, strerror(errno));
return 0;
}

/dev/hda8(/home) に /home/aquota.user /home/aquota.group は存在します。
UID 500のユーザも存在します。repquota -a や edquota admin も問題ありません。
quotaの設定は以下のような手順で行いました。

/etc/fstab の /home のところに defaults,noatime,usrquota,grpquota を記述
mount -o remount /home
touch /home/aquota.user
touch /home/aquota.group
chmod 600 /home/aquota.*
quotacheck -mugv /home
quotaon -auvg

どなたか原因分かりませんか?

552 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 15:32:42 ]
納品するシステムのコンパイル時に、単純にコピーされるのを防止するため
ハードウェアIDなどを組み込んでコンパイルしたいのですが、
ハードウェア依存で、できるだけ高速で取得でき、
、呼び出し時間の短いシステムコールなどはありますでしょうか?

553 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 18:28:00 ]
>>552
激しく環境依存なので OS 次第じゃないかな。
dmesg とか sysctl とかの出力は使えそうですか?


554 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 18:49:07 ]
HDのmbrのシリアル番号を見ているソフトがある
他にはNICのMACアドレスとか
替えられない訳じゃないけど

555 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 19:23:27 ]
>>552
機械の故障でユーザが代替品を使用せざるを得ない場合などに備えて、
マシン側で変更できるものが望ましい。
たとえばNICのMACアドレスなんかはそれを見てるものが昔からあるので
ほとんどのもので変更可能になっている。

556 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 19:38:59 ]
コピー防止だけどそのレベルで大丈夫?

557 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 20:16:09 ]
ドングルでもつけてioctlで叩けば〜

558 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 21:44:19 ]
>>553-557
どうもありがとうございます。
システムが飛んだら再コンパイル必須の使い切りシステムなので、HDDのmbrから調べてみます。

559 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 21:46:18 ]
ディスクまるごとコピーするツールがあるけど大丈夫?



560 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 21:50:51 ]
>>559
まずいです
通常は変更不能のものってありますか?

561 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 21:54:00 ]
CPUID

562 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 00:18:55 ]
>>560
そこまで厳密に制限したいのであれば、ハードウェアの
色々な情報をまとめて md5 してみるとかどうでしょう?
もちろん md5 の値をさらに可逆の暗号処理すると良いですね。


563 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 00:44:37 ]
md5sumで十分でしょ。

cat /proc/cpuinfo とか
lspci -vs 00:00.0 とか

そんなのをmd5sumすれば?


564 名前:562 mailto:sage [2007/01/23(火) 01:35:14 ]
まぁ md5 で十分とは思うのですが、strings(1) とかを使うと
色々と漏れちゃうので、ちょっとした計算式でシフトできたりすると
良いかなぁと思ったのです。気にしすぎかな?


565 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 02:45:20 ]
そのくらいしたほうがいいと思います

566 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 04:22:37 ]
MD5をわざわざ文字列にしたりしなけりゃ、少なくともstringsで出てきたりはしないと思うんだけど。

567 名前:551 mailto:sage [2007/01/23(火) 06:07:52 ]
自己解決しました。

#include <sys/quota.h> の前に
#define _LINUX_QUOTA_VERSION 2 を付けてやればOKでした。

568 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 07:32:24 ]
>>562
もしLAN常時接続が可能ならサーバー側にDB用意して
アクティベーションしないと使えないようにするとか

569 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 08:27:05 ]
つ[LisenceManager]



570 名前:デフォルトの名無しさん [2007/02/04(日) 17:49:07 ]
execl()と、execlp()の違いを教えてください。
初心者ですまそ

571 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 17:55:13 ]
ttp://www.linux.or.jp/JM/html/LDP_man-pages/man3/exec.3.html

ttp://www.paw.hi-ho.ne.jp/takadayouhei/technic/5.html


572 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 17:55:19 ]
p付はPATHから探してくれる。


573 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 17:55:24 ]
>>570
pがつくかつかないか。つまり、path探索をするかしないか。

574 名前:570 [2007/02/04(日) 17:58:16 ]
>>572
>>573
つまり、pが付いたらコマンドライン引数だけでいいってことでしょうか?

575 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 18:02:37 ]
第1引数をフルパスで書く必要があるか、PATHにあるから名前だけでいいか、
てこと。


576 名前:570 [2007/02/04(日) 18:04:19 ]
>>575
なるほど〜分かりました。
ありがとうございます

577 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 18:27:35 ]
おまえら優しいな

578 名前:デフォルトの名無しさん mailto:sage [2007/02/07(水) 18:16:19 ]
gcc(g++)にはVC++におけるReleaseビルドとDebugビルドのような概念はないんでしょうか?

579 名前:デフォルトの名無しさん mailto:sage [2007/02/07(水) 18:25:52 ]
VC++のリリースビルドとデバッグビルドの違いを理解してからおいで。




580 名前:デフォルトの名無しさん mailto:sage [2007/02/07(水) 18:26:41 ]
オプションに-O2(とかそのほか最適化オプション)つければReleaseビルド。

581 名前:デフォルトの名無しさん mailto:sage [2007/02/07(水) 18:29:04 ]
デバッグ/リリースごとの条件コンパイルのためのプリプロセッサ
シンボルもあるだろうね。
あと、-gオプション。


582 名前:デフォルトの名無しさん mailto:sage [2007/02/07(水) 19:09:40 ]
最近のVCはReleaseでもデバッグ情報ついてるよ。

583 名前:578 mailto:sage [2007/02/07(水) 20:53:56 ]
ありがとうございました!

584 名前:デフォルトの名無しさん mailto:sage [2007/02/07(水) 22:37:33 ]
sspとか

585 名前:デフォルトの名無しさん mailto:sage [2007/02/09(金) 05:26:16 ]
セッションを大量に張るアプリケーションのソケットの処理にAIOを使うってのはどうなんでしょう?
スレッドベースのハンドラを使うとたくさんのソケットがある分スレッド生成にコストがかかりそうですし
シグナルベースよりはepoll()やkqueue()の方が効率的なのかなーと思ってはいるんですが
最近AIOに興味を持ってこんなことを妄想してたんですが皆さんはどう思われます?

586 名前:デフォルトの名無しさん mailto:sage [2007/02/09(金) 20:31:47 ]
aioってkqueueで待てた気がするけど。

587 名前:デフォルトの名無しさん mailto:sage [2007/02/10(土) 05:05:17 ]
確かにEVFILT_AIOってのがありますねぇ。
便利でいいなぁ。Linuxにもこんなシステムコールあればいいのに。

588 名前:538 [2007/02/10(土) 07:00:49 ]
>>539−550
アドバイスありがとうございます。
特に、マウントするというやり方は、当方まったく気がつきませんでした。
いろんなご意見いただいてありがたかったです。

今後も効率いい作業方法を意識していろいろtryしてみます

589 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 06:14:56 ]
どうもaio_read()呼ぶと内部でpthread_create()が呼ばれてる感じ
スタック使い切って死にそうなので大量のセッション管理には向かないのかな



590 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 08:06:43 ]
内部で、て……。aio_readはシステムコールだぞ。
なんでユーザプロセスのスレッドなんか生成しなきゃならん。

591 名前:デフォルトの名無しさん mailto:sage [2007/02/16(金) 16:07:36 ]
>>589
それはWin9xのWinsock2-overlappedI/O実装

592 名前:デフォルトの名無しさん [2007/02/20(火) 00:48:16 ]
fifo と unix ドメインソケット、どう使い分けたらいいのかを教えてください。

593 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 01:30:34 ]
fifoは親子関係のないプロセス間で使うのに便利

594 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 01:53:08 ]
unixドメインソケットも親子関係のないプロセスで使うと便利!

595 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 15:17:14 ]
fifoはunixドメインソケットを使って実装されている 事もある

596 名前:デフォルトの名無しさん [2007/02/21(水) 00:39:37 ]
whileとforの違いがよくわからないんでお願いします。
あと、最後に;(セミコロン)をつけるのは何のときで、つけないのが何のときか教えてください。

教科書見てもイマイチよくわからなくて・・・

597 名前:デフォルトの名無しさん mailto:sage [2007/02/21(水) 00:50:04 ]
>>596
とりあえず使おうとしてる言語はなんなのか言ってみ
シェルのことか?

598 名前:デフォルトの名無しさん mailto:sage [2007/02/21(水) 00:54:39 ]
あ、すんません。C言語です。
めっちゃ基礎的なことだけどおねがいします。

599 名前:デフォルトの名無しさん mailto:sage [2007/02/21(水) 01:08:32 ]
whileもforも繰り返し行う処理(ループ)を行わせるものだが、

while (式) 文
「式を評価(値を求めること)し、それが0でない場合は 文を実行」
を繰り返し行う。

for (式1; 式2; 式3) 文
式1を評価する。
そのあとは、
「式2を評価し、それが0でない場合は 文 を実行。ついで式3を評価」
を繰り返し行う。

つまりは、
式1;
while (式2) { 文; 式3; }
とほぼ同じ意味。

なお、文とは
- 式に;を付けたもの
- { 複数の文 }
のどちらか。forもwhileも文は1つしかかけないので、複数の文を
繰り返し処理したい場合は { } で囲む。

(実際には1つであっても囲んで構わないし、ヒューマンエラーを避ける
意味ではそのほうが好ましい)




600 名前:デフォルトの名無しさん mailto:sage [2007/02/21(水) 01:10:09 ]
C言語なら俺に聞け(入門篇) Part 8
pc10.2ch.net/test/read.cgi/tech/1171946674/

こっち向きだろうね。


601 名前:デフォルトの名無しさん mailto:sage [2007/02/21(水) 01:11:29 ]
>>599
ありがとう!なんとなくわかったような・・・わからないような・・・
もっかい教科書見直してみるわ。
>>600
あ、そんなスレあったのか。こんどからはそっちで。

602 名前:デフォルトの名無しさん mailto:sage [2007/02/21(水) 01:12:40 ]
訂正

式1;
while (式2) { 文; 式3; }

式1;
while (式2) { 文 式3; } まぁ空文が1つあるかないかだけど。

あと「それが0でない場合」しか書かなかったが、0になったら
繰り返しを終えて次に進む。


603 名前:デフォルトの名無しさん mailto:sage [2007/02/21(水) 20:12:39 ]
forは式を省略できるが、whileはできないってのも。
永久ループを作るときに、forなら
for(;;)文
で大丈夫だけど、whileだと
while(1)文
の様に書かないといけない。
これは1を評価するという冗長な意味を持つので、for(;;)の方がよく使われてる。
(;;) <- これが顔文字みたいでかわいいし。

604 名前:デフォルトの名無しさん mailto:sage [2007/02/21(水) 21:31:32 ]
>>603
最後の2文はおまいの思いこみだw
面白いけどw

605 名前:デフォルトの名無しさん mailto:sage [2007/02/21(水) 21:41:24 ]
while (1)はイデオム化しているので、読むほうも「1が0でない限り」
などとは読まないから問題ない。

生成されるコードも大差ない。
MacOSX 10.4.8, gcc 4.0.1 (Intel) でやってみたら、
while (1) { puts("hello"); } / for (;;) { puts("hello"); } いずれも
「文字列のアドレスをスタックに積んでputsをcallしてループの頭にジャンプ」
という全く同じコードになった。


606 名前:デフォルトの名無しさん mailto:sage [2007/02/21(水) 21:49:27 ]
for(;;)は無限ループを表すためだけにANSIが規格化した代物。

607 名前:デフォルトの名無しさん mailto:sage [2007/02/21(水) 22:37:36 ]
FreeBSD6.2だと
grep -R 'for *(;;)' /usr/src | wc -l
2322
grep -R 'while *(1)' /usr/src | wc -l
883
だから、やっぱりfor(;;)の方が優勢と思う。
確かにwhile(1)はイデオム化してるから問題はないと思うけど、
もしも、全く最適化をしないコンパイラがあれば、少しだけ無駄なコードになるはず、、
まぁそんなことは重要じゃないので、見た目のいい方を選べばいいと思います。

608 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 19:42:26 ]
以下のMakefileの
$(OBJS): $(HEADS) Makefile
行は何をしているのでしょうか?

ttp://www-or.amp.i.kyoto-u.ac.jp/algo-eng/db/template/Makefile.nsrc1bin

609 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 21:02:27 ]
>>608
スレ違い。



610 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 21:25:06 ]
>>608
make makes many problems
pc11.2ch.net/test/read.cgi/tech/1029599472/
あたりか?

一応答えておくと、
$(OBJS)内のファイルに依存性を追加しているだけ。
この行自体は何もコンパイルしたりしない。
「$(HEADS)のファイルいずれかかMakefileが書き換えられたら
$(OBJS)のすべてのファイルはコンパイルし直しとなる」という宣言。


611 名前:608 mailto:sage [2007/03/01(木) 21:52:57 ]
>>610
良くわかりましたありがとうございます
教えて頂いたスレにも書き込もうか迷ったのですが
過疎っており、都合上解答をできるだけ早めに頂きたかったので
こちらで質問させていただきました
助かりました

>>609
死ねカス
代替案出せないなら黙ってろ

612 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 22:51:45 ]
カスにカス呼ばわりされてもなぁ。makeスレは過疎ってたって巡回している人は沢山いると思うのだが。

613 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 22:58:01 ]
>>612
ごめんなさい
core吐きまくっててイライラしてて言い過ぎた
次は教えてもらったスレで紳士的に質問しますね

614 名前:デフォルトの名無しさん mailto:sage [2007/03/02(金) 22:03:55 ]
gccのプリプロセッサだけを使いたかったので、子プロセスでcppを起動して
パイプで出力を受け取ったのですが、EOFが来ません。
メインのプロセスはboost::iostream::file_descriptor_sourceで子プロセスの
出力を読み込んでいます。
どなたかお知恵を…

615 名前:デフォルトの名無しさん mailto:sage [2007/03/02(金) 22:13:13 ]
入力を閉じる

616 名前:デフォルトの名無しさん [2007/03/17(土) 01:01:16 ]
ヘタレ組込みPGです。
下記のようなプログラムが既存のものであるんだけど、sigactionをセットした上でスレッドをぼこぼこ作り、各スレッドにシグナル待ちをさせるコードがあるんだけどシグナルハンドらの関数は処理を何もしていません。
これってどういうことを狙ってるとき、処理なしハンドラを設定してるかわからないんですが、教えてもらえませんか?

void main(void)
{
act_SIGINT.sa_handler = funcA;
act_SIGINT.sa_mask = *sigset;
act_SIGINT.sa_flags = SA_RESETHAND;

sigaction(SIGUSR1,&act_SIGINT,NULL)

for(int i=0;i<5;i++)
{
pthread_create();
}

funcB(); // 実処理

}

funcA{
// 処理なし
}

funcB{
// 何か処理
pthread_kill(スレッドID,SIGUSR1);

}


617 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 01:33:49 ]
どっか別の場所でsigactionしなおしてるんじゃね?

618 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 13:12:48 ]
自作のshared objectを作って、その中の関数を呼ぶ別のプログラムを書いたんだが
どうやらshared objectの中にバグがあるようで、落ちる。
shared objectの中でgdbを使ってどこで落ちたのか調べたいのだから
shared objectを呼び出してるプログラムにgdbを適応してrunしてもshared objectの中まで
入ってくれない。
shared objectの中身をgdbでデバッグしたい場合はどうすればいいんでしょうか?
教えてください

619 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 00:37:58 ]
>>618
> 自作のshared object
のコンパイルオプションは???




620 名前:デフォルトの名無しさん [2007/03/29(木) 06:38:54 ]
プログラムが現在使用しているトータルメモリ量を取得する方法を教えてください

621 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 07:40:28 ]
先ずはあなたの言う、「プログラムが現在使用しているトータルメモリ量」を定義してください。

622 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 08:40:48 ]
>>620
/procを使う
perlならProc::ProcessTable::Process

623 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 11:38:11 ]
>>621
プログラムが確保したヒープとスタックと
内部でmallocしようとしてるサイズでいいんじゃね?
まあmallocで100ギガ確保しても使わなければ
メモリは使われないからそれを消費量というかどうかは
定義しなきゃだなぁ

624 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 14:10:03 ]
mallocした量とmalloc用のヒープ量(sbrk次第?)はまた違うかもしれない。
管理用のデータもあるだろうし。


625 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 19:24:14 ]
>>620
getrusage(2)

626 名前:デフォルトの名無しさん [2007/04/10(火) 21:53:49 ]
Windowsきたねえ!UNIXきれい!
でもWindows使いたい!UNIX使いたくない!
ふしぎ!!

627 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 08:11:21 ]
エロゲがみんなUNIXで動いたらどうでしょう。

628 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 13:02:39 ]
あるプログラムをFORTRANからCに書き換えています。
FORTRAN内の配列(かなり大きい)を、Cで同じサイズで確保しようとすると、
実行時に確保できない旨のエラーが出てしまいます。
両方とも同じマシン上で動かしているので、空き領域自体はあると思うのですが、
何か良い方法はないでしょうか?


629 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 13:05:23 ]
↑エスパー専用



630 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 13:13:58 ]
>>628
newをつかってみたら?

631 名前:630 mailto:sage [2007/04/12(木) 13:14:49 ]
動的に確保した方が、大きな値を取れたはず

632 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 13:17:36 ]
エスパー登場

633 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 13:23:25 ]
>>628
ソースコンバータで事は足りないの?

634 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 14:01:29 ]
スタック上に確保しようとして溢れてるってことか。
それならmalloc()とかでヒープに確保しないと。

635 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 14:38:50 ]
んな面倒なことしないでも、staticで宣言すりゃいいんでないかい。


636 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 20:37:23 ]
ulimit でスタックのサイズをでかくする

637 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 21:25:10 ]
limitで制限かけてあると思うけどな。
環境変数でも貼ってくれ。

638 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 18:44:13 ]
64bitマシンで32bitの整数を扱いたいのですが、int寄りも小さくshortよりも大きい整数はないのでしょうか?
C99を使うしかないのでしょうか?


639 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 19:17:07 ]
OSとコンパイラは?
gccのx86_64版でsizeof(int)は4だよ。



640 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 19:24:49 ]
>>638
LP64,LLP64,ILP64あたりでググれ。

641 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 04:41:26 ]
intってマシン長じゃないの?

642 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 05:12:16 ]
>>641
違うこともあるお⊂二二二( ^ω^)二⊃。x86_64とか。

643 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 06:55:21 ]
>>641
そうじゃない例はいくらでもあるが。

644 名前:質問。 [2007/05/02(水) 03:01:44 ]
あるプログラムから別のプログラムを立ち上げて、
その標準入出力を掴むプログラムをC言語で作りました。

forkで子スレッドを作って呼び出し先プログラムを実行、
パイプでそのstdin,stdoutを呼び出し元から読み書きするまでに至ったのですが、

呼び出し先としてsshやftpを立ち上げてみると、ログインパスワード要求時の
「Password:」 の表示が標準出力じゃないみたいで、
呼び出し元プログラムを通さず、画面に出てきてしまいます。
一体何故でしょうか? またこれの解決手段は何かありますか?

645 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 03:13:03 ]
stderrじゃね?

646 名前:質問。 mailto:sage [2007/05/02(水) 03:25:07 ]
>>645
いや、それもしっかり呼び出し元に送ってるんですが・・・。

647 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 04:27:16 ]
>>644
ssh などは /dev/tty にプロンプトを書いてる。


648 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 04:31:39 ]
>>644
たぶん君のやりたいことには、
ttyrecやscriptのソースが参考になる。

649 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 05:25:13 ]
>>644
> あるプログラムから別のプログラムを立ち上げて、 
> その標準入出力を掴むプログラムをC言語で作りました。 

そしてこの仕様に(ry



650 名前:質問。 mailto:sage [2007/05/02(水) 07:27:32 ]
ネットでいくらか調べてみたけど。。。
sshの自動ログインのパスワード入力突破はみんな悩んでるみたいね。
専用の鍵を作るだとかとても面倒なことになりそうな勢い。

さて、そろそろ寝るかorz

651 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 07:31:36 ]
そんなもん誰も悩んでないよ。
ssh-agent使えばいいんだから。
プログラミングですらない。

652 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 07:33:58 ]
マウスを操作して自動的にアプリのボタンをクリックするプログラムを作成するくらい不毛な話だ

653 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 07:50:53 ]
それだってtcl/tkのtestsuitsにあるけどなw

654 名前:648=651=653 mailto:sage [2007/05/02(水) 17:01:00 ]
そこでexpectですよ、となるわけかな?

655 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 00:29:57 ]
そこでExpectですよ
→ そしてTclが嫌になる
→ Perl/Ruby/Pythonとかのexpect風モジュールに逃げる
→ 本家本元のexpectほどのエレガントさや機能がなくてガクーリ
→ でもTclの糞さにInline::Tclに逃げたりRuby+Expectとかのハイブリッドコードを書き出す
→ 他人には理解不能に

いやほんとRubyのシンタックスならTclなみにエレガントにExpectできると
思うんだけどね。ベタなコマンドライン的記法にマッチしてるから。

656 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 01:17:02 ]
マジアフォだな。
マウスカーソルを横取りして駆動するドライバとか変な苦労しそう。
キーボードコントローラを乗っ取ってキー入力してみたりとか、GPUプログラミングして表示内容を取得とか。

657 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 21:52:44 ]
 質問をさせていただきます。
 UNIX上で動く簡単なftpデーモンを作っています。

 アクティブモードでクライアントとデータをやり取りするデータコネクションを繋ぐために、
FTPのPORTコマンドで受け取ったクライアントのIPアドレスとポート番号をsocket関数に渡して
ソケットを作り、connect関数でコネクションを繋ぎました。
 ここで20番ポートを使ってデータコネクションを繋ぐように本に書いてあったのですが、
サーバー側のポート番号はどこかで指定するのでしょうか?

 制御コネクションの接続の時にはbind関数で21番ポートを指定しましたが、それにあたるような
処理がconnect側にも必要なのでしょうか?

 どこかで根本的な勘違いをしてるのか、調べても解答を探すことができませんでした。
 お手数ですが、どなたがご助言をいただけないでしょうか?

658 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 00:03:42 ]
>>657
アクティブモードのデータコネクションは、FTPサーバからクライアントにコネクションを張りに行くわけだから
制御コネクションとは接続方向が逆って辺りは理解している?
まぁ、詳しくはネットワークスレを読めばリンクが出てくると思うけど。

659 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 01:19:45 ]
RFCちゃんと読んでる?



660 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 06:09:45 ]
>>657
サーバー側のポート番号を指定するのはPASVの場合

661 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 00:25:23 ]
PORTとかEPRTのばあいは黙ってconnectすればいい。
PASVとEPSVの場合は、bind-listen-acceptして待ち受けてればいい。

662 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 01:19:48 ]
>>658
その時のsrc portの話だと思われ。

>>657
制御コネクションを21番でbindしてlistenしたように、
データコネクションは20番でbindしてconnectすればいい。
bindせずにconnectすると適当なportが使われる。

663 名前:657 mailto:sage [2007/05/12(土) 01:27:58 ]
>>658-662
たくさんのご助言、ありがとうございました。
bindはacceptする側だけだと思い込んでいて、データコネクション側では20番ポートでbindしていませんでした。
さっそく、bindしてみます。
それでは失礼いたします。

664 名前:デフォルトの名無しさん [2007/05/14(月) 21:30:04 ]
javaファイルをpostscriptに変換して印刷しようとして
a2ps test.java
と入力したのですが、印刷されませんでした。
なぜですか?

665 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 21:47:58 ]
>>664
今時の a2ps は, 出力をかってに lpr あたりに食わしてくれるのか?


666 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 00:27:25 ]
はい






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前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