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

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
UNIXおよびUNIX clone環境一般のプログラミングに関する質問スレッド

前スレ
Part3 http://pc5.2ch.net/test/read.cgi/tech/1085930894/
Part2 http://pc5.2ch.net/test/read.cgi/tech/1055110889/
Part1 http://pc2.2ch.net/tech/kako/992/992057422.html

>>2-20 関連スレ
2デフォルトの名無しさん:04/09/22 18:01:09
関連スレ
Cygwin使っている人いますか? その11(UNIX板)
http://pc5.2ch.net/test/read.cgi/unix/1076240971/
Cygwin使っている人いますか? Part2(Windows板)
http://pc5.2ch.net/test/read.cgi/win/1052361218/

関連板
http://pc5.2ch.net/unix/
http://pc5.2ch.net/linux/
3デフォルトの名無しさん:04/09/22 18:02:37
前スレの1000
>1000 名前:デフォルトの名無しさん 投稿日:04/09/22 17:50:58
>まずは自分の脳味噌をどうにかしろよ馬鹿が

それ以前にお前の脳味噌がどうかしてる
氏ね!
4デフォルトの名無しさん:04/09/22 18:04:47
前スレ997
>997 名前:デフォルトの名無しさん 投稿日:04/09/22 17:45:48
>unameもそうだけど、
>UNIXって意味不明な名前のコマンドだらけで嫌気が差した
>いいからメニューから全機能選べるようにしろよ
>イミフメコマンド文化なんか続けてるから一向に普及しないんだよ

はgふぇしくどうい!
つーかカテゴリ分けして機能から辿れるようにして欲しいよね!
5デフォルトの名無しさん:04/09/22 18:07:14
kill(getpid(), 9);
6デフォルトの名無しさん:04/09/22 18:26:55
【POSiX】
The Open Group Base Specifications Issue 6
IEEE Std 1003.1, 2004 Edition
http://www.opengroup.org/onlinepubs/009695399/toc.htm


【必読書】
Advanced Programming in the UNIX(R) Environment
http://www.amazon.com/exec/obidos/tg/detail/-/0201563177/

Unix Network Programming
Vol. 1: The Sockets Networking API, Third Edition
http://www.amazon.com/exec/obidos/tg/detail/-/0131411551/

UNIX Network Programming
Volume 2: Interprocess Communications (2nd Edition)
http://www.amazon.com/exec/obidos/tg/detail/-/0130810819/
7デフォルトの名無しさん:04/09/22 18:52:17
pthread_kill(pthread_self(), 9);
8デフォルトの名無しさん:04/09/22 18:53:46
9デフォルトの名無しさん:04/09/22 21:17:23
>>5>>7は何が言いたいのかわからん。
10デフォルトの名無しさん:04/09/22 21:24:14
kill -f 9
11デフォルトの名無しさん:04/09/22 21:25:28
たぶん前スレ1000の脳味噌あぼーんの人だろ
12デフォルトの名無しさん:04/09/22 22:44:15
単にUNIXに挫折した池沼が一匹粘着してるだけ。放っておけばよろし。
13デフォルトの名無しさん:04/09/22 23:05:59
もういいだろこのスレは
14デフォルトの名無しさん:04/09/22 23:19:02
いやでも、
UNIXで挫折って、わかる気がするなあ。
ずっと意味不明なコマンドの文字列打ってたら頭おかしくなりそうだし、
ずっと真っ暗なコンソール眺めてると鬱になりそうじゃん?
かといって思想のまるでないXは、オタ絵とただ沢山コンソール開くしか脳ないし、
こんなの与えても娯楽を常に要求する一般人は見向きもしない。
そもそもWebでしか見掛けない、哀れなOS、というのが一般人の見解だし。
そうそう、最近LindowsがUNIXの印象かなり悪くしたよね。
この事件でUNIXはビジネスで成功できないことがまた証明されてしまったわけだ。
昔からUNIXは関係者同士で常に足を引っ張って成長しない。
お金の匂いしないよね。全然。
そんなOSだから、挫折が常態であるのは必然なんだと思う。
15デフォルトの名無しさん:04/09/22 23:19:59
OS板にカエレ
16デフォルトの名無しさん:04/09/22 23:20:54
コピペ秋田
17デフォルトの名無しさん:04/09/22 23:21:50
釣られすぎ
18デフォルトの名無しさん:04/09/22 23:22:18
誰か、UNIXが生み出したバッド・ノウハウをリストしてくれ・・・

19デフォルトの名無しさん:04/09/22 23:30:25
>>18
こっちでやれ。

【哲】バッドノウハウについて語るスレ 2【学】
http://pc5.2ch.net/test/read.cgi/unix/1081220183/
20デフォルトの名無しさん:04/09/22 23:30:33
Ruby
21デフォルトの名無しさん:04/09/22 23:37:38
system("nslookup -type=MX hoge.com");
としてそこから得られたmail exchangeを自分のプログラムの中で使用したいのですが,
どうすればいいでしょうか?
22デフォルトの名無しさん:04/09/22 23:40:51
popen
2321:04/09/22 23:48:21
>>22
thx!
24デフォルトの名無しさん:04/09/22 23:48:36
ほらきた。
UNIX使いって貶されると、
すぐ言葉少なになるよね。
もう貶されるのに慣れちゃった?

ちょっと、心をおちつけて。
UNIXを知らなかったあの頃を思い出してごらん。
あの頃の君達は希望に満ち溢れていたよね。
そう、今まで君達は、とっても悪い夢を見ていたんだ。
UNIXなんか捨てて、あの頃見ていた希望を取り戻そうよ!
25デフォルトの名無しさん:04/09/22 23:55:51
adg
26デフォルトの名無しさん:04/09/23 00:01:46
このスレは汎用機の素晴らしさを語るスレになりました
どうぞ↓
27デフォルトの名無しさん:04/09/23 00:02:45
malloc/free論争から今までの流れにワロタ
28デフォルトの名無しさん:04/09/23 09:47:32
>>24
ちょっと面白い
29デフォルトの名無しさん:04/09/23 18:16:03
posix_trace_xxxという関数がGlibcにはないんですが、
他のUNIXにはありますか?
30デフォルトの名無しさん:04/09/23 18:50:21
やっぱりUNIXといえばSolarisですね
31デフォルトの名無しさん:04/09/23 20:13:07
SystemVを触ってみたい
32デフォルトの名無しさん:04/09/23 22:18:48
やっぱ森で胡桃を食べているって言われて思いつくのはあの動物だよな。
33デフォルトの名無しさん:04/09/26 02:30:54
34デフォルトの名無しさん:04/09/26 02:36:27
自分で実行ファイルをプログラムで作成したいのですが、
elfフォーマットとかの情報ってどっかに日本語で解説ないですか?
ターゲットはLinuxやFreeBSDです。とりあえず。
35デフォルトの名無しさん:04/09/26 04:29:51
Linkers&Loadersに載ってた気がするけど、今手元に無いんで確認できない。
36デフォルトの名無しさん:04/09/26 09:55:37
37デフォルトの名無しさん:04/09/26 14:11:57
ウィルスでも作るんですかね
38デフォルトの名無しさん:04/09/26 14:46:28
バイナリエディタで全部手打ちなんてカコイイ
39デフォルトの名無しさん:04/09/26 19:47:09
>>35
あれは、おおざっぱんにしか書かれてないのであまり役に立たないかと。
以下がいいと思う。英語だが大丈夫だろ?

Executable and Linking Format (ELF)
ttp://www.skyfree.org/linux/references/ELF_Format.pdf
40デフォルトの名無しさん:04/09/26 22:59:49
>>34
libbfdで作るとか。
いまひとつ使いにくいのが難ですが。
41デフォルトの名無しさん:04/09/27 15:08:31
42デフォルトの名無しさん:04/09/27 23:12:40
alloca()とmalloc()の違いを述べよ。
43デフォルトの名無しさん:04/09/27 23:17:16
man alloca
44デフォルトの名無しさん:04/09/27 23:53:15
質問です。
void main()
{ char buf[100];
while(gets(buf)){;} /* 1 つ目 */
gets(buf); /* 2 つ目 */
}
で、% echo 1 | a.out したとき、2 つ目の gets() したいのですが、
何か良い方法ありませんか?
お手間かけます、よろしくです。
45デフォルトの名無しさん:04/09/28 00:00:26
Cの宿題スレへGO
46デフォルトの名無しさん:04/09/28 00:02:29
「gets使うなヴォケ」って言われそうだな
47デフォルトの名無しさん:04/09/28 00:02:29
>>44
何やってるのかわからん。。
1つ目でEOF拾ってるのに2つ目がいるのか?
どーでもいいが、mainの返り値はint、getsはバグがあるからfgetsあたりを
使うべきじゃなかったっけ。
48デフォルトの名無しさん:04/09/28 00:04:03
getsのあれはバグではなく仕様です。
49デフォルトの名無しさん:04/09/28 00:04:32
warning: the `gets' function is dangerous and should not be used.
50デフォルトの名無しさん:04/09/28 00:18:47
>>44
a.outで2回目のfgets(gets)をすればいいじゃねーか。
51デフォルトの名無しさん:04/09/28 00:27:04
あららん、getsやmainの戻り値なんて質問外なのでどうでもよくって、
stdinがEOFのとき、rewind()なんて効かないし、どうしよっかなーって
ことだけなの。
52デフォルトの名無しさん:04/09/28 00:53:24
なにがやりたいんだかさっぱりわからん。
二つ目の gets で何を取得したいのよ。
53デフォルトの名無しさん:04/09/28 01:02:53
>>52
キーボードからの文字。
ちなみに、最初に fd = fcntl(STDIN_FILENO, F_DUPFD, 0);とか、
後から stream = fdopen(open("/dev/stdin", O_RDONLY, 0), "r");も
無理そですね。
54デフォルトの名無しさん:04/09/28 01:07:04
と、とりあえず、ねます、すみません。
55デフォルトの名無しさん:04/09/28 01:24:51
>>53
そうゆう shell を作れば?
56デフォルトの名無しさん:04/09/28 01:28:04
わざわざ shell の自作なんかしなくても。
57デフォルトの名無しさん:04/09/28 02:04:20
考え方が、(゚д゚)ハァ? なんだよ。
58 ◆cReQ1pJtI. :04/09/30 18:03:58
Windowsで作ってますが、こっちの方が知ってる人が多そうなので
質問させてください。

FTPクライアントのサブセットを作成していますが、
コマンドに対する応答の終了をどのように判断したらいいのか
悩んでいます。
多くのコマンドは1行の応答のようなので、その場合は改行を
見ればいいと思いますが、なかには複数行返ってくるものも
あるし、RFCにも複数行処理しろと書いてあります。

コマンドを送って、応答を待って、次のコマンドを送って、、

ってやれれば簡単でいいなと思ってるんですが、そのためには
応答の終了を知る必要があると思います。
回線状況が悪い場合も想定したいので、タイミングでの処理は
避けたいと思っています。

よろしくお願いします。
59デフォルトの名無しさん:04/09/30 18:20:02
っていうかスレ違いでしょ。ネットワークの専門スレもあるんだし
60デフォルトの名無しさん:04/09/30 18:34:52
>>58
RFC本当に読んだ?+
61 ◆cReQ1pJtI. :04/09/30 18:40:42
>>59
すんませんでした、向こうへ移動します。
62 ◆cReQ1pJtI. :04/09/30 18:55:29
向こうで即レスをもらいまして、
ttp://x68000.startshop.co.jp/~68user/net/ftp-4.html
ここを紹介してもらって解決しました。お騒がせしました。
63デフォルトの名無しさん:04/10/02 01:37:49
ある処理の間はシグナルをブロックしたいので以下のようにしています。
struct sigaction sa;
sigset_t oldset;
sigempty(&sa.sa_mask);
sigaddset(&sa, SIGINT);
sigprocmask(SIG_BLOCK, &sa.sa_mask, oldset);

// ブロックさせたい処理

sigprocmask(SIG_UNBLOCK, oldset, (struct sigaction *)NULL);

しかしこれだと最後のsigprocmask()で失敗した場合、その後SIGINTを
ブロックしたままになってしまうと思うのですが、確実にSIGINTのブロックを
解除するにはどうすればよいでしょうか?
64デフォルトの名無しさん:04/10/02 01:40:51
>>63
所々書き込みミスしてました。
×sigaddset(&sa, SIGINT); → ○sigaddset(&sa.sa_mask, SIGINT);
sigprocmask()のoldsetは&oldsetです。
65デフォルトの名無しさん:04/10/02 02:08:59
全てのシグナルをアンブロックするとか

つうか普通失敗しないだろ
66デフォルトの名無しさん:04/10/02 02:21:24
失敗するとしたら引数に変なの渡したときくらいだね。
67デフォルトの名無しさん:04/10/02 02:27:49
失敗したらログ吐いてabortでいいだろ
68デフォルトの名無しさん:04/10/02 02:55:58
たしかに不正な引数を渡したりすると-1でエラーになるようですが(AIX,HP,Solaris,Linuxで確認)、
本当にエラーにならないという確証がmanを見ても得られなかったため
質問するに至りました。sigprocmask()でエラーがほとんどないとしたら
たとえばsigaction()について以下のようなコーディングは冗長と言えるでしょうか?
struct sigaction sa;
int rc;
sa.sa_handler = SignalHandler;
rc = sigaction(SIGINT, NULL, old_sa);
if(rc == SIG_ERR){
 // error log;
}else if(old_sa.sa_handler == SIG_DFL){
rc = sigaction(SIGINT, &sa, NULL);
 if(rc == SIG_ERR){
  // error log;
 }
}
69デフォルトの名無しさん:04/10/02 07:45:52
前の状態調べる必要あるのか?
processが動き始めた時、SIG_DFLであるとは限らないのだが…
70デフォルトの名無しさん:04/10/02 08:21:08
sigactionの戻り値はintで普通に0かそれ以外かなので
SIG_ERRと比較するのも変だと思うのだが。

どうも筋が悪いというか、へんな理解の仕方をしているような気がするね。
71デフォルトの名無しさん:04/10/02 12:30:41
>>69
以前に既にシグナルハンドラを設定していた場合は、新たにそこで設定しない
ために前の状態を調べています。動作確認した限りではSIG_DFLだったので
この値を使ってしまいました。
プロセス起動時のシグナル動作=OSのデフォルト動作=SIG_DFL
とは限らないということでしょうか?

>>70
manには0かSIG_ERR(-1)となっていたので普通にSIG_ERRを使ってしまいました。
でもsignal.hを見るとSIG_ERRはint型ではなかったため、(int)でキャストして比較しています。
自分でも変な実装していると思うのですが、>>68の例を改善するとしたら
どのような実装になるでしょうか?
72デフォルトの名無しさん:04/10/02 12:52:07
>>71
-1と比較する
73デフォルトの名無しさん:04/10/02 13:14:54
>>71
> プロセス起動時のシグナル動作=OSのデフォルト動作=SIG_DFL
> とは限らないということでしょうか?

はい。nohup(1)の実装を見てみてください。
74デフォルトの名無しさん:04/10/02 15:35:55
>>71
>>70のいう通りに非0と比較すればいいんじゃないの?

if(!rc){
//success
}
とかで
75デフォルトの名無しさん:04/10/02 20:12:15
>>71
それ、どのOSのman?
日本語manだったら多分訳者のところでトチ狂ってる。
76デフォルトの名無しさん:04/10/03 01:45:05
>>72,74
戻り値が2値しかないので、そのコーディングの方が素直だし見やすい
かもしれません。使うとしたら if(rc) でエラーだけ見るようにします。

>>73
nohupコマンドで実行された場合、プロセス起動時には既にSIGHUPを
無視するようになっているから、SIGHUPに関してはSIG_DFLとは限らない
ということでしょうか?

>>75
例えばAIXのDocumentation Library(英文)です。-1とは書かれていませんが、
ヘッダを見るとそうなっています。たしかこんなだったかと。
#define SIG_ERR (void (*)())-1
Linux(英訳文)だと0か-1となっており、ヘッダはこうなっています。
typedef void (*__sighandler_t) (int)
#define SIG_ERR ((__sighandler_t) -1)
POSIX仕様はどうだったか覚えてないのですが、たしか0か-1だったと思います。
素直に0が成功、それ以外は失敗だとすればいいかもしれません。
77デフォルトの名無しさん:04/10/03 01:51:53
manみたいないい加減な情報しかないからこんなことでもめるんだ
UNIXなんて信者絵!
78デフォルトの名無しさん:04/10/03 03:08:55
>>76
おおう、マジだ。AIXって変態!
というかSIG_ERRの定義は正しいみたいだから多分ドキュメントバグだろうね。
sigprocmaskなんかはちゃんと-1という表現だし。
悪いこと言わんから、
if (rc == 0) { /* OK */ }
のようにコーディングしとき。それがシステムコール共通の使い方だし。


ちなみにAIXと縁のない人向けにAIXのmanより:
Return Values

Upon successful completion, the sigaction subroutine returns a value of 0. Otherwise, a value of SIG_ERR is returned and the errno global variable is set to indicate the error.

今度から>>71の時点で引用してくれると議論が楽。
79デフォルトの名無しさん:04/10/03 08:17:13
IBMいってよし
80デフォルトの名無しさん:04/10/03 08:18:31
>>77
UNIXは慢性のドキュメント化軽視アンチパターンですから
81デフォルトの名無しさん:04/10/03 08:22:07
修正できないのは組織硬直アンチパターン
82デフォルトの名無しさん:04/10/03 08:45:09
これが標準
http://www.opengroup.org/onlinepubs/007908799/xsh/sigaction.html

>>77
仕様はかっちり書いてあると思う。
サンプルドキュメントが足りない。ソースを自分で探さないといけない。
AT&T, BSDの昔はソースは良いサンプルコードばかりだったが…
83デフォルトの名無しさん:04/10/03 13:47:45
バカはスルー
84デフォルトの名無しさん:04/10/03 17:22:52
昔は良かった系アンチパターン

今がひどすぎて昔はさも良かったかの様に錯覚する事
85デフォルトの名無しさん:04/10/03 18:01:40
>>78
何がおかしいのかわからん
manを見て素直に
 if(sigaction() == SIG_ERR){
   /* ERROR */
 }
とかすればいいのでは?

つーかOKのとき0が返るとは限らんと思うが・・open(2)とか。
86デフォルトの名無しさん:04/10/03 21:05:30
>>85
> 何がおかしいのかわからん

rc == 0 の代わりに rc == NULL とするくらい変なのだが。

> つーかOKのとき0が返るとは限らんと思うが・・open(2)とか。

そりゃ当たり前だろ。
値を返すんじゃなくて成功不成功のステータスを返すので成功時に0以外を
返すものはないと思うが。
87デフォルトの名無しさん:04/10/03 22:19:23
少し変更しましたが、こんな感じでしょうか?とりあえずブロック設定、
ブロック解除を試みますが、失敗したらエラー出力してごめんなさい。
でも処理は続けます。次にこのパスを通ったときに解除されるといいですね。
という実装になってしまいましたが、どうでしょうか?
int rc;
sigset_t set, oldset;
sigempty(&set);
sigaddset(&set, SIGINT);
rc = sigprocmask(SIG_BLOCK, &set, &oldset);
if( rc ){
 // error log
}

// ブロックさせたい処理

rc = sigprocmask(SIG_UNBLOCK, &oldset, NULL);
if( rc ){
 // error log
}
88デフォルトの名無しさん:04/10/04 14:04:10
__asm
{
mov dx3,fah
mov al,10000000b
out dx,al
}

上記のようなアセンブルプログラムをGCCに移植したいのですが
エラーが出て困っています。GCC版のプロラムは

asm("movb %%dx,$0x3fah");
asm("movb %%al,$10000000b");
asm("out %%dx,%%al");

エラーメッセージは「bad register name '%%dx'」「bad register name '%%al'」
です。GCC版のプログラムに誤りがあると思うのですがどこが間違っているのでしょうか?
8988:04/10/04 14:05:19
すいません、訂正です
__asm
{
mov dx,3fah
mov al,10000000b
out dx,al
}
90デフォルトの名無しさん:04/10/04 14:40:41
>>88
困ってるんですか。それは大変ですね。
91GNUにやさしい人:04/10/04 14:58:03
それはね、
例えば以下の場合は、
asm("movb %%dx,$0x3fah");
   ↓
asm("movb %dx,$0x3fah");
にしなきゃいけない。

レジスタに'%%'のように2重に指定するのは、
引数をとるような拡張gasを書いた場合なのさ。
引数がいらないような場合は、%は1つでいい。
9288:04/10/04 15:41:35
>>91
レス有難う御座いました。早速%を一つ減らしてコンパイルしたのですが
別のエラーが出てしまいました。

suffix or operands invalid for 'mov'
suffix or operands invalid for 'out'
backward ref to unknown label "10000000"

なにかコンパイルオプションが必要なのでしょうか?
93デフォルトの名無しさん:04/10/04 15:58:47
gccのasmでは、オペランドの destinationとsourceの指定順が
通常の逆になってたと思うけど。
9488:04/10/04 16:28:46
>>93
有難う御座います。10000000bは0x80としてオペランドの順番を逆にすると
警告が出ましたが一応コンパイルは通りました。
9588:04/10/04 16:54:54
コンパイラは通りましたが実行するとSegmentation faultとなってしまいました。
やはりコンパイル時になにかオプションパラメータを指定する必要があるのでしょうか?
96デフォルトの名無しさん:04/10/04 17:01:05
gdbで自分で調べろ
97GNUにやさしい人:04/10/04 17:31:18
>>94
>警告が出ましたが一応コンパイルは通りました。
一応、その警告を貼ってみれ。

>コンパイラは通りましたが実行するとSegmentation faultとなってしまいました。
>やはりコンパイル時になにかオプションパラメータを指定する必要があるのでしょうか?
むしろ、逆に聞きたいのですけど
そのアプリはgccでコンパイルすれば動くはずのものなのでしょうか?

ちなみに、オプションパラメータうんぬんでSegfalするかどうかは、
まったくありえなくは無いけどまれだと思う。
よほど最適化オプションをキツクしたり、イリーガルなオプションを指定しないかぎり。

とりあえず、"-O0 -Wall -g"オプション(最適化無、警告を表示、デバッグ情報追加)をオプション指定して、
さらに、できるかぎりコンパイル時に出る全ての警告を消すようにしてコンパイルして、
実行したら再度、Segfalしたらgdbでデバッグをすると。
9888:04/10/04 17:31:39
>>96
そんなこと言わないでもうちょっと付き合ってください。
99デフォルトの名無しさん:04/10/04 17:50:16
ソース全部貼り付けろ
10088:04/10/04 17:50:36
>>98
他人の振りして面白いですか?

>>97
その後いろいろ試してソースを書き換えた結果、エラーは出なくなりました。
しかし実行するとSegmentation Errorが出るのでgdbで追ったところoutの部分で
エラーになっているようです。ちなみにこのコードを加える前は正常にコンパイル
が通り動作していたので他の部分は問題ないと思います。
10188:04/10/04 17:54:17
現在のソースはこんな感じです

asm("mov $0x3fah,%dx");
asm("mov $0x80,%al");
asm("out %al,%dx"); ← Segmentaiton Fault Errが出る
102デフォルトの名無しさん:04/10/04 18:18:38
serial通信?
103デフォルトの名無しさん:04/10/04 18:22:39
権限は関係無いのか?
104デフォルトの名無しさん:04/10/04 18:25:27
88はgccとか以前にとんでもない間違いを犯してる
ここのスレの住人はアホばっかだな
105GNUにやさしい人:04/10/04 18:37:17
>>101
ちょっと待ってくれよ、そのソース、本当にコンパイル通ったのか?

以下のように修正する必要ある思われ。
asm("mov $0x3fah,%dx");
  ↓
asm("mov $0x3fa,%dx");
"h"はいらん。
106デフォルトの名無しさん:04/10/04 18:44:41
>>105
すみません、0x3fahじゃなくて0x03f8でした。

>>102
そうです。

>>104
そのとんでもない間違いを教えて貰えると助かるんですが。
107デフォルトの名無しさん:04/10/04 18:49:30
つーかまず環境を書け
108デフォルトの名無しさん:04/10/04 18:52:57
ぐだぐだになってまいりました
109Internetデバッガー:04/10/04 18:57:12
掲示板ではらちがあきません。
telnetポート開いて、IPを教えてください。
接続して調べます。
11088:04/10/04 19:01:19
192.168.1.3です
ユーザ名はguestでお願いします
111デフォルトの名無しさん:04/10/04 19:01:23
バザール方式、万歳。
112デフォルトの名無しさん:04/10/04 19:03:33
>>110
接続してみた。
ずいぶんcoreファイルあるね〜。整理しろよ!
っておい!俺のマシンじゃねーか!
11388の同僚:04/10/04 19:29:07
88氏は、バグが見つかったので修正したあと「お先に」と言って、
今日はもう帰りました。
114デフォルトの名無しさん:04/10/04 21:34:28
こういう操作ってioctl使えば出来ると思われ。
やり方知らんけど。
115デフォルトの名無しさん:04/10/04 21:59:53
つか、ユーザランドから outできるの?
116デフォルトの名無しさん:04/10/04 22:35:18
>>114
ioctlはopen/close/read/write以外の操作をデバイスに対して
持たせたいときに使う、「その他いろいろ」インタフェース。
何ができるかは完全にデバイス依存。第2引数に整数でコマンドを渡す。
CDのイジェクトもサウンドのミキサ設定もみんなこれ。

>>115
OSによるが、例えばFreeBSDだとroot権限を持たせれば/dev/ioを開けて、
そのユーザプロセスがI/O操作することを可能にできる。
117デフォルトの名無しさん:04/10/04 22:46:34
つーかgccって__asmの構文のままじゃ通らないの?
118110:04/10/05 00:22:54
>>112
すみません。
127.0.0.1
でした。
よろしくおねがいします。
119Rubyいst:04/10/05 00:23:46
どうでもいいネタを引っ張るな
つまんねーんだよ
120デフォルトの名無しさん:04/10/05 00:39:47
他の掲示板で良いとこ知らない?
121デフォルトの名無しさん:04/10/05 00:41:27
>>120
双葉ちゃんねる
122デフォルトの名無しさん:04/10/05 00:46:50
>>121
逝ってみたけどここよりレベル低そうだぞ
123デフォルトの名無しさん:04/10/05 01:25:27
ところで、88は聞くだけ聞いておいて
直ったとたんおさらばですか。そうですか。
124デフォルトの名無しさん:04/10/05 01:31:36
しんなのんだろ
125デフォルトの名無しさん:04/10/05 01:32:00
レベル低いヤシが寄って来たから愛想尽かしたんだろ。
126デフォルトの名無しさん:04/10/05 08:49:02
>>88はデバイスドライバハッカーですよ?
127デフォルトの名無しさん:04/10/05 10:57:28
>>120
掲示板じゃなくてネットニュースとか見てみたら?
128デフォルトの名無しさん:04/10/05 11:18:59
>>126
レベル低いヤシってオマエの事ですよ? 
129デフォルトの名無しさん:04/10/05 11:34:19
ぎゃふん
130デフォルトの名無しさん:04/10/05 18:58:06
現在、レベルの低い奴らがこのスレを監視中...
131デフォルトの名無しさん:04/10/05 23:07:31
88は教えて君の鑑ですな
132デフォルトの名無しさん:04/10/05 23:25:48
>>131
お前って他の質問スレでも下らないレス繰り返してスレ荒らしてるよな。
質問に答える知識がないなら引っ込んでろ。
133デフォルトの名無しさん:04/10/06 00:52:55
お怒りくん登場!
134デフォルトの名無しさん:04/10/06 01:18:35
>>133
厨房登場!
135デフォルトの名無しさん:04/10/06 01:23:35
そうだそうだ!ひっこんでろ!
136デフォルトの名無しさん:04/10/06 01:25:52
質問スレまで荒らす馬鹿がいるとはさすが2ちゃんですな。
137デフォルトの名無しさん:04/10/06 08:33:06
>>132
見ているのなら答えてくれた人に礼くらいしろ。
138デフォルトの名無しさん:04/10/06 13:03:38
>>137
礼はそのつどしてるようだが。全然関係ない馬鹿が横槍入れてきた
せいで話がぐだぐだになったんだろ。文句いうなら>>98みたいに
幼稚な真似する馬鹿に言えば?
139デフォルトの名無しさん:04/10/06 13:07:51
140デフォルトの名無しさん:04/10/06 13:10:21
>>98
>>110
>>113

このアホどもにも礼を言えと?
141デフォルトの名無しさん:04/10/06 13:18:38
>>95以降、礼なんか見あたらないが・・・
142デフォルトの名無しさん:04/10/06 13:23:37
>>141
>>95以降に礼を言うべきレスは見当たらないが・・・・
143デフォルトの名無しさん:04/10/06 13:28:27
107以降書き込みをしていないということは解決したんだろうが、
解決したならなにか一言書くべきだろ。
そんなんだから教えて君と(ry
144デフォルトの名無しさん:04/10/06 13:32:23
環境を書けと言われて逃げる奴は大抵ネタ
145デフォルトの名無しさん:04/10/06 13:34:26
>>143
>>107以降は荒らし君のおかげでレスしようがない状態になってるだろ。
とても解決に結びつくようなレスがあるようには見えないし。そもそも
君は何か解決に結びつくようなレスをしたの?
146デフォルトの名無しさん:04/10/06 13:37:15
これに懲りてもうネタにレスをしないことが閣議決定されました。
147デフォルトの名無しさん:04/10/06 13:38:41
> レスしようがない状態
そのわりには煽りだけは入れているようだけどね
148デフォルトの名無しさん:04/10/06 13:39:54
>>147
煽りいれてるのはお前
149デフォルトの名無しさん:04/10/06 13:43:32
>>143は解決するようなレスしたのに礼が無かったから怒ってるんだろうね。
150デフォルトの名無しさん:04/10/06 14:01:12
解決したんじゃなくてネタだということがばれそうになってので逃げただけ。
151デフォルトの名無しさん:04/10/06 14:16:42
>>150
それをネタと言います。
152デフォルトの名無しさん:04/10/06 16:19:17
まともな回答が欲しいならLinuxメーリングリストに登録しる。
ここはちょっと小難しい事聞くと荒らししかレスして来なくなるし。
153デフォルトの名無しさん:04/10/06 16:34:47
ノイズはたしかに否めないが、まともな質問にはまともな解答は来る
154デフォルトの名無しさん:04/10/06 16:40:10
>>153
まともな質問じゃなくて誰でも答えれるような質問ね。
155デフォルトの名無しさん:04/10/06 17:02:14
out のオペランドの順序は大丈夫?
156デフォルトの名無しさん:04/10/06 18:33:48
何が気に入らないんだろう?
157デフォルトの名無しさん:04/10/06 20:05:40
現実社会でも無視されてる荒らし君だからせめてネットでは相手して欲しかったんだろ。
158デフォルトの名無しさん:04/10/06 20:24:47
>>156
そういう君はなんで荒らしするの?
159デフォルトの名無しさん:04/10/06 20:30:13
粘着してレベルが低いと訴えるくらいなら、自分が回答すればいいのに。
それとも、回答もらえなかったから逆切れしてるのか。
160デフォルトの名無しさん:04/10/06 20:44:21
そんなの誰も分かるはずないので終了
161デフォルトの名無しさん:04/10/06 20:50:26
このスレのnice値が一気に下げられました。
162デフォルトの名無しさん:04/10/06 21:10:49
逃げたのならおとなしくしていればいいものを、なんで荒らすかねぇ。88は。
163デフォルトの名無しさん:04/10/06 21:19:27
最初から下がるほどはないっす
164デフォルトの名無しさん:04/10/06 22:06:22
>>161
nice値が下がるとプライオリティはどうなるんだったっけ?
いつまでたっても覚えられん。
165デフォルトの名無しさん:04/10/06 22:16:16
>>162
まだやんの?粘着厨房。
166デフォルトの名無しさん:04/10/06 22:32:21
>>164
低いほど高プライオリティ

>>145
荒れてても発端の本人が出てきて、
低姿勢にやれば、大抵収拾はつくけどね。

まあ別にたまにあれるくらいええやろ。
167デフォルトの名無しさん:04/10/06 22:40:03
ちょっと、心をおちつけて。
UNIXを知らなかったあの頃を思い出してごらん。
あの頃の君達は希望に満ち溢れていたよね。
そう、今まで君達は、とっても悪い夢を見ていたんだ。
UNIXなんか捨てて、あの頃見ていた希望を取り戻そうよ!
168デフォルトの名無しさん:04/10/06 22:42:27
そこでTronですよ
169デフォルトの名無しさん:04/10/06 22:43:13
プライオリティーのポイントが高いということは
それだけシステムに優しいということ
170デフォルトの名無しさん:04/10/06 22:45:09
よく言われてる事だけどUNIX関連の掲示板って
妙に偉そうなのが多いいのは何故?
171デフォルトの名無しさん:04/10/06 22:49:47
それは君の心です。
172デフォルトの名無しさん:04/10/06 22:50:49
全部GNUが悪い。
RMSが悪い。
オプソが悪い。
もしUNIXにEmacsが無かったとしたら、
もっと良いOSになってたかもしんない。
もしXなんてものができなかったら、
もっと良いGUIになってたかもしんない。
もしRMSが、GNUが、なかったとしたら・・・
それはきっと、素晴らしい世界。
173デフォルトの名無しさん:04/10/06 22:53:59
Ruby >>>>>>>>>>>>>>>>>>>>>>>UNIOX
174デフォルトの名無しさん:04/10/06 23:03:15
Lindowsが最強ってことで
175デフォルトの名無しさん:04/10/06 23:15:56
あっ!なるほど。
今、>>169がうまいこと言った。

のに、誰も気づかないのは、うにくすを使う者としてもぐり。
176デフォルトの名無しさん:04/10/06 23:17:10
>>175
ラクダ本に書いてあった
177デフォルトの名無しさん:04/10/06 23:26:07
>>176
なるほど。

おれ、niceの値はOSがそのプロセスに制御を渡すまでの
待ち時間みたいなものだ、と覚えた。

マイナスがわけわからんけど、覚え方ということでね。
大きければ待ち時間が長くなる=優先度低い、ってイメージ。
178デフォルトの名無しさん:04/10/07 18:47:07
emacs便利だと思うんだけど…
179デフォルトの名無しさん:04/10/07 19:29:10
EmacsはUNIXの上に全く別の環境を作ろうとした寄生ウェア。
その罪は重い。
180デフォルトの名無しさん:04/10/07 19:39:04
UNIXとしては真っ先に排除しなくてはならなかったのに、
便利だ、便利だといってそのまま放置、RMSはこれを機に増長し、
UNIXにGNUという悪性ウィルスを感染させる。
このウィルスはオープンソースという馬鹿げた思想を掲げ続け、
この影響でUNIXの発展は停滞し、思想の1つが崩れ去った。
181RMS:04/10/07 19:47:56
>>180
UNIXだけに留まると思うなよ
182デフォルトの名無しさん:04/10/07 19:50:19
UNIXから去っていく企業、規模を縮小する企業が続出し、ソフトウェアの
価値が著しく低下した。ただでさえ保護が難しいソフトウェアにGNUは
オープンソースという暴力の強制で業界全体にトドメを刺した。
今やUNIXは自分の首を絞める行為だと理解しない・理解しようとしない、
ソース原理主義者どもの巣窟、隔離施設なのである。
183デフォルトの名無しさん:04/10/07 19:52:23
コピペか
184172=180=182:04/10/07 19:55:36
>>183
このぐらいの文ならそらで書けるぞ。
185デフォルトの名無しさん:04/10/07 19:57:45
自慢してら。
事実誤認だらけなのに
186デフォルトの名無しさん:04/10/07 19:58:13
>>184
そんなことは問題ではないと
187デフォルトの名無しさん:04/10/07 20:13:03
>>182
非公開にすることで付与されるソースコードの価値で
維持してるような会社は今後縮小せざるを得ないだろうね。
適正な規模に戻れってこった。
188デフォルトの名無しさん:04/10/07 20:42:17
関係ないはなししはよそでおねがいします。
189デフォルトの名無しさん:04/10/07 21:11:43
質問スレとしての機能を果たせないんだから関係ない話でスレ消化するしかないだろ。
190デフォルトの名無しさん:04/10/07 21:31:57
粘着もここまでくると可哀想だな
191デフォルトの名無しさん:04/10/07 21:35:22
>>190
ほら、下らんレスにはすぐ食いついてくるw
192デフォルトの名無しさん:04/10/07 21:41:08
88はまだ粘着しているのか(笑)
193デフォルトの名無しさん:04/10/07 21:45:03
>>192
そんなに88に相手してもらいたいの?粘着君 プ
194デフォルトの名無しさん:04/10/07 21:45:30
>>193
ほら、下らんレスにはすぐ食いついてくるw
195デフォルトの名無しさん:04/10/07 21:48:27
>>194
レス早っ!ずっと監視してんのか。キモ過ぎ・・・
196デフォルトの名無しさん:04/10/07 21:51:10
3分足らずでレスする195=88も同じだよw
197デフォルトの名無しさん:04/10/07 21:52:47
>>195
別にずっと監視しなくても他のスレのレスとか見ながらスレ一覧を更新していれば
このスレが更新されたかどうかなんてすぐにわかるし、べつに変じゃないよ。
あと、「キモ」いという言葉はあまり好きじゃないな。
たとえ自分に当てられた言葉でないとしても良い気分はしないし、私以外にも
そう思っている人がいるだろうね。
198デフォルトの名無しさん:04/10/07 21:54:54
88大好きキモオタが粘着してるようだけどこのスレって質問すると
ずっと煽られ続けるのか?
199デフォルトの名無しさん:04/10/07 22:00:44
関係ないはなしししはよそでおねがいします。
200デフォルトの名無しさん:04/10/07 22:01:15
質問も他スレでした方がいい?
201デフォルトの名無しさん:04/10/07 22:07:41
もういいだろこのスレは
202デフォルトの名無しさん:04/10/07 22:16:42
やれやれ。スレ立てしてくるわ。
203デフォルトの名無しさん:04/10/07 22:21:04
204デフォルトの名無しさん:04/10/07 22:21:42
205デフォルトの名無しさん:04/10/07 22:22:36
>>202
どうせ同じ事になるから無駄だと思うけど。UNIXやLinux使ってる人って
自力で学習してる人が多いから他のOS使ってる人に比べて質問する人
を毛嫌いする傾向があるね。
206デフォルトの名無しさん:04/10/07 22:23:48
>>205
そういう話は次スレでやれ
207デフォルトの名無しさん:04/10/07 22:24:54
>>206
すみません、図星で気に障りましたか?
208デフォルトの名無しさん:04/10/07 22:29:06
>>205
あんまり突っ込まれるとわかんないからだよ
なんせUNIXにはグルいないから
UNIX自体どマイナーなのに実際に使うマシンは
さらにその枝の奥の葉だからね
209デフォルトの名無しさん:04/10/07 22:43:14
わかんないことあったらまずサポートに投げる
自分以外は全て敵と思え
これがUNIXの正しい運用方法
210デフォルトの名無しさん:04/10/07 22:54:44
まずはStevens本を読め。
211デフォルトの名無しさん:04/10/07 22:57:22
自助努力の跡が見える質問だったら歓迎なんだけどな。
伝説のM女史みたいな臭いが少しでもしたら激しく嫌われる。

んでM女史傾向のあるやつが質問したら叩かれて、
逆ギレの構図かなw
頭悪いからそのへん自覚も区別もできんのだろうな。
「なんでおれが」って。それ、お前だからだってw
212RMS:04/10/07 23:04:23
>>209,210
そのためのソースだ
213デフォルトの名無しさん:04/10/07 23:08:22
>>211
オタク臭い文章・・・。やはりUNIXユーザーってちょっとアレだな
214デフォルトの名無しさん:04/10/07 23:09:39
つまりUNIX関連の質問スレは不要って事で
215デフォルトの名無しさん:04/10/07 23:13:03
>>213
オタクですがなにか?w

ま、馴れ合いたいならそういうところを探すこった。
216デフォルトの名無しさん:04/10/07 23:16:17
>>215
どっちかというと君が場違い。質問スレで質問したやつ叩いてどうする。
217デフォルトの名無しさん:04/10/07 23:22:22
>>215
ふ〜ん、ここって馴れ合い禁止なんだ。そんな高尚なスレだとは知らなかったよ。
218デフォルトの名無しさん:04/10/07 23:25:50
馴れ合いかどうかと、高尚かどうかは関係ないだろう。
219デフォルトの名無しさん:04/10/07 23:29:10
つまりオタク専用スレって事だね。
220デフォルトの名無しさん:04/10/07 23:31:04
UNIX
プログラミング
2ちゃんねる

どれをとってもオタクそのものでは?
221デフォルトの名無しさん:04/10/07 23:33:27
>>215
意味分からん。馴れ合うなって気軽に質問すんなって事か?
222デフォルトの名無しさん:04/10/07 23:37:17
>>220
2ちゃんねるを除いて、それらがどうしてオタクなの?
プロだとそういうのは当り前のことじゃないか。
そもそもオタクってどういう意味だ?
223デフォルトの名無しさん:04/10/07 23:38:35
>>222
>>215みたいに自分の殻に閉じこもってるヤシ
224デフォルトの名無しさん:04/10/07 23:41:11
だいたいM女史って誰だよ しらねぇよ
225デフォルトの名無しさん:04/10/07 23:42:03
検索くらいしろよ
226デフォルトの名無しさん:04/10/07 23:45:05
>>222
アニメだって、プロならそういうのは当たり前のことだ。
227デフォルトの名無しさん:04/10/07 23:46:49
ま、馴れ合いたいならそういうところを探すこった。
228デフォルトの名無しさん:04/10/07 23:52:22
2ちゃんねるって馴れ合う掲示板だと思ってたんだけどUNIX関連スレだけは別格なんだね














229デフォルトの名無しさん:04/10/07 23:58:23
このスレってUNIX使いの生態が分かって面白い。
230デフォルトの名無しさん:04/10/08 00:10:08
UNIXを使っている自分に酔ってます
231今のままじゃん…:04/10/08 00:18:43
>>229
もうUNIX使うのやめます!
UNIXに使われます!
232デフォルトの名無しさん:04/10/08 00:59:51
pkill -231
233デフォルトの名無しさん:04/10/08 01:03:08
talk 231 You gata me-ru.
234デフォルトの名無しさん:04/10/09 00:55:31
halt
235デフォルトの名無しさん:04/10/09 01:44:13
なんかネットワークプログラミング相談室とフンイキが似てる。
236デフォルトの名無しさん:04/10/09 01:49:16
中のひとが同じだからな
237デフォルトの名無しさん:04/10/09 20:15:51
cursesライブラリに関する本とかwebページを教えてください。
238デフォルトの名無しさん:04/10/09 20:49:39
あまりないよね
239デフォルトの名無しさん:04/10/09 21:42:23
4BSDのドキュメントの
ps1/18.curses
ってのを読みましたよ、大昔ですが。
4BSDの/usr/doc下のドキュメントはAT&T由来のものも含めて、
簡潔で優れたものが多かったです。
240デフォルトの名無しさん:04/10/09 22:11:08


そういやRMSが事故ったらしい


GPLとともに天に召されてくれ
241デフォルトの名無しさん:04/10/10 16:34:37
事故った時には既に降りた後じゃなかったっけ?
242デフォルトの名無しさん:04/10/10 16:41:18
RMS怪しいな
243デフォルトの名無しさん:04/10/11 01:03:11
今のRMSは偽者です。かげ武者です。
ただ、これ以上話すとFSFに暗殺されてしまうので
話せません。
244RMS:04/10/11 01:18:10
>>243
もう、遅いよ。
そっちに刺客を送った。
245デフォルトの名無しさん:04/10/11 15:54:55
ヤバイ。月詠ヤバイ。まじでヤバイよ、マジヤバイ。
月詠ヤバイ。
まずOPがデンパ。もうデンパなんてもんじゃない。超デンパ。
デンパとかっても
「ドクロちゃん20冊ぶんくらい?」
とか、もう、そういうレベルじゃない。
何しろネコミミ。スゲェ!なんか単位とか無いの。何坪とか何?fとかを超越してる。ふさふさしてるし超白い。
しかも着脱可能らしい。ヤバイよ、着脱可能だよ。
だって普通は耳とか取れないじゃん。だって自分のペットの耳がだんだん取れていったら困るじゃん。犬の耳が部屋にごろごろとか困るっしょ。
取ったり外したりして、去年の冬はピンと尖った柴犬の耳だったのに、今年の夏はブルドッグのたれ耳とかだったら泣くっしょ。
だから犬耳とか取り外ししない。話のわかるヤツだ。
けどネコミミはヤバイ。そんなの気にしない。着脱しまくり。ネコミミを付けた有用性を検証してもよくわかんないくらい飾りそのもの。ヤバすぎ。
飾りっていたけど、もしかしたらなんか意味あるのかもしんない。でも有意義って事にすると
「じゃあ、見た目の変化以外でネコミミ付けるメリットってナニよ?」
って事になるし、それは誰もわからない。ヤバイ。誰にも分からないなんて凄すぎる。
あと歌詞が超単調。約9水戸黄門。ライトノベルで言うと869馬鹿一。ヤバイ。リピート。銃弾をペンダントが防ぐ間もなく死ぬ。怖い。
それに超意味が無い。超無意味。それに超意味不明。モードとか平気で出てくる。モードて。荒木飛呂彦でも言わねぇよ、最近。
なんつっても月詠はヒロインが凄い。吸血鬼でネコミミ幼女のご主人様とか平気だし。
うちらなんて吸血鬼とかたかだか強キャラとして出てきただけで上手く扱えないからハーフにしたり、意外な弱点を作ったり、夜の街で戦ったりするのに、
月詠は全然平気。吸血鬼をネコミミ幼女として扱ってる。凄い。ヤバイ。
とにかく貴様ら、月詠のヤバさをもっと知るべきだと思います。
そんなヤバイ月詠を描いた有馬啓太郎とか超偉い。もっとがんばれ。超がんばれ。
246デフォルトの名無しさん:04/10/11 18:21:12
_open とopen なぜ2つのシンボルが定義されてるんですか?
247デフォルトの名無しさん:04/10/11 19:52:39
これは、低水準なのでなるべく別の関数(高水準の)を使って下さいという意味です。
でも気にせず使ってしまいましょう。
また、_open()とせずに open()としても、エラーにはなりません。
似たようなものにgetch()があります。
これもアンダスコア付き関数ですがgetch()のまま使っても問題ありません。
O_APPENDなどの定数類もアンダスコアがついています。
取ってしまっても差し支えありません。
248デフォルトの名無しさん:04/10/11 23:48:41
247はネタ?
249デフォルトの名無しさん:04/10/12 00:30:46
ネタじゃなければ何なんだよ…

exit(3)と_exit(2)の違いでも調べてくれ。
これはちゃんと明文化されているから。
POSIXやX/Openに含まれてるからね。
250デフォルトの名無しさん:04/10/12 01:12:44
>>249
> ネタじゃなければ何なんだよ…

つまりネタということですか。
251デフォルトの名無しさん:04/10/12 02:08:57
1行めは本当。後はネタ。
252デフォルトの名無しさん:04/10/12 02:48:05
ういんどーず、ういんどーず、ごー、ごー、ういんどーず!
253デフォルトの名無しさん:04/10/12 04:03:22
ネコミミモード
254デフォルトの名無しさん:04/10/12 04:15:09
255デフォルトの名無しさん:04/10/12 06:23:19
嘘をつくと地獄に落ちますっ!
256デフォルトの名無しさん:04/10/12 11:01:03
>>254
こりゃ駄目だ…
このページ書いた人アホ?
257デフォルトの名無しさん:04/10/12 21:15:53
>>249
>exit(3)と_exit(2)の違いでも調べてくれ。
>これはちゃんと明文化されているから。
サンクス
258デフォルトの名無しさん:04/10/15 23:00:10
/bin/hosh
259デフォルトの名無しさん:04/10/18 00:53:52
>>256
つか、そのページ、Windowsの話のページだし
260デフォルトの名無しさん:04/10/21 00:42:17
/bin/hosh
261デフォルトの名無しさん:04/10/21 01:08:32
[localhost:~] %
262デフォルトの名無しさん:04/10/21 18:05:44
263デフォルトの名無しさん:04/10/21 19:11:17
C++でUNIXのシステムコールを使う場合の例を探してます
C++版のUNIXシステムコール(signal()など)ってあるんでしょうか
それとのC版システムコールをextern宣言して使っとけば問題ないのかな
264デフォルトの名無しさん:04/10/21 19:21:36
言語関係無いし。
265デフォルトの名無しさん:04/10/21 19:34:22
というか、システムコールとはなにかを勉強する方が先かもしれん。
266デフォルトの名無しさん:04/10/21 21:45:07
>>263
詳解UNIXプログラミング
を推します。
267デフォルトの名無しさん:04/10/21 23:07:26
こう何度も出てくるんじゃ、やっぱテンプレにAPUE買えって入れるべきじゃね?
268デフォルトの名無しさん:04/10/21 23:23:03
Advanced Programming in UNIX Environment と脳内変換出来なかったヲレはもう一度読み直します.
269デフォルトの名無しさん:04/10/21 23:28:07
Unix Beginner *have to* read a APUE.
270デフォルトの名無しさん:04/10/21 23:30:19
それ何かいいこと書いてあるんか。Hな写真とか載ってるんか。
271デフォルトの名無しさん:04/10/21 23:31:32
>>270
信者の戯言だ気にするな。
272デフォルトの名無しさん:04/10/21 23:59:11
明日本屋へいって見てこい。

273デフォルトの名無しさん:04/10/22 00:15:57
>>268
私は訳本しか読んでいない
274Ruby!:04/10/22 00:19:24
プププ
275デフォルトの名無しさん:04/10/22 00:38:58
>>274
笑うな!Ruby厨
276デフォルトの名無しさん:04/10/22 00:53:16
>>275
略すと、アル厨
277263:04/10/22 10:48:53
初心者なもので的外れな質問でしたら失礼しました。
とりあえずお勧めされた本(詳解UNIXプログラミング)を
探して読んでみます。ありがとうございます。
278デフォルトの名無しさん:04/10/22 10:59:14
原本いらね
リファレンスとサンプルコードがあれば十分。
自然言語での適当な解釈は有益なオプションだね。
そもそもシステムコールというのは思想とは違うから原本の厳密な意味理解
は必要ない。
理解すべきはシステムコールの振舞いだよ。
279デフォルトの名無しさん:04/10/22 11:32:50
おまいが理解すべきは日本語の書き方だ
280デフォルトの名無しさん:04/10/22 12:06:36
要は関数だろ
281デフォルトの名無しさん:04/10/22 12:36:55
あれよりまともなUNIX入門書もない希ガス
282デフォルトの名無しさん:04/10/22 17:52:48
>>279
>>280の日本語の間違いを指摘せよ
283デフォルトの名無しさん:04/10/22 18:52:29
まちがってるの?
> かなめはかんすうだろ
284デフォルトの名無しさん:04/10/22 18:58:08
278の間違いだ
285デフォルトの名無しさん:04/10/22 23:38:02
>>283
間違ってるだろ、お前の読み方。
286デフォルトの名無しさん:04/10/23 07:47:03
287デフォルトの名無しさん:04/10/23 08:08:10
GIMPの画像処理部のソースが読みたいのですが、
どこから手をつけていいかわかりません。
いいスレがあったら教えてください。
288デフォルトの名無しさん:04/10/23 11:38:01
コマンド名とlibcの関数名やシステムコール名がダブってるけど、
あれらはどっちが先に出来上がったんでしょうか?
289デフォルトの名無しさん:04/10/23 12:00:53
>>288
両方(ほぼ)同時に成立したものと、一方が先に成立したものがある。
290デフォルトの名無しさん:04/10/23 14:39:30
cもしくはc++で特定のディレクトリのファイルの一覧を取得する方法を教えてください
291デフォルトの名無しさん:04/10/23 15:14:57
>>290
opendir
292デフォルトの名無しさん:04/10/23 15:48:19
readdir()
293デフォルトの名無しさん:04/10/23 15:51:36
writedir()
294290:04/10/23 16:02:09
>>291-293

バーカ。

"CもしくはC++で"

というのが見えないのか?

日本語が分からないなら黙ってろ。
295デフォルトの名無しさん:04/10/23 16:06:43
>>290
Boostを使えばマルチプラットフォームな記述ができますよ
http://www.kmonos.net/alang/boost/classes/filesystem.html
296デフォルトの名無しさん:04/10/23 16:17:14
opendir readdirってCだろ
297デフォルトの名無しさん:04/10/23 16:24:23
>>296
違う
システムコール
298デフォルトの名無しさん:04/10/23 16:27:49
CまたはC++の標準ライブラリでって言いたかったんだろうな。
ちゃんとした日本語で質問しないからこんなことに・・・
299デフォルトの名無しさん:04/10/23 16:29:13
>>297
ライブラリコール
300デフォルトの名無しさん:04/10/23 16:30:19
>>297
ライブラリ関数のセクションにあるから
違うんじゃないの?
301デフォルトの名無しさん:04/10/23 16:31:55
ほんとだ
302デフォルトの名無しさん:04/10/23 16:54:57
system("/bin/ls");
303デフォルトの名無しさん:04/10/23 17:32:35
>>297
違うよ。単なるPOSIX関数だ。
304デフォルトの名無しさん:04/10/23 17:41:09
>>297
人気ですね
305デフォルトの名無しさん:04/10/23 17:42:11
>>304
このまま大統領選挙に持ち込む。
306290:04/10/23 17:54:01
>>294は偽物です
>>291>>292さん無事できました。ありがとうございます。
>>295とても為になりました。boost勉強してみようと思います。
307デフォルトの名無しさん:04/10/23 18:53:26
>>297
さらしあげ
308デフォルトの名無しさん:04/10/23 19:43:21
UNIX に Windows の COM みたいな仕組みってないの?
309デフォルトの名無しさん:04/10/23 19:48:03
CORBAしかない
310デフォルトの名無しさん:04/10/23 19:49:38
311デフォルトの名無しさん:04/10/23 19:49:38
gnomeがCORBAを使ってるね。
でも重すぎ。理想はわかるんだけどね…
312デフォルトの名無しさん:04/10/23 19:55:31
>>311
広く標準化された規格って、肥大化して重いのが多いよね。
一個人や企業が独自に策定した規格のほうが使えるやつが多いって感じる。
313デフォルトの名無しさん:04/10/23 19:59:31
>310
これって COM を移植するための方法であって、
UNIX に COM システムを導入しているわけではありませんよね。
COM の移植って、そんなに難しいものではないと思うんだけど、
誰も開発しないのかな。。。
314デフォルトの名無しさん:04/10/23 20:02:11
そこでRuby!!!!!!!!!!!!!!!!!!!!!!!!
315デフォルトの名無しさん:04/10/23 20:04:52
>314
Ruby だと UNIX でも COM 使えるの?
316デフォルトの名無しさん:04/10/23 20:06:42
KDEがCORBA使おうとして重過ぎたんで簡易版作ってなかったっけ?
検索してたらこんなの出てきた。
http://www.globe.to/~oka326/?Note%2FComonents
317デフォルトの名無しさん:04/10/23 20:12:30
dcopだっけ?
318デフォルトの名無しさん:04/10/23 20:14:39
なんにしても普く使われている軽量で現実的な仕組みはないってこった
319デフォルトの名無しさん:04/10/23 23:03:29
>>315
そいつに聞いてもなにもわかりませんよ。
320デフォルトの名無しさん:04/10/23 23:54:30
>>319
じゃああなたが答えてくれるというのですか?
321デフォルトの名無しさん:04/10/23 23:59:39
あるオブジェクトファイル内に、
ssize_t read (int fd, void * buf, size_t size) {
/* 何か処理 */
}
と定義して、関数mainからこの関数を呼ぶと、
libc内で定義されている関数readではなく、
上記の独自に定義した関数readが呼ばれてしまうのですが、
これってOKなんですか?
システムコール関数を再定義するのって有りなんでしょうか?
322デフォルトの名無しさん:04/10/24 00:08:44
>>321
それで問題が起きないのなら、別に構わない。
323デフォルトの名無しさん:04/10/24 00:10:39
>>322
最悪のバグはいつもユーザの手元で起こるものだ
324デフォルトの名無しさん:04/10/24 00:27:47
>>321
そういうことを可能にするためにシステムコールはわざわざweak symbolになってたりする
325デフォルトの名無しさん:04/10/24 00:30:48
>>321
インターポジショニングっていうんだっけ?
326デフォルトの名無しさん:04/10/24 02:02:32
>>322
まあ・・そう言われればそうなんですが、この場合に自分が
知りたいと考えているのが、
「なぜライブラリ関数なんていう重要な定義が
 ユーザ側で再定義可能になっているのか?」
という事でして、出来ればもう少しその地点から進みたいと
思っています。

>>323
おっしゃるとおりです。

>>324
今自分の環境(FreeBSD5.2)で調べてみたのですが、
  W read
T _read
となっていました。(libc内で)

>>325
ありがとうございます。愚具ってみます。
327デフォルトの名無しさん:04/10/24 08:49:14
システム標準のライブラリなんて別に特別なもんじゃないよ。
これがUNIXとCの考え方。

70年代前半に現在のシステムの潮流を作った。以前は(ry
328デフォルトの名無しさん:04/10/24 12:47:42
>>321
Cとかの単一の名前空間しかもてない言語では激しく厳禁。
329デフォルトの名無しさん:04/10/24 13:02:17
名前空間が分かれてても同じだろ。
330デフォルトの名無しさん:04/10/24 13:14:15
というか、Cとかのプログラミング言語に依存した話じゃなくて、
ELFとかダイナミックリンクとかのレイヤの話だな。

それに、>324も書いているように、そういうことが禁止されているわけじゃない。
「素人が手を出すな」という意味なら激しく同意だが。
331デフォルトの名無しさん:04/10/24 14:17:29
socket()を乗っ取ってウマー
332デフォルトの名無しさん:04/10/24 16:36:35
>>331

他プロセスのAPIをのっとれる訳ではないと思うのだが……。
333デフォルトの名無しさん:04/10/24 18:43:10
>>332
こっそりLD_PRELOADを仕込んでおいて…
334デフォルトの名無しさん:04/10/24 22:06:55
>>326
例えば libc_r.so (ユーザレベルのスレッドライブラリ)では、
read()をnon-blocking I/Oとpollシステムコールを使ったルーチンに
置き換えている。
こうすることでユーザレベルでのマルチスレッドを実現しているわけだ。

さらに ports/www/linuxpluginwrapper とかでは
同様なシステムコール等の上書きにより、Linux用の*.soファイルを
FreeBSDネイティブなプロセスにダイナミックリンクして使えるようにするという
芸当をやってたりする。
335デフォルトの名無しさん:04/10/25 00:17:25
>>334
> 例えば libc_r.so (ユーザレベルのスレッドライブラリ)では、

これはライブラリ全体の置き換えなんでちょっと話がずれたね。
336デフォルトの名無しさん:04/10/25 00:41:41
pthあたりを例にするのがいいのでは。
337デフォルトの名無しさん:04/10/25 00:44:53
>>335
4系ではそうだけど、5,6系統は必要なものだけの置き換えになってますよ。
ライブラリのサイズを比べれば一目瞭然。
338デフォルトの名無しさん:04/10/25 08:33:45
Cの言語仕様と同じぐらい重要なのがELFの知識、と
ある人はいっておりました。
339デフォルトの名無しさん:04/10/25 11:48:47
>>338
それ本当?どこらへんが大事なの?
340デフォルトの名無しさん:04/10/25 22:04:42
たぶんqsort(3)を実装する時…
341デフォルトの名無しさん:04/10/25 22:15:37
なんで?
342デフォルトの名無しさん:04/10/25 22:26:15
Hello, World!に必須
343321:04/10/25 22:33:26
皆様アドバイスをありがとうございます。
あれから色々と調べてみようと思い、
結局 /usr/src/lib/libc/ 以下のMakefile を読んでみて、
どのようにライブラリが作られてるのかを調べていました。
・・・結局分かった事は、read.oオブジェクトファイル内で
まず関数_readを定義し、その後
 .weak open
 .set open, _open
としてシンボル_readの弱いシンボルreadを作っている
という事だけでした。
・・なんか自ら本質から遠ざかってるような気がするんですが。

>>334
>これはライブラリ全体の置き換えなんでちょっと話がずれたね。
いえとんでもないです。ソース眺めている時に、
「libcの隣にlibc_r?しかも同じシンボル(openやread)がある!?」
と思っていたところでした。334さんのおかげで少し理解が出来ました。
おそらくこれが、「インターポジショニング」の効果で、
(Expert C programmingによると)素人が手を出すなという箇所ですよね?

>>336
>pthあたりを例にするのがいいのでは。
すいません。今はそこまで手が回りません・・がいつかは。

>>338
>Cの言語仕様と同じぐらい重要なのがELFの知識
file /usr/lib/lib* とすると "ELF 32-bit 〜" がずらずらと。
ELFの仕様書も読んでみます。
344gcc:04/10/26 04:57:27
readは引数書くのが面倒なんで(w

void __f () { ああだこうだ; }
void f () __attribute__ ((weak, alias ("__f")));
345デフォルトの名無しさん:04/10/26 04:58:16
346デフォルトの名無しさん:04/10/26 21:36:08
age
347デフォルトの名無しさん:04/10/26 22:42:37
ふと思ったのですが、「アボート」と「セグメンテーションフォールト」はどう違うのですか?
348デフォルトの名無しさん:04/10/26 22:44:58
じしょひくとわかるよってとなりのひとがいってる
349デフォルトの名無しさん:04/10/26 22:46:33
どうと言われても全然違う。
発生したときのデフォルトの挙動は似ているけど。
350デフォルトの名無しさん:04/10/26 22:54:36
アボートはsegvのような意味で発生するもんじゃないだろ
351デフォルトの名無しさん:04/10/27 07:23:37
セグメンテーションフォールトが原因でアボートしますた!
352デフォルトの名無しさん:04/10/27 18:02:11
shellについて質問させていただきたいのですけれでもここでよかったでしょうか?
もしまちがってましたら、誘導願います。

でしつもんなんですけれども

shellのなかで aaa*dat (*にはランダムの数字が入る)というような
ファイルのファイル名を取得したいと思っています
存在する場合には正しく取得できるのですが、
しない場合にファイルが存在しませんとのメッセージが大量にはかれて困っております

shellのなかで

filenm=`ls -1 aaa*dat >dev null`として取得しようとしているのですが
やはりそんざいしておりませんとログにでてしまいます。

そうぞうするところ。>は標準出力をかえるためで、
標準エラー出力を利用して、存在していませんとメッセージを出しているので
でるのかなと想像しているのですが、いきずまってしました。

正しいファイルが存在する際には代入、存在しないときは何のメッセージも
出力されないようにしたいのですが、何か良い方法はないでしょうか?
よろしくおねがいします。
353デフォルトの名無しさん:04/10/27 18:23:11
>>352
B-shell系なら
ls -1 aaa*dat 2>&1 >/dev/null
#2番(stderr)を1番(stdout)に振り替えてから元の1番と一緒に/dev/nullに振り替え

C-shell系なら
ls -1 aaa*dat >& /dev/null
#標準エラー出力を標準出力と一緒に/dev/nullに振り替え
354デフォルトの名無しさん:04/10/27 18:48:10
あのな、普通そういう目的でls使わないの。
355352:04/10/27 20:10:13
k-shellです(Cshell系なのかな?)。

>>353さん
ありがとうございました。試してみます。
356デフォルトの名無しさん:04/10/28 11:07:03
そしてスペースを含むファイル名でハマる、と…
357デフォルトの名無しさん:04/10/29 00:09:59
bash$ (shopt -s nullglob; files=aaa*.dat; for i in $files; do echo $i; done)
358デフォルトの名無しさん:04/10/29 01:14:17
>>357
zsh 使えよ
359デフォルトの名無しさん:04/10/29 02:11:00
select()やsend()などのシステムコールがシグナルによって失敗すると、
errnoにEINTRが返されますが、この時に受信したシグナルの値を取得する
ことは可能でしょうか?
360デフォルトの名無しさん:04/10/29 06:01:49
#include <stdio.h>
int
main()
{
char *tmp= "a";
const char *tmp2= "b";
strcat(tmp,tmp2);
return 0;
}
というソースを書いたのですがSegmentation faultになってしまいます。
strcatの使い方に間違いがあるのでしょうか?
分かる方お願いします。
361デフォルトの名無しさん:04/10/29 06:04:18
そういうのは,自分でシグナルハンドラ書いてるときに起こる。
362デフォルトの名無しさん:04/10/29 06:06:24
シグナルハンドラって良く分からないので調べてみますが、
こちらの実行環境に問題があるということですかね?
363デフォルトの名無しさん:04/10/29 06:07:20
>>361
先にお礼言っておくべきでした。
ありがとね。
364デフォルトの名無しさん:04/10/29 06:07:38
>>360
次の点で二重に間違っている。
* 文字列リテラルを変更しようとしている
* strcatで追加する分の空間を割り当ててない

UNIX以前の問題だこれは。

365デフォルトの名無しさん:04/10/29 06:11:10
>>360
問題は二つあります。まず一つ目

char *p = 'string';

式に確保した文字列は中身をいじっちゃいけません。
なぜ? といわれるかもしれませんがそういうものなのです(規格です)。

二つ目。

tmpの指してる先はどれくらいのメモリを確保できてますか?
それは、tmp2の内容を繋げてあふれない量ですか?

# もっとも一つ目の方の違反だけを指摘すりゃいいんだろうけど。
366デフォルトの名無しさん:04/10/29 06:26:36
>>364-365
お二人ありがとう。

>strcatで追加する分の空間を割り当ててない
メモリを再び、確保しなくてはいけないんですね。
やりかた調べてみます。
367デフォルトの名無しさん:04/10/29 06:48:23
>>360
おまえのプログラムはこれで充分

int main()
{
return 0;
}
368デフォルトの名無しさん:04/10/29 06:54:00
>>365
文字列をシングルクォートで囲むなよ。Perlじゃあるまいし。
369360:04/10/29 06:57:14
main()
{
char *tmp=(char *)malloc(22);

char *tmp2= "a";
char *tmp3= "b";

strcat(tmp,tmp2);
strcat(tmp,tmp3);

return 0;
}


とりあえずこれでいいのかな。
それにしても、このスレの質問はレベルの高い質問ばかりですね。
お邪魔しました。
370デフォルトの名無しさん:04/10/29 07:00:01
tmp[0] = '\0';
strcat(tmp,tmp2);
strcat(tmp,tmp3);

あとfreeな(この場合はしなくても結果は同じだが)
371デフォルトの名無しさん:04/10/29 08:09:45
>>360
C言語やめてVBとかにしなさい

というわけでUNIXやめなさい
372デフォルトの名無しさん:04/10/29 08:27:00
>>358
zshだと、
zsh$ (setopt NULL_GLOB; files=aaa*.dat; for i in $files; do echo $i; done)
こうなのかな? 一つも存在しない時うまく働かないね。
373デフォルトの名無しさん:04/10/29 09:25:13
おいおい、素直に
strcpy(tmp, tmp2);strcat(tmp, tmp3);

sprintf(tmp, "%s%s", tmp2, tmp3);
にしろよ。
374デフォルトの名無しさん:04/10/29 09:31:16
overflow防止のために、strlcpy/strlcatかsnprintfを使うべきだ。
375デフォルトの名無しさん:04/10/29 12:07:24
strncpy/strncatだろ
376デフォルトの名無しさん:04/10/29 12:18:48
>>375
いまどき strncpy/strncat なんて使ったらダメだってば。
OpenBSD/NetBSD/FreeBSD/Solaris にはあるよ > strlcpy/strlcat
377デフォルトの名無しさん:04/10/29 12:24:42
まあnだろうがlだろうがCで文字列処理書くと
だいたいバグの温床になるのがオチ
378デフォルトの名無しさん:04/10/29 12:25:34
strnファミリーは渡す長さが1足りない奴とかNUL termination忘れる奴とか
いるからね。strl*が出来てだいぶましになった。
379デフォルトの名無しさん:04/10/29 12:44:28
str*系もろくに扱えないってことは、UNIXスレは馬鹿ばっかってこと?
380デフォルトの名無しさん:04/10/29 12:48:05
str系なんてつかってるやつは馬鹿です
381デフォルトの名無しさん:04/10/29 12:48:48
ソウディス!!
ダデャーナザーン!!
アウア
382デフォルトの名無しさん:04/10/29 13:01:51
おれstrncpyなんか使った事無いよ。
仕様確認すんの面倒だから長さの判定が必要ならmemcpy使うし。
結局strlcpy と strlcatもstrnと同じ問題抱えてる。

strcat使う局面でバッファ管理するぐらいなら↓を使う。


s = strdup("hage");
s = strdupcat(s, "hage");
s = strdupcat(s, "hage");
s = strdupcat(s, "hage");

#define strdupcat2(s,cat1,cat2) strdupcat(strdupcat((s),(cat1)),(cat2))
#define strdupcat3(s,cat1,cat2,cat3) strdupcat(strdupcat2(s,cat1,cat2),(cat3))
#define strdupcat4(s,cat1,cat2,cat3,cat4) strdupcat(strdupcat3(s,cat1,cat2,cat3),(cat4))

strdupcat(s,cat) {
int catlen = strlen(cat);
if (s) {
int slen = strlen(s);
s = xrealloc(s, slen + catlen + 1);
memcpy(s + slen, cat, catlen);
*(char *)(s + slen + catlen) = 0;
} else {
s = xcalloc(1,catlen+1);
memcpy(s, cat, catlen);
*(char *)(s + catlen) = 0;
}
return s;
}
383デフォルトの名無しさん:04/10/29 13:06:33
↑のstrdupはxstrdupね。
x〜は確保できなかったら例外投げるラッパ。
メモリリークチェッカも兼ねてるが。
384デフォルトの名無しさん:04/10/29 13:10:16
つーかOpenBSDのstrlcatとか考えた奴は考えなしの馬鹿だろ。
こんなのが普及するとか言ってるUNIX使いマジ低脳。
385デフォルトの名無しさん:04/10/29 13:14:21
そうだね。
http://www.linux.or.jp/JF/JFdocs/Secure-Programs-HOWTO/library-c.html
これ見るとちょっと設計者の頭弱いかも。
使う気になる人いるんだろうか。
複雑性増えて混乱度高めただけというか。
まあstrn*系は使わないのが吉。
386デフォルトの名無しさん:04/10/29 13:32:03
>>382
それいいねえ。
LISPのconsっぽい。

どのみちstrcatでバッファオーバーする場合は別途何かしら処理するのが普通だから、
strlcat通すのはあんま意味ないかも。
そこまでするなら事前に文字列の長さ測れ、と。
途中でちょん切られても困る場合がほとんどだろうしね。
387デフォルトの名無しさん:04/10/29 13:38:40
>>384
かなり使われている(OpenBSD と NetBSD のかなりの部分は strl* で書
き直されている)し、ISO でも次期 C に strcpy_s strcat_s として入
れるよう議論してるみたいですよ。

strn* のクセがわかっている人は strl* を使う必要はないけど、多人
数で開発するなら strn* をわかってない人がいることも想定して、
strl* にするのが安全です。

388デフォルトの名無しさん:04/10/29 13:54:41
>>386
まさにそれ。
用途を想像できてないんだよな。
strn*も含めてstrlcpyやstrlcatは消えるべき。
何時使うんだよこれ。
勝手にチョン切られて良い局面なんてあるか?

>>387
相変わらずUNIX使い頭悪すぎだな。
まあおれが言うまでも無くいまだにコマンドラインベースで
物考える奴の頭の程度なんて知れてるけどさ。
strlに書き直されたって、OS書くのにわざわざそんな危ない事してるとは呆れるね。
きっとOpenもNetもさ、いまだにどっちも仕事で聞いた事ないから
超ドマイナーなんだろうね。
389デフォルトの名無しさん:04/10/29 13:59:14
祭り?
390デフォルトの名無しさん:04/10/29 13:59:16
>>388
自分の無知を棚に上げて(ry
391デフォルトの名無しさん:04/10/29 13:59:29
>>387
もういっこ突っ込んどくと、

>strn* をわかってない人がいることも想定して、

こんな想定無意味。
おれならstrn*とか使ってたらメンテしにくくなるから書き直せって言うけどね。
392デフォルトの名無しさん:04/10/29 14:00:26
>>390
反論するならちゃんと最後まで言えよ低脳。
393デフォルトの名無しさん:04/10/29 14:04:05
>>382
何度も無駄にくりかえされるstrlenがダサすぎ。
394デフォルトの名無しさん:04/10/29 14:06:04
>>393
ありゃりゃ。
ほんと低脳だな。
無駄なstrlenなんて1つもないんだが。


ところで、strlcpyやstrlcatっていつ使うの?(笑
395デフォルトの名無しさん:04/10/29 14:09:29
無駄だと思っていないあたりが頭悪すぎ。
396デフォルトの名無しさん:04/10/29 14:11:53
いまどきCで文字列処理なんてする奴は低脳。
397デフォルトの名無しさん:04/10/29 14:12:37
>>395
低脳クン、
あと何か無駄なとこあるかな?(笑



しいて無駄って箇所を上げるとすれば、xcallocのゼロ初期化だな。
あそこはxmallocで良い。
まあ即興で作った例だから本質とは無関係な部分だけどね。

398デフォルトの名無しさん:04/10/29 14:13:39
>>396
いいよいいよー(笑
そうだよね、いまどきCなんて低脳。
でもUNIXっていまだにCなんだよね。
なんでだろうね(大笑
399デフォルトの名無しさん:04/10/29 14:14:23
>>382
CのようでCでない不思議な構文
400デフォルトの名無しさん:04/10/29 14:20:53
>>399
普通のCだと思うが。
401デフォルトの名無しさん:04/10/29 14:21:48
文字列処理不要ならCが良い
402デフォルトの名無しさん:04/10/29 14:23:23
ここは舞い上がったロートルが真昼間から常駐するスレですね
403デフォルトの名無しさん:04/10/29 14:23:51
いや、>>382は正論だと思う。
結局誰もstrl*の使い道思いつかないし。
自分もちょっとstrnとかは避けたい。
404デフォルトの名無しさん:04/10/29 14:23:56
ロートルのトロールですね。
405デフォルトの名無しさん:04/10/29 14:25:19
そもそもstrcatは使う前に文字列の長さは把握するのが普通だよ。
strlcatに書き換えたって、どこ書き換えたの?>>387
406デフォルトの名無しさん:04/10/29 14:27:20
>>399-404
うわ、
やっぱり反論できないから、こんどは手のひらを返したかのように擁護レスがちらほら(笑
>>404なんて自分を見失ってるし(禿笑

なんなんだお前ら。
面白すぎだぞ!
407デフォルトの名無しさん:04/10/29 14:28:07
Mac板にカエレ
408デフォルトの名無しさん:04/10/29 14:28:35
strncpyは固定長バッファでがんばるときに使うのさ。
409デフォルトの名無しさん:04/10/29 14:31:15
>>405
ほんと謎だねえ(笑
どこかきかえたのでちゅか?>>387

>>407
残念ながらこの板がテリトリーなんだよ。

>>408
どうがんがるんでちゅか?
410デフォルトの名無しさん:04/10/29 14:31:45
std::string使えればそっちつかっちゃうな。フォーマット系統が弱いのが辛いけど。
411デフォルトの名無しさん:04/10/29 14:32:51
つまりRuby厨ということか。
412デフォルトの名無しさん:04/10/29 14:36:31
>>410
おれもC++使えれば>>382みたいなのは作らんがなあ。

でもここUNIXスレだし、しかも元がstrcatの話だったしでね、
Cでわかりやすくノウハウを伝授したつもりなんだがねえ。
さすが低脳集団を抱えるスレは違うわ。

>>411
いや、Rubyなんて関係ないじゃん(笑
そろそろstrlcatの使い道とやらを聞かせてくださいよー
413デフォルトの名無しさん:04/10/29 14:37:54
C使いでないことは確かだ
414デフォルトの名無しさん:04/10/29 14:38:11
だな。
415デフォルトの名無しさん:04/10/29 14:40:20
>>409
MTUに収まるようなUDPに文字列詰めるときとか
あとは高速化のためにmallocの代わりに固定長バッファを
バラバラともらうようなライブラリ使わされたときとか。
416デフォルトの名無しさん:04/10/29 14:43:22
>>413=414
うぷぷpppp
判り易過ぎる自演どもでしたー!
あのさ、strl*の使い道聞いてただけなのに
UNIXスレ君だけになっちゃったよ(笑

もうどうしようもないね、ここ。


>>415
うーん、それはstrlcpyやstrlcatの用途ではないな。
書き込んでない残りの文字数を把握する必要があるでしょ?
それ別途計算するの?
strl*の例としては無理やり使ってるとしか思えないな。

もうちょっと説得力のある使い道ないの?
417デフォルトの名無しさん:04/10/29 14:50:46
snprintfでいいじゃん。
418デフォルトの名無しさん:04/10/29 14:51:33
OS とかサーバソフトみたいに、データが正しいことよりバッファオー
バーフローを防ぎつつ動き続けることのほうが優先される場合に strl*
を使うですよ。

foolproof なんだから、fool でない人にメリットがないのは当然。
419デフォルトの名無しさん:04/10/29 14:58:11
>>418
いやfoolだとして、なんでわざわざmemcpyじゃなくてstrl*使うのかな、と。
>>418みたいな局面ならそもそも\0終端文字列なんて出番ないし。
つーかstrl*が必要な局面教えてちょーだいよ、ってさっきから言ってるんだけどね…。
パフォーマンス考えても得体の知れないstrl*よりはmemcpyの方が期待できるし。
420デフォルトの名無しさん:04/10/29 14:58:38
>>418
途中で切られたデータを元に動きつづけるの?
421デフォルトの名無しさん:04/10/29 15:01:15
もういいよ。
strl*は馬鹿が自己満足で作ったクソ関数です。
422デフォルトの名無しさん:04/10/29 15:11:22
ぷぷぷ君が書き込まなくなっちゃった。
423デフォルトの名無しさん:04/10/29 15:13:22
>>419
つまりさ、strlcpyとstrlcatはどっかのキモデブアニオタOpenBSD信者がろくに
開拓されていないクソマイナーOSなことをいいことに自分の自己主張のためだけに
一般公開してISOに提案したはいいけど相手にされず馬鹿にされて反論できなくて
くやしくて泣きながら盗んだバイクにガスが入ってなくて結局徒歩で走り出した
あの日15の夜、ということでいいです。
424デフォルトの名無しさん:04/10/29 15:21:01
snprintfは書式によって出力の長さが簡単に予測できないから意味あるけど
strlcpy|catはあんまり意味ないね
425デフォルトの名無しさん:04/10/29 15:22:55
だな。
426デフォルトの名無しさん:04/10/29 15:38:02
strl*使おうとするやつは想像力が足りないんだと思う。
418とか無茶苦茶なこと言ってるし。
427デフォルトの名無しさん:04/10/29 15:42:58
>>426
理解力が足りないですね。
428デフォルトの名無しさん:04/10/29 15:47:13
str*_s を ISO に提案したのは Microsoft じゃなかったっけ
429デフォルトの名無しさん:04/10/29 15:49:22
>>419
strl* が「必要」なんて言ってる奴はいないんじゃ?
430デフォルトの名無しさん:04/10/29 16:43:00
strl*が必要な局面?
そんなのstrn*が必要な局面に決まってるだろ。
431デフォルトの名無しさん:04/10/29 17:35:09
Ruby最強!
Ruby >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> C
432デフォルトの名無しさん:04/10/29 17:40:33
hihi
433デフォルトの名無しさん:04/10/29 19:18:21
ゼロ終端文字列
イラネ
434デフォルトの名無しさん:04/10/29 23:55:46
2004年にstrなんとかとかいうレガシー関数の話なんてしてないで
std::string使えよ
435デフォルトの名無しさん:04/10/29 23:57:24
>>434
何か(考えが)浅いな
436デフォルトの名無しさん:04/10/30 00:11:00
>>435
深い英知を聞かせてもらおう
437デフォルトの名無しさん:04/10/30 00:13:29
>>436
新しい知識を一切勉強することなしに定年まで乗り切るんだよ
最新のものに手を出し始めたらきりがないからな
438デフォルトの名無しさん:04/10/30 00:17:13
>>437
あぁ、ごめん、私はプログラマじゃないんだ。
あまり古いことにしがみついていたら論文の一つも書けないんだよ。
もっとも、君が言うのはプログラミングの「テクニック」に関する事だろうけれど。
439デフォルトの名無しさん:04/10/30 00:17:22
どこ行ってもCの話は荒れるな。
440デフォルトの名無しさん:04/10/30 00:23:25
みんなRubyでCを捨てようぜ。
441デフォルトの名無しさん:04/10/30 00:24:46
RubyとCは一心同体少女隊。
Cを捨ててRubyだけが生き残ることはありえない。
442デフォルトの名無しさん:04/10/30 01:23:06
うぷぷpppp
443デフォルトの名無しさん:04/10/30 01:37:48
C は Obsolete です。
444デフォルトの名無しさん:04/10/30 01:43:40
C は Absolute です。
445デフォルトの名無しさん:04/10/30 01:45:50
社会に下水が必要だからといって誰もが下水に降りて汚水まみれになる必要はない。
汚れ仕事は一部の人間だけで十分だ。
446デフォルトの名無しさん:04/10/30 02:00:42
>>445
アセンブラに対してそれを言うなら分かるが
C にはあてはまらんでしょ
447デフォルトの名無しさん:04/10/30 02:11:14
>>446
いや、言語のことじゃなくてプログラマそのもののことを言っているのじゃないかな
448デフォルトの名無しさん:04/10/30 02:14:20
C もそうなりつつある
449デフォルトの名無しさん:04/10/30 02:23:45
Ruby最強!
Ruby以外の言語はケロ!!!!!!!!
450デフォルトの名無しさん:04/10/30 02:28:59
Ruby厨は祈った
「Ruby以外の言語は消えろ!」

(その願い、叶えよう)

次の瞬間、Rubyインタプリタのソースが消えてしまった!
451デフォルトの名無しさん:04/10/30 02:37:21
UNIXなぞ問題外.^^;;;
452デフォルトの名無しさん:04/10/30 02:41:40
CPUがRubyを解釈するようになれば無問題!!
453デフォルトの名無しさん:04/10/30 02:46:59
まつもと様は既に世界最高の至高プログラマである。
今日もRubyを使える幸せに震える毎日です。
Ruby以外の言語はもういらない。
全てのシステムはRubyで記述されなければならない。
454デフォルトの名無しさん:04/10/30 02:47:07
>>450
Ruby製Rubyインタプリタを作れば無問題
455デフォルトの名無しさん:04/10/30 02:48:31
> Ruby以外の言語はもういらない。

実際そうだよな。
456デフォルトの名無しさん:04/10/30 02:50:11
>>455
Rubyだと不満な用途はたくさんあるだろうに。
457デフォルトの名無しさん:04/10/30 02:55:47
Rubyも気の毒だよな
こんな基地外に付きまとわれて
458デフォルトの名無しさん:04/10/30 02:57:26
それだけRubyは素晴らしいということだ。
459デフォルトの名無しさん:04/10/30 02:57:41
まつもとの失言暴言が基地外を召還するんだから自業自得だろ。
460デフォルトの名無しさん:04/10/30 03:00:24
失言ってあの「C++なぞ問題外」のことか?
いい加減しつこい奴等だな。
461デフォルトの名無しさん:04/10/30 03:01:50
そんなのほんの一部^^;;;
462デフォルトの名無しさん:04/10/30 09:00:12
>>382
Cでやるなら、こんななんちゃってじゃなくて、
glibのgstring.h使った方がいい。
463デフォルトの名無しさん:04/10/30 09:10:16
Theo は de Raadt です。
464デフォルトの名無しさん:04/10/30 10:48:31
>>462
glibなんてリンクするかよボケ(^^)
465デフォルトの名無しさん:04/10/30 10:52:07
もうstr*ネタはいいだろ
もっとUNIXスレらしい話すれ
466デフォルトの名無しさん:04/10/30 11:17:40
時々無意味な事で議論するよな、このスレ。
467デフォルトの名無しさん:04/10/30 11:20:47
glibはクソglibはクソglibはクソglibはクソglibはクソglibはクソglibはクソglibはクソglibはクソglibはクソ
468デフォルトの名無しさん:04/10/30 11:34:17
また原理主義者か
469デフォルトの名無しさん:04/10/30 11:45:02
体制に正義は成し得ない
470デフォルトの名無しさん:04/10/30 21:07:57
U
471デフォルトの名無しさん:04/10/30 22:46:02
N
472デフォルトの名無しさん:04/10/31 01:46:46
K
473デフォルトの名無しさん:04/10/31 01:53:55
OpenBSD
474デフォルトの名無しさん:04/10/31 02:14:11
Kde
475デフォルトの名無しさん:04/10/31 02:17:29
Unicode
476デフォルトの名無しさん:04/10/31 02:32:16
Ssl
477デフォルトの名無しさん:04/10/31 03:44:30
Apache
478デフォルトの名無しさん:04/10/31 16:41:12
Linuxのlinux/list.hに

#define INIT_LIST_HEAD(ptr) do { \
(ptr)->next = (ptr); (ptr)->prev = (ptr); \
} while (0)

こういう個所があったのですが、このdo{...}while何を意味しているんでしょうか?
479デフォルトの名無しさん:04/10/31 16:46:49
復文をマクロ化する時の定石。

if (x) macro(a); else hoge();

と書いても誤動作しない。(forやwhile等でも同じ)
480デフォルトの名無しさん:04/10/31 17:04:53
>>479
あー、なるほど。

あとlist.hを見ていて思ったのは、ある構造体の定義に
struct list_head {struct list_head *next, *prev;};
という構造体そのもの(ポインタではない)を入れておいて、
この値に他の構造体のstruct list_headのアドレス値を入れて
各要素間の関係を表すのは分かりましたが、ここから、
その構造体のメンバのアドレスはどうやって取得したらいいんでしょうか?
481デフォルトの名無しさん:04/10/31 17:17:30
struct hoge{
struct list_head list;
/* ユーザ定義データ */
};
みたいな感じで使う。
482デフォルトの名無しさん:04/10/31 17:36:55
>>481
linux/device.h にはdevice_driver構造体のような
struct device_driver {
char* name;
struct bus_type* bus;
struct semaphoreunload_sem;
struct kobjectkobj;
struct list_headdevices;

というようにlist_headが構造体の頭にないものもありました。
他にもこういうものはあるようです。この場合、次のオブジェクトの
devicesのアドレスから、どうやって"name"や"bus"といったメンバの
値を取得したらいいのでしょうか。

っていうかソース読んできます。
483デフォルトの名無しさん:04/10/31 17:40:08
あ、tabが入ってました。すみません。
struct device_driver {
char * name;
struct bus_type * bus;
struct semaphore unload_sem;
struct kobject kobj;
struct list_head devices;
struct module * owner;
int (*probe)(struct device * dev);
int (*remove)(struct device * dev);
void (*shutdown)(struct device * dev);
int (*suspend)(struct device * dev, u32 state, u32 level);
int (*resume)(struct device * dev, u32 level);
};
484デフォルトの名無しさん:04/10/31 17:53:26
>>482
list.hのlist_entryマクロだろう。
485デフォルトの名無しさん:04/10/31 18:33:49
>>484 どうもです。このようにtypeof()に依存した形での実装となってました。

[[[ linux/stddef.h ]]]
#undef offsetof
#ifdef __compiler_offsetof
#define offsetof(TYPE,MEMBER) __compiler_offsetof(TYPE,MEMBER)
#else
#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
#endif

[[[ linux/kernel.h ]]]
#define container_of(ptr, type, member) ({\
const typeof( ((type *)0)->member ) *__mptr = (ptr);\
(type *)( (char *)__mptr - offsetof(type,member) );})

[[[ linux/list.h ]]]
#define list_entry(ptr, type, member) \
container_of(ptr, type, member)

こんな感じに使うみたいです。
struct device_driver * nextdd = list_entry(p_dd->next, struct device_driver, devices);
486デフォルトの名無しさん:04/11/01 09:53:20
;
487485:04/11/01 10:42:59
linux-2.4.27ではlist_entryはこのようなシンプルな形でした。

#define list_entry(ptr, type, member) \
((type *)((char *)(ptr)-(unsigned long)(&((type *)0)->member)))

なんで2.6でああいう面倒な形になったのか分かる人はいますか?
488デフォルトの名無しさん:04/11/02 06:48:34
Cで自分自身のプロセスIDの取得方法を教えてください。
489デフォルトの名無しさん:04/11/02 06:49:47
>>488
#include <sys/types.h>
#include <unistd.h>

pid_t getpid(void);
490デフォルトの名無しさん:04/11/02 19:26:15
>>489
いかにもマニュアルからコピペしたけど空白消すのめんどくさかった感じがいいね.
491デフォルトの名無しさん:04/11/02 19:58:46
>>490
「そんなんCじゃないだろ」「うっせー、ここはUNIXスレだ。POSIXだってOKだろ」
「ふざけんな、"Cで〜"って書いてあんだろ」
って質問者無視した罵りあいが読めなかったのは残念だが。
492デフォルトの名無しさん:04/11/03 02:48:50
>>489
そんなんCじゃないだろ
493デフォルトの名無しさん:04/11/03 03:11:23
どこがCじゃないんだよヴォケ
494デフォルトの名無しさん:04/11/03 03:16:00
ANSI C で、とは書いてない罠
495デフォルトの名無しさん:04/11/03 03:21:46
メモリ操作だけでPIDを算出しろ
496デフォルトの名無しさん:04/11/03 03:24:37
というかこんなに引っ張るほどのネタか
497デフォルトの名無しさん:04/11/03 03:30:21
自作自演だろ
498デフォルトの名無しさん:04/11/03 18:02:09
496=497
499デフォルトの名無しさん:04/11/04 12:03:19
zlibって暗号化zipの圧縮・伸長もできるんですか?
500デフォルトの名無しさん:04/11/04 13:08:00
そんな餌で――
501デフォルトの名無しさん:04/11/04 13:52:44
皮って良く伸びるんだよね
502デフォルトの名無しさん:04/11/04 15:40:13
>>499
できる
503デフォルトの名無しさん:04/11/04 17:07:40
CPUの数を取得する方法を教えてください
504デフォルトの名無しさん:04/11/04 17:13:06
>>503
sysctl や /proc/cpuinfo で取れるカモ
505デフォルトの名無しさん:04/11/06 16:21:32
ファイルを作成するときに既に存在する名前だったら名前に番号をつけて
作成したいんですが、ディレクトリ内のファイル一覧を取得するシステムコール
とかライブラリは有りませんか?
506デフォルトの名無しさん:04/11/06 16:37:56
>>505
「既にファイルが存在していたら書き込み用オープンに失負する」て
開き方のがあったと思うが忘れた。たしか fopen() か open()。
507デフォルトの名無しさん:04/11/06 17:08:14
man opendir
508デフォルトの名無しさん:04/11/06 17:31:06
>>506
open(2): O_EXCL | O_CREAT

fopen(3)は駄目。FILE *にしたければ、open(2)してから、fdopen(3)
509デフォルトの名無しさん:04/11/06 17:34:17
>>505
一覧を取得する必要はないんでないかい?

fname = 最初の名前
for (i = 0; stat(fname, ...) == 0; i++) {
fname = 最初の名前に i を混ぜたもの;
}
fp = fopen(fname, ...);
510デフォルトの名無しさん:04/11/06 17:35:16
>>506,507
506のそれは考えましたが、すでに連番でファイルが多数あると遅くなりそうだったので。
man opendirで出てきたscandirで出来そうです。
返答ありがとう。
511デフォルトの名無しさん:04/11/06 17:52:23
>>506
「失負」ってなに?
512デフォルトの名無しさん:04/11/06 17:54:11
そうして移植性の低いプログラムがまた一つ。
513デフォルトの名無しさん:04/11/06 18:04:29
>>508,509
お二人もどうもです。

>>512
scandirのこと?

というか調べるにはひとつひとつ照合していかないといけない、
他に方法は無いのは当り前ですね。
そこに気付かなかった、我ながら阿呆でした。
scandirはむしろソートしたりで509のが良さそうなので509のやります。
514デフォルトの名無しさん:04/11/06 18:13:32
for (i = 0; stat(fname, ...) == 0; i++) {
fname = 最初の名前に i を混ぜたもの;
}

fp = fopen(fname, ...);
の間でfnameと同じ名前を持つファイルを作られたら・・・
まあまずそんなことは起きないと思うけど。
515デフォルトの名無しさん:04/11/06 19:20:41
>>510
それだとレース状態が存在する。O_EXCLが正解。
516デフォルトの名無しさん:04/11/06 19:49:22
素直にEXCLを使いたがらない人間がこんなにもいることにおじさんびっくりだよ。
517デフォルトの名無しさん:04/11/06 21:11:49
アトミック操作というものですネ!!!
518デフォルトの名無しさん:04/11/06 21:14:37
EXCEL使えよ
519デフォルトの名無しさん:04/11/06 21:42:19
Windows使えよ
520505&510:04/11/06 21:58:12
man斜め読みでO_EXCLをファイルが存在しなかったらエラーになる
と勘違いしていて508が??でした。
manちゃんと読んで今はきちんと理解できました。
皆さんありがとう。

ところで
Advanced Programming in the UNIX(R) Environmentって日本語訳版は無いんですか?
521デフォルトの名無しさん:04/11/06 22:09:07
522デフォルトの名無しさん:04/11/07 14:36:41
C言語でunsigned long以上の数字の書かれた文字列を整数に変換して、16進数に変換したいのですが何かいい方法はないでしょうか?
523デフォルトの名無しさん:04/11/07 15:00:43
>>522
普通にatoiとsprintfじゃだめなのか?
524デフォルトの名無しさん:04/11/07 15:02:18
>>522
gmp
525デフォルトの名無しさん:04/11/07 15:05:34
UNIXにまったく関係ない
526デフォルトの名無しさん:04/11/07 15:08:09
Windowsならint64のprintfとかできるよ
UNIXではできないんじゃないかなあ
527デフォルトの名無しさん:04/11/07 15:18:14
>>523
どうやるんですか?
528デフォルトの名無しさん:04/11/07 15:29:39
526
529デフォルトの名無しさん:04/11/07 15:36:11
long long intならsprintfで%llX
530529:04/11/07 15:38:48
unsigned long long intなら
531デフォルトの名無しさん:04/11/07 15:45:54
%llう
532デフォルトの名無しさん:04/11/07 16:42:05
>>531
16進表示
533デフォルトの名無しさん:04/11/07 17:24:11
atoiなんかつかうやつはぱかです
534デフォルトの名無しさん:04/11/07 23:22:10
>>533
もっと詳しく
535デフォルトの名無しさん:04/11/07 23:38:03
Cスレでやってたよな。atoiの問題点。ここに書くまでもないけどさ。
536デフォルトの名無しさん:04/11/08 03:35:41
つよそうな関数がいろいろ載ってるけど

DESCRIPTION
The strtoul() function converts the string in nptr to an unsigned long
value. The strtoull() function converts the string in nptr to an
unsigned long long value. The strtoumax() function converts the string
in nptr to an uintmax_t value. The strtouq() function converts the
string in nptr to a u_quad_t value.

sprintfがありなのだkら、sscanfもありですか?
537デフォルトの名無しさん:04/11/08 17:08:52
_
538デフォルトの名無しさん:04/11/12 13:42:28
保守しておこう
539デフォルトの名無しさん:04/11/13 13:45:02
>>526

strtoll() は C99 の規格に含まれていて、
現役の UNIX 系 OS になら、たぶんどれにでもある。
表示の方は 529 の言う通り。

>>532

529でなにか問題が?
540デフォルトの名無しさん:04/11/13 14:23:49
ハードウェアを制御する際に、CかC++で迷っているのですが
どちらの言語の方が性能、機能的に効率が良いのでしょうか?
541デフォルトの名無しさん:04/11/13 14:47:29
>>540
腕次第
542デフォルトの名無しさん:04/11/13 14:48:42
>>540
そんなのどっちでもいいよ。
強いて言うなら無駄の少ないC。
543デフォルトの名無しさん:04/11/13 14:50:48
>>540
どーせアセンブラみながらデバッグするんだから
544デフォルトの名無しさん:04/11/13 15:20:34
>>541-543
有難うございました。
545デフォルトの名無しさん:04/11/14 04:24:37
消費メモリに神経質だったり、realloc必須とかならCかな
長期的に保守したり、おおざっぱでいいならC++にしとけ
546デフォルトの名無しさん:04/11/14 20:47:17
vinelinux3.0で
scanfの%[^A]てするとAに出会うとそこで引数への入力が終ってしまいます。
123A456 だと 123しか入力されません。
123456よなるのが正しい動作ですよね?
547デフォルトの名無しさん:04/11/14 21:00:26
いいえ
548デフォルトの名無しさん:04/11/14 21:04:00
>>546
scanf()の文字セット指定は、その文字セットが終了した時点で変換を終了します。
したがって、123456よなりません。
549デフォルトの名無しさん:04/11/14 21:12:38
>>547>>548
ども、一致する文字がなくなったら次に移るんですね。
550デフォルトの名無しさん:04/11/14 21:41:28
%[1-9]
551デフォルトの名無しさん:04/11/14 21:55:21
>>548
何気なく546に合わせているところにワラタ
552デフォルトの名無しさん:04/11/14 22:01:00
Cだってマクロ使いまくるならC++と変わらん。
553デフォルトの名無しさん:04/11/14 22:05:58
誤爆?
554デフォルトの名無しさん:04/11/14 22:08:22
みなさん、パス名の配列の大きさに_POSIX_PATH_MAXを使ってます?
555デフォルトの名無しさん:04/11/15 01:58:19
dlopen()で得られたハンドルは、プログラム終了時に全てdlclose()する必要がありますか?
556デフォルトの名無しさん:04/11/15 04:30:24
8 個の空白でしたが、TAB のつもりですか?).
557デフォルトの名無しさん:04/11/15 09:35:42
>>555
ない。
558デフォルトの名無しさん:04/11/15 17:19:35
unixでグラフィックスを扱うには何を勉強したらいい?
559デフォルトの名無しさん:04/11/15 17:32:44
>>558
具体的に何がしたいんだ?
560デフォルトの名無しさん:04/11/15 17:39:47
ふと思ったのですが,
文書ファイルに文字を上書きをする場合は,単にwrite()で書き込みをすればそれで十分と思ったのですが,
文書ファイルに文字を挿入する場合っていったいどういう処理が行われているんでしょうか?
そのまんま考えてみると,挿入された文字以降のデータを全て移動させないといけないはずなんで,それってものすごい効率悪い処理だな〜って思い,気になってしまいました.
561デフォルトの名無しさん:04/11/15 17:44:26
何か聞こえたような気がする
562デフォルトの名無しさん:04/11/15 18:00:54
>>558
グラフィックスを表示する→GTK+
画像処理する→C
563デフォルトの名無しさん:04/11/15 18:01:57
GTKなんて軟弱なもの使ってないでXlibの勉強しなさい。
564デフォルトの名無しさん:04/11/15 18:23:30
>>563
それ生で使っている人っているの?
565デフォルトの名無しさん:04/11/15 19:07:12
個人的には GTK より Qt の方が分かりやすかった.
566デフォルトの名無しさん:04/11/15 19:35:03
>>564
います
567デフォルトの名無しさん:04/11/15 19:52:18
>>566
私は画像処理とかが専門ではないのでGUI関連のライブラリとかについてもよく
知らないけれど、簡単に書ければ別になんでも良いと思っているんだ。
そんなことよりも勉強しないといけないことがたくさんある。
568デフォルトの名無しさん:04/11/15 19:58:07
はあ、そうですか。がんばってくださいね。
569デフォルトの名無しさん:04/11/15 20:16:41
gtkか。
新しいクラスのために延々定型コード書くのがめんどかった記憶があるがアレは改善されたのだろうか。
570デフォルトの名無しさん:04/11/15 22:33:10
>>558
グラフィックスを作りたいのか、解析したいのか
単なるGUIでいいのかで変わるだろ。
571デフォルトの名無しさん:04/11/15 23:04:25
画像処理とGUIは近いようで、ぜんぜん遠い。
572デフォルトの名無しさん:04/11/16 00:23:15
>>560
70年代ならUNIXのfile systemは特殊だったから、
その質問もこのスレでやる意味があるけど、
今や全てのシステムでfile systemがUNIX流になったから、
その質問は他の板でやった方がいいよ。

効率が悪いのが気になるような場合は、
それなりの構造を持たせるってだけですが。
573デフォルトの名無しさん:04/11/16 00:30:50
まさか今時ひとつのファイルで切った貼ったしないしね。
574デフォルトの名無しさん:04/11/16 00:32:06
>>560
まさか今時ひとつのファイルで切った貼ったしない。死ね。
575573:04/11/16 00:43:13
>>574
やってくれたねw
576572:04/11/16 01:48:10
ごめん
>>572
> 他の板で
< 他のスレで
の間違い。
577デフォルトの名無しさん:04/11/16 04:50:43
UNIX厨はこれだから(ゲラ
578デフォルトの名無しさん:04/11/16 09:32:34
>>560
テキストエディタでも作るのかい?
579デフォルトの名無しさん:04/11/16 13:37:14
kill PIDで殺される時に、殺される前にログファイルに殺されましたと書き出したいのですが、どうしたら実現できるでしょうか?
580デフォルトの名無しさん:04/11/16 13:38:27
SIGKILLをトラップしてログファイルに「殺されました」と書き出す。
581デフォルトの名無しさん:04/11/16 13:40:04
>>580
デフォールトはSIGTERMです。

>>579
man signal(3)
582デフォルトの名無しさん:04/11/16 13:42:29
>>579
SIGKILL受信時にsyslogに出力するようにkernelをhack
583デフォルトの名無しさん:04/11/16 13:44:55
>>580
つーか、SIGKILLトラップできたっけ?

>>579
そのプロセスを監視するプロセスを作るのも一つの手。
584デフォルトの名無しさん:04/11/16 14:21:59
SIGKILLトラップできちゃ非常手段としての意味ねーだろ。
585560:04/11/16 14:24:52
>>572
貴重なご意見ありがとうございました.
他のスレで改めて質問してみます.
>>578
いえいえ,ファイルの入出力について勉強をしているところで,ふと湧いて出た
疑問点なだけなんで,まだまだ作るとかそういう意図は特にないです.
586デフォルトの名無しさん:04/11/16 16:34:30
>>560
a) 1ファイルで読み書きするよ
    1. 挿入ポイントからバッファ1に読み込み
    2. 挿入する内容を書き込み
    3. 1. で読み込んだ後ろをバッファ2に読み込み
    4. バッファ1を 2. の後ろに書き込み
    5. 3〜4 繰り返し
b) 2ファイルで安全に読み書きするよ
    1. 挿入ポイントまで新しいファイルにコピー
    2. 挿入する内容を新しいファイルに追加
    3. 挿入ポイント以降を新しいファイルに追加
    4. ファイル名変更
c) OSに任せちゃうよ
    1. ファイルをメモリにマップ
    2. メモリ上で移動
    3. クローズ
587デフォルトの名無しさん:04/11/16 16:37:01
クラスタ分かれてることを利用して高速化とかできないのかね
588デフォルトの名無しさん:04/11/16 18:01:39
ここがLinuxプログラミングスレも含んでいるとして、皆さんはどうやって
gdb の使い方をマスターしましたか?
少しずつ使い方を覚えていくものでしょうか?
589デフォルトの名無しさん:04/11/16 18:10:09
普通はそうなんじゃないの?
大抵は「バックトレース出せ」と言われて起動の仕方とbtコマンドを
最初に覚えると思うが。
590デフォルトの名無しさん:04/11/16 18:25:08
(-_-)
591デフォルトの名無しさん:04/11/16 21:15:04
>>588
GUI版でかつ、CUIでも利用可能なフロントエンドから始めたら?
ddd, insight, xxgdbなど
592デフォルトの名無しさん:04/11/16 22:27:30
CUI版なんていらんと思う
593デフォルトの名無しさん:04/11/16 22:56:56
>>588
他の、GUIでとっつきやすいデバッガから練習しとけ。
デバッガとはどんなものかがわかったら、あとはgdbの使い方を学習するだけだ。
594デフォルトの名無しさん:04/11/16 23:46:03
>>592
GUIで全部網羅してたらごちゃごちゃして逆に使いにくいので
GUIはよく使う機能に限定してすっきりさせて、あまり使わない機能をCUIでさくっと指定ってのがいいのでは
と適当なことを言ってみるテスト
595デフォルトの名無しさん:04/11/17 01:28:26
CUIの利点は画面のログが簡単に取れることぐらいしかない
GUIだとそういう機能を用意しない限りできないからね
だからGUI機能が充実していればCUIがいらないと言う意味では同意
596デフォルトの名無しさん:04/11/17 01:29:54
あまりツールが使いこなせていない人達のスレですか?
597デフォルトの名無しさん:04/11/17 01:31:23
UNIXでデバッグなんて(プ
ご苦労さん
598デフォルトの名無しさん:04/11/17 01:32:48
>>597
おっしゃる意味がわかりかねます
599デフォルトの名無しさん:04/11/17 01:53:26
>>595
user define command
command BNUM ... end
600デフォルトの名無しさん:04/11/17 02:10:46
親プロセスが子プロセスの終了を検知するために、シグナルハンドラ内部で
SIGCHLDを捕捉して、waitpid()を実行するように実装しました。
void signlahandler(int signum)
{
 signal(signum, signlahandler);  //☆
 if(signum == SIGCHLD)
  waitpid(0, NULL, WNOHANG);
 //★
}
しかし、☆でシグナルハンドラの再設定すると、その時点でさらにSIGCHLDを
受信してしまい、延々とsignalhandler関数が呼び出されて
スタックオーバーフローとなりCoreを吐いてプロセスが異常終了してしまいます。
HPUXとAIXでこの現象が発生し、HPUXのmanのwaitpid()にはこの事が
書かれていました。正常に動作させるためには★の位置でシグナルハンドラの再設定を
しなければならないのですが、なぜこのような仕様なのでしょうか?
ちなみにAIXでは、waitpid()を実行せずに、★か☆の位置で再設定すると
同様にCoreを吐いて終わります。
説明が下手で意味がわからないかもしれませんが…知っている方がいましたら教えて下さい。
601デフォルトの名無しさん:04/11/17 02:26:15
シグナル落とさずに再登録か
602デフォルトの名無しさん:04/11/17 09:16:37
>>600
sigaction
603デフォルトの名無しさん:04/11/17 09:42:16
共有メモリの使い方について教えてください。

sys/shm.hを使って
if((shmid = shmget(key,100, IPC_CREAT | 0666)) < 0) {
perror("shmget");
exit(1);
}
といった事をしたいのですが、引数の100の所を200とか
大きな数字にすると実行時Invalid argumentといったエラーが出ます。
/proc/sys/kernel/shmmaxのファイルには33554432と書かれていたので、
33Mまで共有メモリを使えるということなのかな?と考えているのですが、
なにがまずいのでしょうか。

環境はRedHat Advanced Server Version1.2です。
604デフォルトの名無しさん:04/11/17 09:55:54
キーが既にある共有メモリの場合は当然それより大きいサイズはとれない。
605デフォルトの名無しさん:04/11/17 09:56:48
スレが違うかもしれないが質問します。

googleの検索結果って、
PERLで動いているの?JSP?PHP?
606デフォルトの名無しさん:04/11/17 10:02:41
Brainfuck
607デフォルトの名無しさん:04/11/17 13:29:35
googleの検索結果が返るレスポンスの微妙なディレイに癖があってそれが
Delphiの挙動によく似てるんだよな。だからたぶんDelphiに間違いないよ。
608デフォルトの名無しさん:04/11/17 14:37:55
googleの検索結果が返るレスポンスの微妙なディレイに癖があってそれが
GNU Emacs の挙動によく似てるんだよな。だからたぶん GNU Emacs に間違いないよ。
609デフォルトの名無しさん:04/11/17 14:53:28
googleの検索結果が返るレスポンスの微妙なディレイに癖があってそれが
田中の挙動によく似てるんだよな。だからたぶん田中に間違いないよ。
610デフォルトの名無しさん:04/11/17 14:55:54
>>605
検索結果は HTML です。間違いない。
611デフォルトの名無しさん:04/11/17 15:12:48
UNIXにはDelphiみたいな、C以外の言語でバイナリを吐くコンパイラってないの?
どれもCへのトランスレータばっかり。
612デフォルトの名無しさん:04/11/17 15:19:31
>>611
何か不満でも?
613デフォルトの名無しさん:04/11/17 15:35:45
>>605です。
というのも
http://www.google.co.jp/search?&num=ie=UTF-8&oe=UTF-8&hl=ja&lr=lang_ja&q=UNIX

searchと?の間って、よくsearch.cgiとか見られるから、
格張子はあるはずだよね・・・わかんないけど。
ちなみにphpもjspもcgiもplもだめですた。_| ̄|○
614デフォルトの名無しさん:04/11/17 15:37:48
>>613
くそしてねなさい
615デフォルトの名無しさん:04/11/17 15:45:32
奇妙な荒らしでしたね
616デフォルトの名無しさん:04/11/17 15:48:13
突然ですがすいません

*command line*: 指定されたライブラリlibmath.aがありません。

このようにでるのですが、いろいろ検索してみましたがよくわかりませんでした。
libmath.aがUNIX標準の数学ライブラリ?ということはわかりましたが
結局何をすればよいのでしょうか??
617デフォルトの名無しさん:04/11/17 15:56:25
風呂入って寝ろ。
618デフォルトの名無しさん:04/11/17 15:57:03
libmath.aを使わない様にプログラムを書き直す
とか
619デフォルトの名無しさん:04/11/17 16:00:45
>>617
黙れボケ。
>>618
フザケンナ。

620デフォルトの名無しさん:04/11/17 16:02:47
-lm
621デフォルトの名無しさん:04/11/17 16:12:30
突然ですがすいません

*command line*: 指定されたライブラリlibmath.aがありません。

このようにでるのですが、いろいろ検索してみましたがよくわかりませんでした。
libmath.aがUNIX標準の数学ライブラリ?ということはわかりましたが
結局何をすればよいのでしょうか??
622デフォルトの名無しさん:04/11/17 16:15:16
>>621
人間のクズだな。お前。
623616:04/11/17 16:18:27
619と621は私ではありません。

>>618
 すいません、具体的にはどうすればよいのでしょうか
>>620
 調べていたらそんな文字列は出てきましたがよくわからないのです・・・・。
624デフォルトの名無しさん:04/11/17 16:22:04
*command line*: ←これがムカツク
625616:04/11/17 16:24:48
>>624
そのようなことを言われてもテメェの顔の方がムカつきます。

626616:04/11/17 16:26:39
>>625
 あなた誰ですか
627616:04/11/17 16:27:25
>>626
あなた誰ですか

私はタモリです。

628デフォルトの名無しさん:04/11/17 16:27:58
libm.aじゃないのか
629デフォルトの名無しさん:04/11/17 16:32:53
>>616
>結局何をすればよいのでしょうか??
コンパイラにlibmath.aのありかを教える
630616:04/11/17 16:42:42
>>629
 どうやらlibmath.aが無いみたいなのでネットで探してDLしてみます
 
631デフォルトの名無しさん:04/11/17 16:46:14
>>616
だからlibm.aだってば
632デフォルトの名無しさん:04/11/17 16:47:21
つーか、根本的な勘違いをしている悪寒。
何をコンパイルしているのか、コマンドラインを晒してみ。
633デフォルトの名無しさん:04/11/17 16:50:30
>>631
おいらもそうは思うんだけど
libmath.aってのもぐぐると引っかってくるんだよね
634616:04/11/17 16:59:45
>>631
 あの・・荒らしとかでなくて本当に言っている意味がわかりません
>>632
flood > make
f90 -o dmomout main.o aci.o acj.o afi.o afj.o cfp.o nn.o nc.o zz.o -lma
th
ld *command line*: 指定されたライブラリlibmath.aがありません。
f90 fatal : ld command error : 1
*** Error code 1 (bu21)
make: fatal error

これのことですか?
635デフォルトの名無しさん:04/11/17 17:01:38
だっふんだ。
636デフォルトの名無しさん:04/11/17 17:07:27
>>634
まず、ifconfig っていうコマンドうって、IPアドレス調べて、それを教えてください。

637616:04/11/17 17:12:17
>>636
 IPアドレスで何かわかるんですか?

638デフォルトの名無しさん:04/11/17 17:14:17
私がtelnetで接続して代わりにやってあげます。

639デフォルトの名無しさん:04/11/17 17:15:28
いい加減スルーしようぜ
640デフォルトの名無しさん:04/11/17 17:17:21
ただしそれがローカルIPなら無理ですが。
ルータで設定してくれればOKです。
641デフォルトの名無しさん:04/11/17 17:17:59
>>638
ほんとこのスレみてるともどかしくてそう思うことはよくある
悪いことしないからさw
642616:04/11/17 17:18:25
なんかあまりにも素人すぎた質問だったみたいですね。
荒らしのつもりではなかったのですが失礼しました。

もっと自分で調べて出直してきます。

お騒がせしました。
643デフォルトの名無しさん:04/11/17 17:23:14
>>642
教授にはきけないよな?じゃあ、友達に聞くとか...(プログラム詳しい友達がいれば)


644デフォルトの名無しさん:04/11/17 17:53:47
>>634
f90ってフォートランか。which f90して表示されたディレクトリ近傍にあるんじゃない?
645603:04/11/17 20:39:30
ありがとうございました。>>604
もう一度調べてみます。
646デフォルトの名無しさん:04/11/17 22:32:57
この程度の質問にもアタフタするUNIX厨(ハゲ
647たなーか:04/11/18 01:45:11
>>609
ばれちゃった…
648デフォルトの名無しさん:04/11/18 03:55:04
壮大な釣りだったな
649デフォルトの名無しさん:04/11/18 12:59:44
Unix で指定した2つの日付の間に
日数を取得する方法を教えてちょんまげ
650デフォルトの名無しさん:04/11/18 13:30:10
651デフォルトの名無しさん:04/11/18 16:52:04
フォークの仕方を教えてください
652デフォルトの名無しさん:04/11/18 16:54:37
>651
人差指と中指の間に強く挟んで、最後に抜くようにリリースする。
653デフォルトの名無しさん:04/11/18 16:54:50
野球は知らんよ
654デフォルトの名無しさん:04/11/18 17:01:14
>>651
fork();をコールする
戻り値で親の動作をするか子の動作をするかを決める
それだけ
655デフォルトの名無しさん:04/11/18 17:24:05
>>652
手首を動かさないようにするのも重要だぞ
656デフォルトの名無しさん:04/11/18 17:25:49
struct sockaddr はどういうメンバで構成されているんですか?
/usr/include をgrepしても見つけられませんでした。
一応↓これみつけたんですけど違うだろうし。

#ifdef __USE_BSD
/* This is the 4.3 BSD `struct sockaddr' format, which is used as wire
format in the grotty old 4.3 `talk' protocol. */
struct osockaddr
{
unsigned short int sa_family;
unsigned char sa_data[14];
};
#endif
657デフォルトの名無しさん:04/11/18 17:31:20
>>656
そういうときは、/usr/include/*をgrepしてみるべし
658デフォルトの名無しさん:04/11/18 17:40:22
>>656
マジレスすると sa_family の値によって中身が変わる( sockaddr_in とか )から、
sockaddr そのものの sa_family 以外のメンバにはあまり意味は無い。
単に場所確保してるだけ (placeholder と言ふ)。
659デフォルトの名無しさん:04/11/18 18:04:55
>>657
見つかりました。
grep -rw 'struct sockaddr' /usr/include/*
で探してたんですけど見落としてただけでした。
sys/以下もviで開いて検索してたのになんで気付かなかったのか、
これだけに2時間ぐらい掛かってしまった。
2時間の成果↓

struct sockaddr {
sa_family_t sa_family;
char sa_date[14];
}
660デフォルトの名無しさん:04/11/18 18:17:55
>>658
ども。
getaddrinfoしてinet_ntopしたかったんですけどAF_INETを指定すると
struct in_addrへのポインタとみなされるって
とりあえずそのままai_addrを引数にしてみたけどやっぱりダメで、
どうすれば良いのか分からなかったのでとりあえずメンバを見てみようと思いました。

getaddrinfoってgethostbynameと違ってWEB上に手取り足取りの情報がまったくないんですね。
661デフォルトの名無しさん:04/11/18 18:31:46
探し方が悪いんだろうな
662デフォルトの名無しさん:04/11/18 18:48:24
>>647
やっぱり田中さんは四六時中webサーフィンしてるんですか?
663デフォルトの名無しさん:04/11/18 19:02:32
>>660
こんな感じじゃないの?
char buf[1024];
struct addrinfo *res = NULL;
if (getaddrinfo("localhost", "ftp", NULL, &res) == 0)
{
 while (res)
 {
  char* p = inet_ntop(res->ai_addr->af_family, res->ai_addr, buf, sizeof(buf));
  printf("%s\n", buf);
  res = res->ai_next;
 }
 freeaddrinfo(res);
}
664デフォルトの名無しさん:04/11/18 19:25:51
find /usr -type f -name '*.h'|xargs grep 'struct *sockaddr' /dev/null
定型句だからスクリプトを作っておいてもいいね。
665デフォルトの名無しさん:04/11/18 19:26:40
おれfind嫌い。
666デフォルトの名無しさん:04/11/18 19:39:33
656は色々苦労する時間でもってバイトしてその金で本買う方が
トータルの所要時間は短くなるだろうな。
667デフォルトの名無しさん:04/11/18 19:41:11
Emacsはgrepやファイン怒の結果を保存しておけるからな。マジお勧め。
668デフォルトの名無しさん:04/11/18 20:37:04
Emacsならmoccur使えや
669656:04/11/18 20:37:27
>>663
第2引数がres->ai_addrだとバッファには入りますがちんぷんかんぷんなものになります。

>>664
find /usr -type f -name '*.h'|xargs grep "$1" /dev/null
ですよね。作っときます。

>>665
とりあえずこれ買ってみます。
http://www.amazon.co.jp/exec/obidos/ASIN/4274065197/250-2073039-8082631

>>667
アルファベットと数字、enter、shift、capsLock、esc、コロンの縦列以外の正打率が
60%ぐらいなのでemacsは敬遠していましたが使ってみます。
670デフォルトの名無しさん:04/11/18 21:51:05
gerpの使い方教えろや ボケ。
671デフォルトの名無しさん:04/11/18 21:56:55
no manual entry for gerp
672デフォルトの名無しさん:04/11/18 22:20:44
673デフォルトの名無しさん:04/11/19 02:18:56
>>663
>   res = res->ai_next;
>  }
>  freeaddrinfo(res);
freeaddrinfo() に渡すのは getaddrinfo() で返されたポインタそのものじゃないとダメよ。

>>660
あえて inet_ntop() を使うんなら、こんな感じかな。
---
if(res->ai_family == AF_INET6){
inet_ntop(AF_INET6,
&(((struct sockaddr_in6 *)res->ai_addr)->sin6_addr),
buf, sizeof(buf));
printf("%s\n", buf);
} else if(res->ai_family == AF_INET){
inet_ntop(AF_INET,
&(((struct sockaddr_in *)res->ai_addr)->sin_addr),
buf, sizeof(buf));
printf("%s\n", buf);
}
---
けど、こういう場合は getnameinfo() を使うのが常套手段。
674673:04/11/19 02:25:28
getnameinfo() を使ったバージョンはこんな感じ。
---
struct addrinfo hints, *res, *res0;
char hbuf[NI_MAXHOST], sbuf[NI_MAXSERV];

memset(&hints, 0, sizeof(hints));
hints.ai_family = AF_UNSPEC;
hints.ai_socktype = SOCK_STREAM;
if (getaddrinfo("www.kame.net", "http", &hints, &res0) == 0) {
for (res = res0; res; res = res->ai_next) {
if (getnameinfo(res->ai_addr, res->ai_addrlen,
hbuf, sizeof(hbuf), sbuf, sizeof(sbuf),
NI_NUMERICHOST | NI_NUMERICSERV) == 0) {
printf("host=%s, serv=%s\n", hbuf, sbuf);
}
}
freeaddrinfo(res0);
}
---
マニュアルページを読めばわかるが、getnameinfo() は非常に強力なんで
大抵の場面で使える。

とりあえず、↓これは必携。
http://www.ascii.co.jp/books/detail/4-7561/4-7561-4236-2.html
675デフォルトの名無しさん:04/11/19 08:16:01
>>660
> getaddrinfoってgethostbynameと違ってWEB上に手取り足取りの情報がまったくないんですね。

http://www.soi.wide.ad.jp/class/20030030/materials_for_student/11/osamuNP11ver1.0.ppt
サンプルプログラム(URL)あり。
676デフォルトの名無しさん:04/11/19 09:07:07
みんな釣られて探してるし
見つかっても教えないくらいの余裕を持て
677デフォルトの名無しさん:04/11/19 09:14:04
>>660
…(堪えてる)…
678デフォルトの名無しさん:04/11/20 00:22:38
age
679デフォルトの名無しさん:04/11/22 10:37:09
保守
680デフォルトの名無しさん:04/11/23 21:56:54
しゅ
681デフォルトの名無しさん:04/11/27 14:46:37
捕手
682デフォルトの名無しさん:04/11/27 15:04:20
>>672
8番目クリックしたらここだった(笑)
683デフォルトの名無しさん:04/11/27 15:04:54
grepコマンドのスレッド作ったら?
684デフォルトの名無しさん:04/11/28 13:38:57
fopenでオープンしたファイルをオープンしたままの状態で(fcloseせずに)
中身をゼロバイトにする方法ってあるんでしょうか?
やはり、クローズしてからwモードでオープンしないと駄目なんでしょうか?

rewindしてから上書きしても前の内容が残っていて不都合がでるんです。
オープン直後にファイルをロックしているので、
クローズせずにオープンしたままの状態でファイルサイズをゼロにしたいのです。

つまりこのようにしたいのです。

log = fopen(LOG,"r+")
flock( fileno(log), LOCK_EX );
fgets(buf, MAXLEN, log)

//ここでファイル(logの)サイズをゼロにしたい

fprintf(log, " //

fclose(log);
flock( fileno(log), LOCK_UN );
685デフォルトの名無しさん:04/11/28 13:52:20
man ftrancate(2)
686デフォルトの名無しさん:04/11/28 13:52:45
au, 綴り間違った…

ftruncate(2)
687デフォルトの名無しさん:04/11/29 12:38:39
freopen(3)
688デフォルトの名無しさん:04/11/29 13:49:23
>>687
freopen(3)は、fclose(3)しちゃうので、その時にlockが外れます。
689デフォルトの名無しさん:04/11/30 01:47:12
うんこ
690デフォルトの名無しさん:04/11/30 06:44:48
>>684
アンロックはクローズと一緒にやりな。
691デフォルトの名無しさん:04/11/30 17:08:08
>>685-690
解決しました。どうもありがとうございました。

ftruncateは現在プログラム内でオープンしているファイルに対しての
操作は出来ないのかなと思っていたのでftruncateのことは無視してました(藁

ていうか>>684は別スレに書き込んだ質問なのに
勝手にこっちにコピペされてた(藁


692デフォルトの名無しさん:04/11/30 19:51:28
>>691
逆だよ。オープンしていなければ使えないんだよ。
693デフォルトの名無しさん:04/11/30 21:09:20
>>691
open→fopenって類推しちゃったのかも知れないけど、
stat→fstatと同じ関係ね。

しかしこれ名前をfdtruccate, fdstatにするべきだったな。
694691:04/11/30 22:38:10
カウンターを作る途中で躓いていただけです。
で、ソースはこうなったので問題は解決です。

fclose(log);
if((log = fopen(LOG,"w")) == NULL){
printf("ダメぽ");
return FALSE;
}

    ↓

ftruncate(fileno(log), 0);
rewind(log);
695誰か教えてください!2:04/12/02 12:58:48
ファイルarg-test1 の内容が
#!/bin/sh
echo $#
echo $1 $2 $3 $11 $12
shift 2
echo $1 $2 $3 $11 $12
のとき,
./arg-test1 1 2 3 4 5 6 7 8 9 10 11 12
を実行して,$#, $1 $2 ...,shiftの意味を確認 せよ.
(ヒント: script 中の 11, 12 を 21,22 に変更してみ よ.)

696誰か教えてください!2:04/12/02 13:01:07
1)ファイルarg-test の内容が
#!/bin/sh
for i
do
echo $i
done
echo '$*'
for i in $*; do
echo $i
done
echo '"$*"'
for i in "$*"; do
echo $i
done
echo '$@'
for i in $@; do
echo $i
done
echo '"$@"'
for i in "$@"; do
echo $i
done
のとき,
./arg-test abc def "abc def"
と入力した結果を参考にし,$@ と $* の差を説明しろ.
2)上記問題で,./arg-testと,./ を指定している理由を考えろ.
695です。すみませんがよろしくお願いします!!!

697デフォルトの名無しさん:04/12/02 13:06:24
縦読み?
698誰か教えてください!2:04/12/02 13:08:40
はい。まじでよろしくおねがいします!!
今日までのレポなんです‥
699デフォルトの名無しさん:04/12/02 13:17:55
結果を参考にしと書いてあるのに結果すら出さない、
そんな奴は落第してしまえ。
こんなの通しても世のためにならじ。
考えろって書いてあるのに自分で考える気ゼロじゃねーか。
700デフォルトの名無しさん:04/12/02 13:23:23
ネタにマジレスすんな
701デフォルトの名無しさん:04/12/02 13:30:58
はい次の方〜。
702デフォルトの名無しさん:04/12/02 18:12:12
ここはいつから宿題スレになったんですか?
703デフォルトの名無しさん:04/12/02 18:24:53
もうその瞬間は過ぎました。
704デフォルトの名無しさん:04/12/02 18:36:16
>>696
${@+"$@"}がないのは納得がいかねえ。
705デフォルトの名無しさん:04/12/04 19:49:35
dup2(fd, STDIN_FILENO);
dup2(fd, STDOUT_FILENO);
close(fd);
execlp("cat", "cat", NULL);

としたのですが、
fdに何か書き込んでも、
fdから何も出てきません。
何がいけないんでしょうか。
706デフォルトの名無しさん:04/12/04 20:16:39
何をやっているかの前に、何がやりたいか書け。
707デフォルトの名無しさん:04/12/04 20:19:52
>706
すいません。
TCP/IPサーバを作ってみようと思いまして、
それでまず、echoサーバを書いてみようと思ったんです。
将来的な事を考えると、
execで外部のプログラムを呼び出すかたちで、
これを実現したいのですが。
どうでしょうか。
708デフォルトの名無しさん:04/12/04 20:21:30
execじゃなくてforkだろ
709デフォルトの名無しさん:04/12/04 20:22:50
>708
この動作をするまえにforkしています。
echoするのをcatにやらせたいということです。
710デフォルトの名無しさん:04/12/04 20:24:22
>>707
その前のテストプログラムを書いているんだろ?
それはどういうものを意図しているわけ?
711デフォルトの名無しさん:04/12/04 20:27:29
>710
すいません。
質問の意図が良く分からないです。
最終的な目的は、netcatみたいなものを
自分で作れないかということです。
712710:04/12/04 20:29:16
fork(2)はしているわけか。
cat(1)でstdinとstdoutが同じなのはまずいよ。
713デフォルトの名無しさん:04/12/04 20:32:42
>712
>cat(1)でstdinとstdoutが同じなのはまずいよ。
コマンドラインからもやってみましたけど、
うまくいきませんね。
なぜなんでしょう。
714デフォルトの名無しさん:04/12/04 20:42:37
なにをどうしたんだ?
715デフォルトの名無しさん:04/12/04 20:45:06
>714
cat <hoge >hoge
としたところ。
ファイルhogeの中身が消えてしまいました。
716デフォルトの名無しさん:04/12/04 21:10:48
fork(2)した後、

FILE *f = fdopen(fd);
while(1) {
int ch = fgetc(f);
if (ch == EOF) break;
fputc(ch, f);
}

じゃまずいのか?
717デフォルトの名無しさん:04/12/04 21:13:52
>716
えと、外のプログラムを呼び出して、
処理するようにしたいので、
中で自分でやってしまうのでは駄目なんです。
718デフォルトの名無しさん:04/12/04 21:18:03
助けるよ
719デフォルトの名無しさん:04/12/04 21:21:03
>718
ありがとうございます。
720デフォルトの名無しさん:04/12/04 21:36:28
なんだか良く分かりませんが、
今書き直したところ、
>705のやりかたでうまくいきました。
しかし、引数を付けたりするとうまくいかないみたいです。
たとえば、
execlp("cat", "cat", "-s", NULL);
などとすると駄目です。
どうしたら良いでしょうか。
721デフォルトの名無しさん:04/12/04 21:41:16
>>717
forkしてれば中で自分でやってしまうことにはならないんだが
722デフォルトの名無しさん:04/12/04 21:43:17
>721
そう言うことではなくて、
外のプログラムを呼んで、
それに仕事をさせたいということです。
723デフォルトの名無しさん:04/12/04 21:52:53
ここいらでテストソースの全貌を晒してみないか?
724デフォルトの名無しさん:04/12/04 21:57:58
>>720
入力と出力を別にしろよ。パイプ使ったり。
725デフォルトの名無しさん:04/12/04 21:58:06
#include <stdio.h>
#include <unistd.h>
#include <signal.h>
#include <sys/wait.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>

enum{
MAX_CLIENT = 3,
PORT = 10000,
};
unsigned int NUM_C = 0;

void sigchld_handler(sig_t sig)
{
int stat;
extern unsigned int NUM_C;

signal(SIGCHLD, sigchld_handler);
wait(&stat);
NUM_C--;

printf("SIGCHLD %d\n", stat);
}
726デフォルトの名無しさん:04/12/04 21:58:41
int main ()
{
int listenfd, connfd, nbytes;
char buf[BUFSIZ];
struct sockaddr_in servaddr;
extern unsigned int NUM_C;
pid_t pid;

signal(SIGCHLD, sigchld_handler);

if((listenfd = socket(AF_INET, SOCK_STREAM, 0)) < 0){
perror("socket"); exit(1);
}
bzero(&servaddr, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(PORT);
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);

if(bind(listenfd, (struct sockaddr*)&servaddr, sizeof(servaddr))
< 0){
perror("bind"); exit(1);
}
if(listen(listenfd, 5) < 0){
perror("listen"); exit(1);
}
727デフォルトの名無しさん:04/12/04 21:58:45
きたきた
728デフォルトの名無しさん:04/12/04 21:59:32
while(1){

if((connfd = accept(listenfd, (struct sockaddr*)NULL, NULL)) < 0){
perror("accept"); exit(1);
}

if(NUM_C++ < MAX_CLIENT){
pid = fork();
if(pid == 0){ /* child */
close(listenfd);

dup2(connfd, STDIN_FILENO);
dup2(connfd, STDOUT_FILENO);
dup2(connfd, STDERR_FILENO);
close(connfd);
if(execlp("cat", "cat", NULL) < 0){
perror("execl"); exit(1);
}

exit(0);
}else{/* parent */
close(connfd);
}
}else{
close(connfd);
}
}

return 0;
}
729デフォルトの名無しさん:04/12/04 22:00:16
こんな感じです。
このプログラムはちゃんと動きます。
その上で、catに引数を渡して動くようにしたいのです。
730デフォルトの名無しさん:04/12/04 22:00:56
うp乙
731デフォルトの名無しさん:04/12/04 22:06:46
>>724 も書いてるけど
親子の間はpipeでいいんじゃない?
732デフォルトの名無しさん:04/12/04 22:12:49
>731
えーと、どういうことでしょうか。
親子間では通信する必要がないように思うんですが。
733実験:04/12/04 22:15:27
begin-base64 644 hoge.c
I2luY2x1ZGUgPHN0ZGlvLmg+DQojaW5jbHVkZSA8dW5pc3RkLmg+DQojaW5jbHVkZSA8c2lnbmFs
Lmg+DQojaW5jbHVkZSA8c3lzL3dhaXQuaD4NCiNpbmNsdWRlIDxzeXMvdHlwZXMuaD4NCiNpbmNs
dWRlIDxzeXMvc29ja2V0Lmg+DQojaW5jbHVkZSA8bmV0aW5ldC9pbi5oPg0KDQplbnVtew0KCU1B
WF9DTElFTlQgPSAzLA0KCVBPUlQgPSAxMDAwMCwNCn07DQp1bnNpZ25lZCBpbnQgTlVNX0MgPSAw
Ow0KDQp2b2lkIHNpZ2NobGRfaGFuZGxlcihzaWdfdCBzaWcpDQp7DQoJaW50IHN0YXQ7DQoJZXh0
ZXJuIHVuc2lnbmVkIGludCBOVU1fQzsNCg0KCXNpZ25hbChTSUdDSExELCBzaWdjaGxkX2hhbmRs
ZXIpOw0KCXdhaXQoJnN0YXQpOw0KCU5VTV9DLS07DQoNCglwcmludGYoIlNJR0NITEQgJWRcbiIs
IHN0YXQpOw0KfQ0KDQppbnQgbWFpbigpDQp7DQoJaW50IGxpc3RlbmZkLCBjb25uZmQsIG5ieXRl
czsNCgljaGFyIGJ1ZltCVUZTSVpdOw0KCXN0cnVjdCBzb2NrYWRkcl9pbiBzZXJ2YWRkcjsNCgll
eHRlcm4gdW5zaWduZWQgaW50IE5VTV9DOw0KCXBpZF90IHBpZDsNCg0KCXNpZ25hbChTSUdDSExE
LCBzaWdjaGxkX2hhbmRsZXIpOw0KDQoJaWYoKGxpc3RlbmZkID0gc29ja2V0KEFGX0lORVQsIFNP
Q0tfU1RSRUFNLCAwKSkgPCAwKXsNCgkJcGVycm9yKCJzb2NrZXQiKTsgZXhpdCgxKTsNCgl9DQoJ
Ynplcm8oJnNlcnZhZGRyLCBzaXplb2Yoc2VydmFkZHIpKTsNCglzZXJ2YWRkci5zaW5fZmFtaWx5
ID0gQUZfSU5FVDsNCglzZXJ2YWRkci5zaW5fcG9ydCA9IGh0b25zKFBPUlQpOw0KCXNlcnZhZGRy
LnNpbl9hZGRyLnNfYWRkciA9IGh0b25sKElOQUREUl9BTlkpOw0KDQoJaWYoYmluZChsaXN0ZW5m
ZCwgKHN0cnVjdCBzb2NrYWRkciopJnNlcnZhZGRyLCBzaXplb2Yoc2VydmFkZHIpKSA8IDApew0K
CQlwZXJyb3IoImJpbmQiKTsgZXhpdCgxKTsNCgl9DQoJaWYobGlzdGVuKGxpc3RlbmZkLCA1KSA8
IDApew0KCQlwZXJyb3IoImxpc3RlbiIpOyBleGl0KDEpOw0KCX0NCg0KCXdoaWxlKDEpew0KCQlp
ZigoY29ubmZkID0gYWNjZXB0KGxpc3RlbmZkLCAoc3RydWN0IHNvY2thZGRyKilOVUxMLCBOVUxM
KSkgPCAwKXsNCgkJCXBlcnJvcigiYWNjZXB0Iik7IGV4aXQoMSk7DQoJCX0NCg0KCQlpZihOVU1f
QysrIDwgTUFYX0NMSUVOVCl7DQoJCQlwaWQgPSBmb3JrKCk7DQoJCQlpZihwaWQgPT0gMCl7IC8q
IGNoaWxkICovDQoJCQkJY2xvc2UobGlzdGVuZmQpOw0KDQoJCQkJZHVwMihjb25uZmQsIFNURElO
X0ZJTEVOTyk7DQoJCQkJZHVwMihjb25uZmQsIFNURE9VVF9GSUxFTk8pOw0KCQkJCWR1cDIoY29u
bmZkLCBTVERFUlJfRklMRU5PKTsNCgkJCQljbG9zZShjb25uZmQpOw0KDQoJCQkJLyoNCgkJCQkJ
734実験:04/12/04 22:16:42
T0sgZXhlY2xwKCJjYXQiLCAiY2F0IiwgTlVMTCkNCgkJCQkJRVJSIGV4ZWNscCgiY2F0IiwgImNh
dCIsICItcyIsIE5VTEwpDQoJCQkJKi8NCgkJCQlpZihleGVjbHAoImNhdCIsICJjYXQiLCBOVUxM
KSA8IDApew0KCQkJCQlwZXJyb3IoImV4ZWNsIik7IGV4aXQoMSk7DQoJCQkJfQ0KDQoJCQkJZXhp
dCgwKTsNCgkJCX1lbHNleyAvKiBwYXJlbnQgKi8NCgkJCQljbG9zZShjb25uZmQpOw0KCQkJfQ0K
CQl9ZWxzZXsNCgkJCWNsb3NlKGNvbm5mZCk7DQoJCX0NCgl9DQoNCglyZXR1cm4gMDsNCn0NCg==
====
735デフォルトの名無しさん:04/12/04 22:18:40
>733,734
mimeエンコーディングですか?
使ったことないんでデコードの仕方が分からないんですが...
736デフォルトの名無しさん:04/12/04 22:20:41
わからない奴には教えないってスタンスなんでしょ、多分。
737デフォルトの名無しさん:04/12/04 22:39:00
エンコの前に圧縮しろよ...
738デフォルトの名無しさん:04/12/04 22:42:23
begin-base64 644 hoge.c
の次の行から734最後の====までをhoge.c.base64として保存
$ base64-decode < hoge.c.base64 > hoge.c
base64-decodeは無ければ探せばある
739デフォルトの名無しさん:04/12/04 22:46:14
ありがとうございます。
今インストールしています。
740デフォルトの名無しさん:04/12/05 01:50:48
一部のuudecodeコマンドも対応してたりするよ
741デフォルトの名無しさん:04/12/05 02:42:32
$ perl -MMIME::Base64 -ne 'print encode_base64($_)' < file
742デフォルトの名無しさん:04/12/05 02:42:58
$ perl -MMIME::Base64 -ne 'print decode_base64($_)' < file

でした…
743デフォルトの名無しさん:04/12/05 14:39:12
FreeBSDだと

if(execlp("cat", "cat", "-n", "-u", NULL) < 0){
perror("execl"); exit(1);
}

で動いた。バッファリングとかそのへんですか?
744デフォルトの名無しさん:04/12/06 19:59:30
ほし
745デフォルトの名無しさん:04/12/09 11:35:54
test コマンド([ コマンド)の用法を調べ,
test コマンド(組み込み,独立どちらでも構わない)
を利用する script の例を作成せよ.
746デフォルトの名無しさん:04/12/09 11:50:46
>>745
い・や・♪
747デフォルトの名無しさん:04/12/09 12:13:47
UNIXといえば、
748デフォルトの名無しさん:04/12/09 12:35:59
test コマンド(組み込み,独立どちらでも構わない)
を利用する script の例を作成せよ.
749デフォルトの名無しさん:04/12/09 12:39:53
を利用する script の例を作成せよ.
750デフォルトの名無しさん:04/12/09 12:51:52
例:
#!/bin/sh
/bin/test
751デフォルトの名無しさん:04/12/09 14:30:05
wgetスタンバイ中なので、なんか、くれ。

#!/bin/sh
set -x
LC_ALL=C LANG=C; export LC_ALL LANG

script -t -c "traceroute -v -t 16 -m 64 www.funet.fi 2>&1" 2> timingfile

for I in 1 2; do
sleep 2;
clear;
scriptreplay timingfile;
done

if test -e timingfile; then rm -f timingfile; fi
if test -e typescript; then rm -f typescript; fi
752デフォルトの名無しさん:04/12/11 00:13:46
ソケット以外で2つのプログラム間で通信を行うにはどんな方法がありますでしょうか。
機能として、1.これからデータを送るということを他方のプログラムに知らせ、
2.そしてデータを送信するという2つの処理が必要です。
signalとshmで実現しようかと思っているのですが、もっとスマートな方法はないでしょうか。
たとえばWindowsのWM_COPYDATAのように、この2つの処理を同時に行えるような機能はないでしょうか。
753デフォルトの名無しさん:04/12/11 00:38:45
>>752
ipc使うならshmじゃなくてmsgとか。
754752:04/12/11 02:11:23
ありがとうございます。msgについて調べてみます。
もう一つ質問なんですが、あるプログラムから外部のプログラムを実行するとき、
終了を待たずに実行してすぐ返ってくるには、
execかsystemでコマンドラインに&をつければよいのでしょうか。
755デフォルトの名無しさん:04/12/11 02:49:33
お手軽なのはsystemで&つける。
細かく制御したいならforkしてexecする。
756デフォルトの名無しさん:04/12/11 11:13:54
>>754
fork&execでは、自分のプロセスでfork()して起動した側は即復帰、起動された側はexec()で別プログラムに制御が移る。
だから終了も待たないしプロセスIDを得られる。
systemでは、自分のプロセスからシェルを経由して別プログラムを起動するからシェル次第。

systemで&をつければバックグランドで起動してシェルから復帰してくるからお手軽だが、
別プログラムのプロセスIDを必要とするならpopen()を使ってシェルからプロセスIDを通知してもらうとか。
まぁ、そこまでするなら>755。

#なんか、話の流れからするとpopen()でことが足りてしまうような気がするんだがw
757デフォルトの名無しさん:04/12/11 12:43:49
そこは「w」ってつけるとこじゃねー!
758デフォルトの名無しさん:04/12/11 17:41:15
>>752
ソケット以外でって話だけど、PF_LOCAL(PF_UNIX)は調査済み?
他にもFIFOファイルってのもあるよ。
759デフォルトの名無しさん:04/12/11 18:27:46
>>758
> PF_LOCAL(PF_UNIX)は調査済み?
それってソケットじゃないの?
760デフォルトの名無しさん:04/12/11 20:08:02
>>759
そうだよ。だから「ソケット以外でって話だけど」って書いてるじゃん。
単にTCP/IP以外のプロセス間通信の方法かなって思ったんで。
761デフォルトの名無しさん:04/12/11 20:40:24
共有メモリをフルスピードでポーリング。これ最強。
762デフォルトの名無しさん:04/12/12 00:26:07
named pipe はどう?
763デフォルトの名無しさん:04/12/12 00:28:06
UNIXネットワークプログラミング 新版の翻訳はいつ頃でるのでしょう?
英語版は買ったのですが、日本語訳がでたらそれも買いたいので...
764デフォルトの名無しさん:04/12/12 05:13:56
IPv6とPthread以外で何が違うの?
765デフォルトの名無しさん:04/12/12 12:36:52
第4部がばっさり切られた。
766デフォルトの名無しさん:04/12/14 04:06:11
システムの時刻をC言語から設定する方法を教えてください。
767デフォルトの名無しさん:04/12/14 04:24:08
ttp://www.linux.or.jp/JM/html/LDP_man-pages/man2/settimeofday.2.html
セキュリティレベルの設定内容によっては±1秒以上の変更が禁止されている場合もある。
NTPを使ってる環境ならこっちの方が良い鴨。
ttp://www.linux.or.jp/JM/html/LDP_man-pages/man2/adjtimex.2.html
768デフォルトの名無しさん:04/12/14 04:27:06
どうもありがとう。まさかこんな深夜にこんな早くレスがつくとは思わなかったよ。
769デフォルトの名無しさん:04/12/14 09:39:36
http://www.linux.or.jp/JM/html/LDP_man-pages/man2/settimeofday.2.html
セキュリティレベルの設定内容によっては±1秒以上の変更が禁止されている場合もある。
NTPを使ってる環境ならこっちの方が良い鴨。
http://www.linux.or.jp/JM/html/LDP_man-pages/man2/adjtimex.2.html
770デフォルトの名無しさん:04/12/16 22:06:49
UN板で聞いてもすぐ返事がもらえなかったので再度質問します。スマソ。

PATHの記述というか解釈方法について、BNF記法のように定義された
POSIXの規格はありますか?

目的はバギーなrealpath()の代替関数を書きたいのです。
771デフォルトの名無しさん:04/12/18 00:53:37
age
772デフォルトの名無しさん:04/12/18 01:50:17
realpathにbugって何? (あんな簡単な関数のどこに…)
773デフォルトの名無しさん:04/12/18 07:57:30
バギーなのは >>770 の頭
774デフォルトの名無しさん:04/12/18 07:57:43
簡単なシェルを作りたいと思い、コマンドラインを execv に渡せる形にするために以下のようにしました
これで良いのか、他にもっと良い方法があるのか教えてください.

#define MAX_CMDARGC 10
char *ptr, *cmdargv[MAX_CMDARGC + 1], cmdline[] = "emacs -q --load hoge.el test.txt";
int i = 0;
for (ptr = strtok(cmdline, " "); i < MAX_CMDARGC && ptr != NULL; ptr = strtok(NULL, " ")) {
cmdargv[i++] = ptr;
}
cmdargv[i] = NULL;
775デフォルトの名無しさん:04/12/18 09:15:13
parserはlex&yaccで書くのが一般的。
776デフォルトの名無しさん:04/12/18 13:15:55
BNF
777デフォルトの名無しさん:04/12/18 21:09:01
777get
778デフォルトの名無しさん:04/12/19 00:40:43
「詳解UNIXプログラミング」という本の訳は酷すぎると
思わない?
多分そんなに難しいことじゃないんだろうなぁということが
論理の破綻した説明に載せられるとわけがわからん
WEBで調べたら一発だったよ
くそ高い本買うんじゃなかった
779デフォルトの名無しさん:04/12/19 01:06:37
>>778
論理の破綻した説明がどこかを言ってくれるとすごくありがたい.
780デフォルトの名無しさん:04/12/19 01:14:54
例えば以下の日本語、意味わかります?たった一文字
変えたら意味が通るんだけどね

「標準入力、標準出力、標準エラー出力を、端末装置あるいは擬似
端末装置のどちらかに結びついたログインシェルを使っているので
ある」

日本語にしてみてみて読み返した時に
あれ何か変だなって気が付くだろ
普通に日本語が読み書きできる人だったらさ

こんなことの連続で日本語を日本語に訳す作業に疲れてしまって
とてもじゃないけど安心して読めない
781デフォルトの名無しさん:04/12/19 01:19:51
訳者がDQNだからしかたない
782デフォルトの名無しさん:04/12/19 01:20:54
訳者のドキュメンテーション能力がStevensに比べて著しく低いので、
原書買った方が得な本のうちの一つだな、APUEは。
783デフォルトの名無しさん:04/12/19 01:26:42
>>780
俺は一読しただけでは違和感がなかった…
たぶん知識の方で勝手に脳内修正してしまったのだろう。

「〜が、〜に結びついた〜」「〜を、〜に結びつけた〜」でしょうね。
784デフォルトの名無しさん:04/12/19 01:26:52
私見なのだが、オライリーもピアソンエデュケーションも
いわゆる名著や信頼性のある情報を扱う出版社という
イメージがある

だがピアソンの日本語訳は一般的に酷いものが多いな
785デフォルトの名無しさん:04/12/19 01:29:50
ランボーは小林秀雄の訳でないとだめでs
786デフォルトの名無しさん:04/12/19 01:45:20
>>782
APUE は図が良いよな
日本語版も図だけはStevensの能力を受け継いでいる
787デフォルトの名無しさん:04/12/19 01:51:43
じゃあ次は俺が翻訳引き受けて、図も書き直すことにするか。
788デフォルトの名無しさん:04/12/19 01:58:57
>>787
凄いなお前
なら具体的な話しをしてみ
789デフォルトの名無しさん:04/12/19 02:02:21
>>788
?
790デフォルトの名無しさん:04/12/19 02:02:38
>>788
人を試すな。
791デフォルトの名無しさん:04/12/19 05:53:25
>>786
warota
792デフォルトの名無しさん:04/12/19 07:59:15
あぷえ
793デフォルトの名無しさん:04/12/19 16:13:11
ところで、シグナルを送る関数の名前が
kill なのはどういう経緯なんですかね
794デフォルトの名無しさん:04/12/19 16:35:15
昔はSIGINTのみ。(INT=interrupt)
795デフォルトの名無しさん:04/12/19 17:12:25
ところで、
796デフォルトの名無しさん:04/12/19 17:20:27
はい
797770:04/12/19 20:13:38
>>772-773 貴様ら死んでいいよ。無能なのはよくわかった。
セキュリティホール量産してろ。

ところで誰もpathの規格を知りませんか…。
798デフォルトの名無しさん:04/12/19 20:34:17
WindowsだとDDKの資料読めば仕様が書いてあるけど
UNIXは適当なのかもね
799デフォルトの名無しさん:04/12/19 20:44:31
・各ノードは「/」で区切る
・「/」で始まるのは絶対パス
・それ以外はカレントディレクトリからの相対パス
・「.」は自分自身
・「..」 は親ディレクトリ
・ルートの親はルート自身

realpath() がどうバギーなのか教えて。
800770ではないが:04/12/19 20:51:51
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/realpath.3.html
>バグ
>この関数は決して使わないこと。設計段階から問題がある。出力バッファの
>適切なサイズを決定することができないからである。 ・・・・

こういうことかな?
801デフォルトの名無しさん:04/12/19 20:59:30
sprintf() は危ないかもしれないが、バギーとは言わんだろ。
802デフォルトの名無しさん:04/12/19 21:08:11
801
sprintfは長さが予測可能な場合が多いからこれとは事情が違う
803デフォルトの名無しさん:04/12/19 21:09:00
たとえるならgetsと同じことかな
804デフォルトの名無しさん:04/12/19 21:29:21
797は偽者
805770:04/12/19 21:32:28
realpath()はstrcpy()を使ってるんじゃないかという話もちらほらと
ありますが…。それはともかく、

~/は展開すべきか、エラーとすべきか
~hoge/は/home/hogeなどと展開すべきか、エラーとすべきか
//は/と同等と解釈すべきか、エラーとすべきか
.../は../と同じか、エラーとすべきか
etc...

これらにはOS依存とかシェルが介在しているための問題もあるかと
思われますが、BNFなどによる明確な定義があれば知りたいのです。
806デフォルトの名無しさん:04/12/19 21:33:26
はい、偽者かどうかはともかく、
この様にUNIXはいたるところバグだらけでとても使い物にはならない
また、もし使っているところがあればそのシステムも同様に信用ならない
けして業務で使ってはいけないOS
ということが良くわかりましたね

>UNIXは決して使わないこと。設計段階から問題がある。
807デフォルトの名無しさん:04/12/19 21:35:28
ま、そのうち鯖用途でもUNIXなんて危なくて使わない時代がくるだろうね
808デフォルトの名無しさん:04/12/19 21:36:51
805=806
ネタで言っているとしか思えない
809デフォルトの名無しさん:04/12/19 21:37:26
Plan9だな
810デフォルトの名無しさん:04/12/19 21:39:22
ある事例ではモデルチェンジで新システムに変わるからという理由で
それまでの旧システムのサポートを打ち切る暴挙を起こしたUNIX系の会社があったな
UNIX扱うとこがこんなこと言ってるようじゃこのUNIX界もおわりだなと思った。
811デフォルトの名無しさん:04/12/19 21:40:37
それってEm○
812デフォルトの名無しさん:04/12/19 21:43:12
>>799が無視されているな
813デフォルトの名無しさん:04/12/19 21:45:35
Windowsはサポート腐っててもグルがその辺に沢山いるからな
UNIXだとサポートがまず役に立たないとあかんしね・・・
814デフォルトの名無しさん:04/12/19 21:48:09
このrealpathの質問にしてもくだらない煽り合いになっただけだしなw
まさに無能の集団だな

>>812
UNIX板で聞けば?
815デフォルトの名無しさん:04/12/19 21:49:20
・「~」を展開するのはシェルの機能。
・「.」とか「..」はファイル名であって、特別なキーワードではない。
・なので「...」は、そういうファイルがなければエラーになる。
・「//」はリモートにアクセスする手段だから「/」と同じはちょっとアレ。
816デフォルトの名無しさん:04/12/19 21:50:12
おまえらの嫌いなWindozerから見れば>>770が可哀相だよ。
この程度の質問で言い方が悪いとかでいちいち目くじら立てる
仕切り厨が沸いて出てくる始末だしな。
817デフォルトの名無しさん:04/12/19 21:51:57
realpathはUNIX使いの頭がバギーだから問題ない
818デフォルトの名無しさん:04/12/19 21:52:30
>>814
いや、799が答えているのに805はすっかり無視していると。
819デフォルトの名無しさん:04/12/19 21:53:13
>>800
つーかrealpath使うなとか書いておいて、代わりを用意しないのな。
それがUNIX文化ってやつ?
820デフォルトの名無しさん:04/12/19 21:54:29
「//」はリモートにアクセスする手段ってほんとか?
821デフォルトの名無しさん:04/12/19 22:01:58
何使ってるとそうできるのか良く知らないけど、
"//ホスト名/あっちのパス"って指定できる環境もあるよ。
Windowsでもそれのマネで"\\hoge\abc" とか書くよね。
822デフォルトの名無しさん:04/12/19 22:05:33
だったら具体的にその環境を書けよ
URIのプロトコル://〜と勘違いしてるんじゃないの?
823デフォルトの名無しさん:04/12/19 22:07:47
>>770
どうやらシェルでcd path; pwd打ったほうが早そうだぞ
824799,815:04/12/19 22:13:30
申し訳ありませんでした。
全部ウソです。
825デフォルトの名無しさん:04/12/19 22:19:31
いつものPOSIXにやけに詳しい人が来れば解決すんだろ。
俺はPOSIX軽視だからシラネ
826デフォルトの名無しさん:04/12/19 22:20:46
違うだろ。UNIX的には本来、/はいくつ重なっても/一つと同じ。

> "//ホスト名/あっちのパス"って指定できる環境もあるよ。

こっちがWindowsのマネ。やるとしたらOSじゃなくてアプリレベルの対処。


realpath(3)についていえばresolve_pathが指すバッファはサイズPATH_MAXであること
というのもインタフェースの一部(単にC言語の都合上強制できないだけ)だから、
PATH_MAXが定数で定義されているシステム(出所の直系である*BSDとか)では問題ない。
Linuxのmanはパラノイアックというか、OSとの整合性をとって記述しろと思うのだが。

POSIXでもこの点に関して「将来resolve_pathにNULLを渡したら自前でバッファ
をアロケートするようになるかも」と書いてあり、あんなつまらんmanを書くくらいなら
代替関数を用意してSEE ALSOに書け、と思ってしまう。
827デフォルトの名無しさん:04/12/19 22:29:32
そうだねえ
もしrealpathがWindowsのAPIだったら〜Exとかいう妙な改版がされてたとこだな
828デフォルトの名無しさん:04/12/19 22:37:41
この様にUNIXだとソース嫁が文化かもしれないが、商用だとそうもいかない。
それに仕事ならソースがあったとしてもわざわざ読んでいる時間も惜しい。
Linuxの様に全てソースありに挿げ替えられたならともかく
特定環境のrealpathの代替なんていったいどう実装すりゃいいのやら、だな。
頼みのドキュメントも>>800の様なクソmanでは使い物にならない。
それもこれも全てGNUが悪いRMSが悪いオープンソースが悪い。
RMSにはUNIXが死滅する前にさっさと死んで欲しい。
829デフォルトの名無しさん:04/12/19 22:41:45
>>828
何ならいいのだ?
830デフォルトの名無しさん:04/12/19 22:42:51
おれもRMSの思想にはついていけない。
プログラマを奴隷か何かだと思い込んでるとしか思えないよな。
よっぽど金の絡む仕事で嫌な事があったのかね。
あれのせいでソフトウェア=無料と世間に思わせてしまった罪は重いと思う。
スレ違いっぽいが。
831デフォルトの名無しさん:04/12/19 22:45:34
おれもUNIXのソース読め文化はヤバイとおもふ・・・
年取るといいかげん疲れるぜ
832770:04/12/19 22:46:11
>>826 サンクス。

まぁ、OS上とかHDD上のレベルに適用されるPATH解釈というのは勿論必要
なのですが、URIでは最大長は定義されていないので、こういうのも処理
したいわけです。(http://とかいうスキームの部分は不要つうかHTTPの
リクエストでは/以降しか遣さないので)

それにlinuxにおいてはPATH_MAXとかNAME_MAXはlimits.hのヘッダ次第で
どうとでも変わりますね。(ほかのOSは知らない)

POSIXにおけるPATH長の制限とかが定義されていたと仮定して、それが
OSのlimit.hで定義されている長さ以上はすべてエラーと看做してよいとか、
解析の結果PATH_MAX以下ならOKとか定義されていれば話は簡単なんですけど。
833デフォルトの名無しさん:04/12/19 22:48:59
低質な釣りか? ソース嫁てな話はしばらく出てきてないと思うが。
realpathの代替だって*BSDからパクってきて、なんならバッファをmalloc/realloc
させるようにちょっと弄るくらいで簡単だろ。
別にSYSVとBSDでパスの形式が違うわけでなし。
834デフォルトの名無しさん:04/12/19 22:50:14
簡単なら書けよw
835デフォルトの名無しさん:04/12/19 22:54:38
>*BSDからパクってきて
これ、BSDのソース読めってことだろ?
そういうのがいかんという話ではないのか?
836772:04/12/19 22:56:28
>>832
> それにlinuxにおいてはPATH_MAXとかNAME_MAXはlimits.hのヘッダ次第で
> どうとでも変わりますね。(ほかのOSは知らない)

んな無茶な。"次第"って変らんよ。ツーか勝手に変えちゃ駄目。

> POSIXにおけるPATH長の制限とかが定義されていたと仮定して、それが
> OSのlimit.hで定義されている長さ以上はすべてエラーと看做してよいとか、
> 解析の結果PATH_MAX以下ならOKとか定義されていれば話は簡単なんですけど。

見做すというかマニュアル読めよ。
http://www.opengroup.org/onlinepubs/009695399/functions/realpath.html

[ENAMETOOLONG]
The length of the file_name argument exceeds {PATH_MAX} or a pathname
component is longer than {NAME_MAX}.
837826:04/12/19 22:58:30
>>832
URIのpath部だけ対象にするならUNIXのパスなぞ関係ない。
URIの規定に従って文字列処理をする。
実際のOS上での場所が問題になるならディレクトリを辿っていく。

ごっちゃにして同じもので済まそうとする時点で間違い。

> それにlinuxにおいてはPATH_MAXとかNAME_MAXはlimits.hのヘッダ次第で
> どうとでも変わりますね。(ほかのOSは知らない)
おまいアホだろ。
その値でもってOSのカーネルとユーザランドがビルドされたという情報なんだから。

変えたいのなら、好きな定義をしたソースツリー上でカーネルもユーザランドも
全てビルドしてインストールすれ。他人のLinuxとは互換じゃなくなるけど。
838デフォルトの名無しさん:04/12/19 23:00:43
> >*BSDからパクってきて
> これ、BSDのソース読めってことだろ?
> そういうのがいかんという話ではないのか?

代替関数を実装するのにソースなしの方がいいのか?
この部分はソース嫁とは関係ない話だと思うんだが。
つーかぶっちゃけ828はろくに考えて書いてるようには見えん。
839デフォルトの名無しさん:04/12/19 23:01:54
UNIXヤバイ
840デフォルトの名無しさん:04/12/19 23:05:55
まあついてこれないオヤジどもがどんどん脱落していく素晴らしい文化ってことだ
841デフォルトの名無しさん:04/12/19 23:10:05
>>828はどうかと思うが、
ソース読めってのもどうかと思う。
仕様に合っているかどうかわからんからね。
POSIXやX/OpenやOpenGroupの仕様は、
たくさんの頭で考えたものだからソースよりずっと信頼できる。

Microsoft Windowsなら、実装→仕様って事が多いけども。
842770:04/12/19 23:13:44
HTTPとPOSIXの定義に差があると困るから、POSIXにおけるpath解釈の定義は
どうなってるのかと問うてるのよ。ごっちゃにするかしないか云々など興味
ないな。

>その値でもってOSのカーネルとユーザランドがビルドされたという情報なんだから。
その意味だけど何?
カーネル等の再構築で手を入れられて動作が変わるようでは困るけど何?

折角いいことを言ったと思ったのに、とたんにレベルが落ちたからがっかり
だな…。
843デフォルトの名無しさん:04/12/19 23:16:11
本物の770まだー?
といってももう見ていないだろうけど。
844デフォルトの名無しさん:04/12/19 23:17:01
>>842
> HTTPとPOSIXの定義に差があると困るから、

それを言うならHTTPじゃなくてURIじゃないの?
まあURIとPATH_MAX/NAME_MAXは関係もないけど。
845デフォルトの名無しさん:04/12/19 23:18:03
この際本物か偽者かなんてどうでもいいことだと思うが
これがUNIX文化ってやつ?
846デフォルトの名無しさん:04/12/19 23:19:06
騙りは2chの文化
847デフォルトの名無しさん:04/12/19 23:20:20
UNIXヤバイ
848デフォルトの名無しさん:04/12/19 23:29:20
煽り騙りは2chの華
849デフォルトの名無しさん:04/12/19 23:29:23
POSIXというからにはその規格書を読めばいいんじゃないかね
850デフォルトの名無しさん:04/12/19 23:32:00
それ言ったら終わりだろ。
851デフォルトの名無しさん:04/12/19 23:34:55
釣りにしても低質すぎるもんなあ。
Linuxだけで育つと知識も性根もひねくれてしまうんかね。

852770:04/12/19 23:35:32
IEEEのPOSIXのサイトは探したけどねぇ。検索では引っかからなかったな。
853デフォルトの名無しさん:04/12/19 23:36:42
まだやるつもりか。
854デフォルトの名無しさん:04/12/19 23:36:44
UNIXで育つと要求定義もなしにコーディングしますか?
855デフォルトの名無しさん:04/12/19 23:40:35
あ、本物のバカ決定。
この件はこれまでだな。
856デフォルトの名無しさん:04/12/19 23:51:30
Ruby最強!
857デフォルトの名無しさん:04/12/19 23:57:46
>>826
//ホスト名 はApollo Domainでも使えた。
だからMS-Windowsの真似とは限らない。
858デフォルトの名無しさん:04/12/20 00:07:52
SVR4以前のSystem VのRFS(Remote File System)では、
/../ファイル名/usr/rms/.emacsだった。
859デフォルトの名無しさん:04/12/20 02:08:29
俺は、BASICで育ったせいで、オブジェクト指向だの構造化プログラミングが未だに苦手だ。
860デフォルトの名無しさん:04/12/20 03:04:49
>>859
なんでこのスレにいるの?
861デフォルトの名無しさん:04/12/20 10:13:23
なんにしてもアプリレベルで処理することだと思うけど、
最近の"host:/abc/def" みたいな書き方のかわりに
昔は"//host/abc/def" みたいに書かれることが多かった。

Windowsの書き方もURIの"//host"もそれからの影響なんじゃないかな?
想像だけどね。
862デフォルトの名無しさん:04/12/20 10:13:58
ライオン本で勉強したんだよぅ。
863デフォルトの名無しさん:04/12/20 10:30:07
>>861のいう最近ってどれくらいのスパンを指していってる?
864デフォルトの名無しさん:04/12/20 11:23:10
10年(w
865デフォルトの名無しさん:04/12/20 12:24:46
>>858
RFS のアクセス方法について詳しく知りたいんだけど、どこかに
資料ない?
> /../ファイル名/usr/rms/.emacs
ファイル名ってのがよくわかんない。
866デフォルトの名無しさん:04/12/20 12:51:18
/../ホスト名 のマチガイじゃ?
ルートの1個上には、各ホストのルートにリンクされたファイルが
ずらずら並んでいるという仮想的な場所があるというイメージ。
867デフォルトの名無しさん:04/12/20 14:03:30
>>859
BASIC の所為にした方が都合がいいですか?
868デフォルトの名無しさん:04/12/20 20:12:02
UNIXってなんであんなに汚いんですか?
869デフォルトの名無しさん:04/12/20 20:28:04
きれいなジャイアンよりマシです
870858:04/12/21 00:46:15
>>866
> /../ホスト名 のマチガイじゃ?

そうです(w
871デフォルトの名無しさん:04/12/21 01:01:04
なるほど、ありがとう。しかし今考えるとひどい実装だね</../
872デフォルトの名無しさん:04/12/21 01:01:55
873858:04/12/21 01:10:54
>>871
実装と言うか仕様なんですが、
rootのparentはrootだってsmalltalkの頃から決まっているはずですが、
System VのRFSでは、/の..はsuper rootって/とは別なんです。
僕も実装はさわったことないんですが、Bach本で読みました。
874デフォルトの名無しさん:04/12/24 12:26:16
めりーくりすます
875デフォルトの名無しさん:04/12/25 04:40:22
>>874
めりーくりすます
876デフォルトの名無しさん:04/12/25 11:34:44
ぬるーぽがっします
877デフォルトの名無しさん:04/12/25 12:33:41
(;¬_¬)ヤルナ…
878デフォルトの名無しさん:04/12/26 00:26:53
へたれですみませんが
標準入力と標準出力のファイル番号は
どうやって調べたらよかとですか?
879878:04/12/26 00:28:14
dup2(fd[0],0)
dup2(fd[1],1)
とかやっても標準入力は複製できても
標準出力が複製に失敗するとです・・・
880デフォルトの名無しさん:04/12/26 00:33:58
>>878
常に0(stdin)と1(stdout)と2(stderr)です。
881デフォルトの名無しさん:04/12/26 00:35:53
>>880
ほんとに?
882デフォルトの名無しさん:04/12/26 01:27:35
ヒロシです・・
子プロセスが dup2(fd[1],1) とかしたら
そこで止まってしまうとです
親からそのパイプに書き込むとSIG_PIPEを
つかんでアボートするとです
883デフォルトの名無しさん:04/12/26 01:31:14
パイプが親→子の流れなら、
親: 1, 子: 0だろ。

親1(stdout)→0(stdin)子だから。

> 親からそのパイプに書き込むとSIG_PIPEをつかんでアボートするとです

それはfd[0]をopenしたままのprocessがいないんだね。
884デフォルトの名無しさん:04/12/26 02:12:03
ヒロシです・・・説明が不十分だったとです
パイプを2つ作って以下の通信をするのですが、

親: fd1[1] → 子: fd1[0]
親: fd2[0] ← 子: fd2[1]

ここで、子の入出力を標準入出力に複製したいとです

親: fd1[1] → 子: 0( stdin )
親: fd2[0] ← 子: 1( stdout )

つまり、子プロセスの側で

dup2( fd1[0], 0 )
dup2( fd2[1], 1 )

とすれば良いと思ったのですが、
dup2( fd2[1], 1 ) で子プロセスの処理が
止まってしまうんです・・・
そこで、親がパイプを書くとやっぱりSIG_PIPEっす
パイプの複製で止まってるから駄目なんでしょうかね
885デフォルトの名無しさん:04/12/26 02:57:17
dup2でブロックなんかしたっけ?
886デフォルトの名無しさん:04/12/26 03:06:52
エラーならそういう出力を出すようにしてるんですけど・・・
ログ出力ではdup2 を呼んでそこで子プロセスが止まっているみたいです
887デフォルトの名無しさん:04/12/26 03:35:30
みたいって…
gdb, strace, ltraceを使え。
既に動いても、PID指定でattach出来る。
888デフォルトの名無しさん:04/12/26 04:27:16
inetd のソースみれ
889デフォルトの名無しさん:04/12/26 18:03:15
東京の人はすごか技を知ってるとですね
でも、dup2( fd2[1], 1 )
を呼んだところで子がSIG_CHILD おこして終わってるみたいですよ
ltrace,strace どちらも
--- SIGCHLD (Child exited) ---
と出てます
子が終わってるので、パイプに書こうとすると SIG_PIPE を
起こすみたいですね
890デフォルトの名無しさん:04/12/26 18:10:25
UNIXってなんですか?
WinのようなOSですか?
891デフォルトの名無しさん:04/12/26 18:15:33
>>890
いえ美容院です
http://www.unix.co.jp/
892デフォルトの名無しさん:04/12/26 18:15:35
>>890
MacOS X のことだよ。
893デフォルトの名無しさん:04/12/26 18:21:26
ってなんですか?
894デフォルトの名無しさん:04/12/26 19:03:57
getpid最高!!
getpid最高!!
getpid最高!!
getpid最高!!
もう手放せない。朝も昼も
getpid最高!!
getpid最高!!
getpid最高!!
895デフォルトの名無しさん:04/12/26 20:55:26
>>889
SIGCHLDは子プロセスが終了した時に、
親プロセスに飛んでくるsignal。
君の知りたいのは子供が終了する原因だろ。
strace, ltraceで-fしろよ。
896デフォルトの名無しさん:04/12/26 23:38:47
897デフォルトの名無しさん:04/12/27 22:42:57
>>896
UNIXゆーざの皆さんって実はオシャレだったのか・・・俺勘違いしてたよ。
898デフォルトの名無しさん:04/12/27 22:49:48
>>896
まじめにだまされた…
899デフォルトの名無しさん:04/12/29 03:43:33
>>896
こんな糞HPクラック汁
900デフォルトの名無しさん:04/12/30 22:17:03
900get
901!omikuji!dama:05/01/03 05:10:49
保守
902デフォルトの名無しさん:05/01/03 05:12:56
>>896
よくみるとモデルがブサイコな件について
903デフォルトの名無しさん:05/01/03 05:31:26
真面目な質問ですが、誰か教えてください。

/etc/*.conf
のフォーマットって統一されていませんよね?

例えば、

aaaa=yes
bbbbb = no

というような文字列解析のC言語ライブラリとか
あるといいのですが、どなたか知りませんか?
904デフォルトの名無しさん:05/01/03 07:25:24
そんな簡単なの質問してる間に書けると思うんだけど……。
905デフォルトの名無しさん:05/01/03 07:35:50
>>903
>あるといいのですが、どなたか知りませんか?

そんなものはない。
どうやら君も、UNIXの暗黒面に片足突っ込んだようだね。
UNIXは死滅するまでずっとこのままだ。
残念だったな。
嫌なら君も、そんなUNIXの退廃的嗜好を打ち崩すべく努力したまえ。
906デフォルトの名無しさん:05/01/03 08:57:21
目指せsendmail.cf
907デフォルトの名無しさん:05/01/03 13:22:49
perl でも tcl でも、好きなのリンクすればいーんでない?
908デフォルトの名無しさん:05/01/03 13:25:58
perlもリンクできるのか。知らんかった。

tclは使っているのを見ないけど、なんでかねえ。
(売り物のCADソフトでは使ってるけど)
909デフォルトの名無しさん:05/01/03 13:59:17
910デフォルトの名無しさん:05/01/03 15:52:26
>>909
使うときに調べるからリンクはしなくて良かったのに。
でも、googleへのリンクの方が助かったな。
911デフォルトの名無しさん:05/01/03 16:41:29
UNIXなら標準で正規表現のライブラリが載ってるからそれ使えばいいじゃん。
912デフォルトの名無しさん:05/01/03 18:30:36
あんま調子にのんなよ
913デフォルトの名無しさん:05/01/03 18:49:20
'x = y' =~ /\s*(\w)+\s*=+\s*(\w)+\s*/;

$1に'x'
$2に'y'
が入る
914デフォルトの名無しさん:05/01/04 11:44:01
=+
って何?
915デフォルトの名無しさん:05/01/05 20:49:33
古代 C 言語における += のこと。
916デフォルトの名無しさん:05/01/06 22:48:17
あるいはエンタープライズ号
917デフォルトの名無しさん:05/01/07 02:08:29
signalハンドラーってどうやってハンドリングしてます?

ハンドラ内では呼び出し可能なAPI/SYSCALLに制限があるので
コンテキストをハンドラ外に移動させてから
やりたいことをやるようにした方がいいと考えています。

とはいえ、どうやって移動させるのがいいんでしょうね。
918デフォルトの名無しさん:05/01/07 02:55:19
>>917
マルチスレッド + sigwait()
919デフォルトの名無しさん:05/01/07 10:09:04
質問したい事があります。
現在、LINUX、C言語でプログラムを書いてます。
その中で、fork()した複数のプロセスが共有メモリにアクセスします。
そこでファイルを用いた排他制御を行いました。
プロセスIDは異なるのですが、プロセスの名前が
同じなのでファイルで排他制御ができているのか気になるのですが
教えてください。
920デフォルトの名無しさん:05/01/07 10:40:57
age
921デフォルトの名無しさん:05/01/07 10:52:49
>>919
> 教えてください。
何を教えて欲しいんだ?
排他制御のやり方か?
排他制御ができているかの確認方法か?

そもそも、
> その中で、fork()した複数のプロセスが共有メモリにアクセスします。
> そこでファイルを用いた排他制御を行いました。
共有メモリを使っているのに、なぜ System V IPC や POSIX IPC のセマフォを使わん。
922デフォルトの名無しさん:05/01/07 11:14:47
例によって例のごとく、APUE読め、って奴だなあ。
923デフォルトの名無しさん:05/01/07 11:47:26
>>917
sigsetjmp+siglongjmp
924デフォルトの名無しさん:05/01/07 11:49:23
>>919
鈴木太郎さんと田中太郎さんが、男子便所にうんこしに行きました。
両方、太郎さんなので、同じ便座に座ってないか心配なのですが
教えてください。
925デフォルトの名無しさん:05/01/07 17:57:18
>>922
だね
926デフォルトの名無しさん:05/01/07 20:42:12
AF_LOCALでソケット使いたいのですが,
sockaddr構造体が通常よく見るものと違って,↓で記述されてました

<sys/un.h>の一部

/* Structure describing the address of an AF_LOCAL (aka AF_UNIX) socket. */
struct sockaddr_un
{
__SOCKADDR_COMMON (sun_);
char sun_path[108];/* Path name. */
};


したがって,通常のようにsun_familyにAF_LOCALを指定できません.
どうすればよいのでしょうか?
927デフォルトの名無しさん:05/01/07 20:51:17
>>926
> したがって,通常のようにsun_familyにAF_LOCALを指定できません.

ってどういう意味だよ。この呆けが。
man 7 unix読めよ、このタコ。
__SOCKADDR_COMMON()の定義くらい調べろ、この猿。
928デフォルトの名無しさん:05/01/07 21:18:39
>>926
アホとしか言いようがないが、とりあえずC言語の勉強でも
もう一度してみたらどうか。
929前スレ282:05/01/08 00:05:40
> 1. longjmp( )は、シグナルハンドラからの使用を考慮されている、
> あるいは使用例としてよく出てくるんですが
> 実際、シグナルハンドラからのlongjmp( )は安全ですか?
ttp://www.opengroup.org/onlinepubs/009695399/functions/xsh_chap02_04.html
より引用。
> In the presence of signals, all functions defined by this volume of
> IEEE Std 1003.1-2001 shall behave as defined when called from or
> interrupted by a signal-catching function, with a single exception:
> when a signal interrupts an unsafe function and the signal-catching
> function calls an unsafe function, the behavior is undefined.

で、malloc()もlongjmp()もsiglongjmp()もsignal unsafe。
よって、「malloc()中にシグナル発生 → シグナルハンドラ内でlongjmp()
(またはsiglongjmp())呼び出し」となった場合の動作は「undefined」。
実際にglibcのソースを眺めてみたが、シグナルに対して特別なことをやっては
いないみたいだから、メモリリークやデッドロックが発生する可能性があるな。

> 2. シグナルハンドラとそうでない部分との排他制御は
> そうでない部分で、シグナルをマスクするだけで十分ですか?
OK.

> 3. シグナルハンドラが実行されているさいちゅうに
> 多重に呼び出されることはありますか?
ここらへんについては、BSD由来のsignal()とSysV由来のsignal()とで
挙動が大きく違っていたが、新しいシグナル操作関数であるsigaction()では
そこら辺の混乱が解消されている。
ttp://www.opengroup.org/onlinepubs/009695399/functions/sigaction.html
SA_NODEFERの項を見よ。
930デフォルトの名無しさん:05/01/10 17:39:30
ファイル入出力まわりに関して質問させてください。

ファイル終端(EOF)を切り詰めたいのですが、
自由にEOFの位置を設定できるシステムコールが何なのか分かりません。
WindowsAPIで言うところのSetEndOfFileみたいなのです。
もしそういうシステムコールがない場合は、エミュレートする何か別の方法とかあれば教えてください。

よろしくお願いします。
931デフォルトの名無しさん:05/01/10 17:44:42
1. stat(2)でファイルサイズ調べて-1へ絶対位置seek。
2. EOFまで読んでから、-1相対位置seek。

1推奨。(ファイルの長さに左右されない)
seekは、lseek(2) or fseek(3)で。
932デフォルトの名無しさん:05/01/10 17:44:52
>>930
ファイルサイズを指定長に設定するという
truncateというのがあるけど、意図と一致するか不明。
引数がパス名みたいだけど。

#include <sys/types.h>
int truncate(const char *path, off_t length)
933デフォルトの名無しさん:05/01/10 17:46:26
あー、ファイルディスクリプタのもあるや。

int ftruncate(int fd, off_t length)

934930:05/01/10 18:16:19
931さん932さん、即レスありがとうございます。

どうやらftruncateでいけそうです。
どうもありがとうございました。
935デフォルトの名無しさん
age