UNIXプログラミング質問すれ Part5
レス数が1000を超えています。これ以上書き込みはできません。
0001名無し募集中。。。
NGNG前スレ
Part4 http://pc5.2ch.net/test/read.cgi/tech/1095843584/
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
Part3のミラー
http://makimo.to/2ch/pc5_tech/1085/1085930894.html
Part2のミラー
http://makimo.to/2ch/pc5_tech/1055/1055110889.html
関連スレ
Cygwin使っている人いますか? その13 (UNIX板)
http://pc5.2ch.net/test/read.cgi/unix/1099157755/
Cygwin使っている人いますか? 3 (Windows板)
http://pc5.2ch.net/test/read.cgi/win/1090131123/
関連板
http://pc5.2ch.net/unix/
http://pc5.2ch.net/linux/
0002名無し募集中。。。
NGNGThe 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/
0003名無し募集中。。。
NGNGhttp://www.linux.or.jp/JM/#Search
GNU Make 日本語リファレンス
http://www.ecoop.net/coop/translated/GNUMake3.77/make_toc.jp.html
Unix Programming Frequently Asked Questions 日本語訳
http://www.adl.nii.ac.jp/~moro/unix-programmer/faq-j_toc.html
0004名無し募集中。。。
NGNGネットワークプログラミング相談室 Port12
http://pc5.2ch.net/test/read.cgi/tech/1102427855/
マルチスレッドプログラミング相談室 その3
http://pc5.2ch.net/test/read.cgi/tech/1098268137/
0005名無し募集中。。。
NGNGoノハヽo /◇◇
从*・ 。.・) / ◇ ◇ センター試験がんばってね
/o y/ |`p
し!|||ii|||J
|||||||||
0006名無し募集中。。。
NGNG0007デフォルトの名無しさん
NGNGUNIXで挫折って、わかる気がするなあ。
ずっと意味不明なコマンドの文字列打ってたら頭おかしくなりそうだし、
ずっと真っ暗なコンソール眺めてると鬱になりそうじゃん?
かといって思想のまるでないXは、オタ絵とただ沢山コンソール開くしか脳ないし、
こんなの与えても娯楽を常に要求する一般人は見向きもしない。
そもそもWebでしか見掛けない、哀れなOS、というのが一般人の見解だし。
そうそう、最近LindowsがUNIXの印象かなり悪くしたよね。
この事件でUNIXはビジネスで成功できないことがまた証明されてしまったわけだ。
昔からUNIXは関係者同士で常に足を引っ張って成長しない。
お金の匂いしないよね。全然。
そんなOSだから、挫折が常態であるのは必然なんだと思う。
0008デフォルトの名無しさん
NGNGUNIX使いって貶されると、
すぐ言葉少なになるよね。
もう貶されるのに慣れちゃった?
ちょっと、心をおちつけて。
UNIXを知らなかったあの頃を思い出してごらん。
あの頃の君達は希望に満ち溢れていたよね。
そう、今まで君達は、とっても悪い夢を見ていたんだ。
UNIXなんか捨てて、あの頃見ていた希望を取り戻そうよ!
0009デフォルトの名無しさん
NGNG0010デフォルトの名無しさん
NGNG0011デフォルトの名無しさん
NGNG問題なし。
前スレのhttp://pc5.2ch.net/test/read.cgi/tech/1095843584/944
GNUは仕様だけじゃなくて、こうしましょうってガイドラインも出してるよ。
http://www.sra.co.jp/wingnut/standards-j_toc.html
ちなみに--に決めた時は、(+って候補もあった)
メーリングリストで投票していた。ストの仕切りで。
0012デフォルトの名無しさん
NGNG0013デフォルトの名無しさん
05/01/19 15:11:41Advanced Programming in the UNIX(R) Environment 和訳
http://www.amazon.co.jp/exec/obidos/ASIN/4894713195/
Unix Network Programming 和訳
http://www.amazon.co.jp/exec/obidos/ASIN/4894712059/
http://www.amazon.co.jp/exec/obidos/ASIN/4894712571/
UNIX プログラミング環境
http://www.amazon.co.jp/exec/obidos/ASIN/4871483517/
0014デフォルトの名無しさん
05/01/19 15:16:21UNIX システムコールプログラミング
http://www.amazon.co.jp/exec/obidos/ASIN/487148260X/
古いから、今のとの相違点をマニュアルと比較しながらでないと
使えないんだけど。逆にそれができる香具師には、単純だった頃の
UNIX の姿から学習できるから、かえって入門に向いてる気がする
んだが。
0015デフォルトの名無しさん
05/01/19 15:30:05和訳の予定ってないんかなあ。
最近、原著で読み通すほどの暇と気力がない。orz
http://www.amazon.com/exec/obidos/tg/detail/-/0131411543/
0016デフォルトの名無しさん
05/01/19 21:06:44アメリカで何冊か出てるよね。
0017デフォルトの名無しさん
05/01/19 23:27:33古典的なところをちょっと外れたのも盛り込んでいて。
新人さん向けの本を捜しての斜め読みだけどもね…
Linuxプログラミング―例題で学ぶUNIXプログラミング環境のすべて
http://www.amazon.co.jp/exec/obidos/ASIN/4797327014/
0018デフォルトの名無しさん
05/01/19 23:46:230019デフォルトの名無しさん
05/01/28 11:29:30Xのプログラムをコンパイルしようとおもったのですが
[root@cf root]# gcc -I /usr/X11R6/include -lX11 -L /usr/X11R6/include -I/usr/X11R6/lib -L /usr/X11R6/lib xaa.c -o xaa
[root@cf root]# ./a.out
Shared object "libX11.so.6" not found
といわれて、動作させることができません
[root@cf root]# find /usr/X11R6/ -name "libX11.so.6"
/usr/X11R6/lib/libX11.so.6
で、libX11.so.6はあるのですが‥
どこか根本的にまちがっているのでしょうか?
0020デフォルトの名無しさん
05/01/28 11:42:56$ env LD_LIBRARY_PATH /usr/X11R6/lib ./a.out あるいは
# vi /etc/ld.so.confに/usr/X11R6/lib 加えて、# ldconfig
ちなみにその糞OSは何?
0021デフォルトの名無しさん
05/01/28 18:22:340022デフォルトの名無しさん
05/01/28 18:46:58> $ env LD_LIBRARY_PATH /usr/X11R6/lib ./a.out あるいは
$ env LD_LIBRARY_PATH=/usr/X11R6/lib ./a.out
0023デフォルトの名無しさん
05/02/02 11:35:16ファイルから設定を読みこむときって皆さんはどうやってますか?
width=500
height=600
と、設定ファイルにかかれているとき
Perlなら、widthを変数名に、500を値にいれていたのですが
C言語ではどうするのでしょうか?
もしよろしければ適当にソースを書いていただければ幸です
0024デフォルトの名無しさん
05/02/02 11:58:140025デフォルトの名無しさん
05/02/02 11:59:21こいつぼけ
0026デフォルトの名無しさん
05/02/02 13:25:31C言語の初心者スレへ。
0027デフォルトの名無しさん
05/02/03 23:25:08./a.out <==./xaa の間違い?
0028デフォルトの名無しさん
05/02/04 12:08:09殆ど使えてるんでしょうか?それともプロセス間通信はpipeや
mmapみたいな基本的なものに限定しておいて、スレッドを使う
方向で考えた方が、推奨されるやり方なのですか?
0029デフォルトの名無しさん
05/02/04 12:43:16・使えるんじゃない?
・そうとは思わないけど。
0030デフォルトの名無しさん
05/02/04 16:48:48POSIX見れ。
0031デフォルトの名無しさん
05/02/04 18:47:12POSIXに準拠してないOSがあったりするのがUNIXの難しさなのではないですか?
0032デフォルトの名無しさん
05/02/04 19:12:34いまあるメジャーなUNIXでPOSIXのIPCが使えないのってどれ?
0033デフォルトの名無しさん
05/02/04 19:23:40それが分らないから質問してるんですけど。
0034デフォルトの名無しさん
05/02/04 20:10:02そんなのあるのか? って話だと思うけど。
31があると断言しちゃってるけど実際どれよ、FUDじゃねえの? って話じゃないかと。
APUE見りゃちゃんとPOSIXとSysVとBSDで事情がある場合はちゃんと断りがあって、
その上でIPCの機能の記述が通じない「メジャーなUNIX」って一体何を想定してるのか。
元質問者の無知はしょうがないとしても31はちゃんと明確に指摘すべきだろ。
0035デフォルトの名無しさん
05/02/04 21:24:26あんまり厳密な話をしてるつもりはなったのですが、
例えば、GLIBC-2.3.4には>>2にあるPOSIXのドキュメントに載っている
(http://www.opengroup.org/onlinepubs/009695399/idx/head.html)
<trace.h>がなかったりします。こんな感じで微妙に基準を満たしてなかったり
とかするのかなと思ってました。手元にはLinuxしかないので、
*BSDや商用UNIXのことは分りません。
0036デフォルトの名無しさん
05/02/04 21:36:500037デフォルトの名無しさん
05/02/04 21:45:02そういうわけではないですけど、何らかの現実的なガイドライン
みたいなのがあれば、それを知りたいなあと思っただけです。
本来ならコード読んで体得するべきで怠けているだけなのは分ってます。
0038デフォルトの名無しさん
05/02/05 01:21:140039デフォルトの名無しさん
05/02/05 07:29:32APUEの10.7,10.8のサンプルコードってちゃんと動きますか?
Linux2.6では期待した通りには動きません。
straceで見ると、 readシステムコール中にシグナルが発生しても
普通にreadに戻るだけなんです。
0040デフォルトの名無しさん
05/02/05 07:31:190041デフォルトの名無しさん
05/02/05 07:40:35#include<unistd.h>
static void func(){return;}
int main(){
int n=0;
char line[256];
signal(SIGALRM,func);
alarm(10);
n=read(0,line,256);
alarm(0);
write(1,line,n);
}
$strace ./a.out
...
rt_sigaction(SIGALRM, {0x8048424, [ALRM], SA_RESTORER|SA_RESTART, 0x40046678}, {SIG_DFL}, 8) = 0
alarm(10) = 0
read(0, 0xbffff980, 256) = ? ERESTARTSYS (To be restarted)
--- SIGALRM (Alarm clock) @ 0 (0) ---
sigreturn() = ? (mask now [RTMIN])
read(0,
select使えばいいんだろうけど。
0042デフォルトの名無しさん
05/02/05 08:12:12ソースの先頭で
#define _XOPEN_SOURCE
0043デフォルトの名無しさん
05/02/05 08:26:07ありがとうございます。
rt_sigaction(SIGALRM, {0x8048434, [], SA_RESTORER|SA_INTERRUPT|SA_NOMASK|SA_ONESHOT, 0x40046678}, {SIG_DFL}, 8) = 0
>>41と違ってrt_sigactionの引数としてSA_RESTARTの代わりにSA_INTERRUPTが入ってますね。
0044デフォルトの名無しさん
05/02/05 09:29:35フラグをきっちり指定してやるのが正しいということですな。
signal()のデフォルトの動作はSysV,4.3BSDはINTERRUCT、
SunOS,LinuxはRESTARTということですな。
お騒がせしました。
0045デフォルトの名無しさん
05/02/06 00:07:470046デフォルトの名無しさん
05/02/06 03:52:38なるほどそうなんですか。
でも、restartable system callを一番最初に実装したのが4.xBSDだとしても、
ここでの、互換性の話を含むsignalの挙動の話はまた別のですよね?
そもそも上のようなケースがあるから、UNIXではsignal()はもう使うべきではないですね。
マルチプロセスを想定していない、ANSI C特有の関数としてのsignal(),raise()とみなす
べきなのでしょう。UNIXではsigaction(),kill()が正しい。
004742=45
05/02/06 09:53:05(略)
Trying to change the semantics of this call using defines and includes
is not a good idea. It is better to avoid signal altogether, and use
sigaction(2) instead.
signal(2)だけじゃ扱いきれないことが多いですからね。
4.2BSDの頃にはこういう常識が形成されていたと思います。
今手元にないんですが、stevensの"Advanced"にも書いてあったと思います。
0048デフォルトの名無しさん
05/02/08 13:20:030049デフォルトの名無しさん
05/02/08 15:18:19これってもう誰も使ってないんですか?
0050デフォルトの名無しさん
05/02/08 15:57:050051デフォルトの名無しさん
05/02/08 22:40:00「こう書き換えろう゛ぉけっ!」とアドバイスしたいのですが、どういう書き換え方があるでしょうか?
0052デフォルトの名無しさん
05/02/08 22:45:010053デフォルトの名無しさん
05/02/08 22:50:450054デフォルトの名無しさん
05/02/09 00:02:050055デフォルトの名無しさん
05/02/09 01:06:27dlopen()等でそういった書き換えが考慮されていないプロセスです。
0056デフォルトの名無しさん
05/02/09 09:06:47cp libhoge.so /usr/lib/libhoge.so.tmp
mv /usr/lib/libhoge.so.tmp /usr/lib/libhoge.so
0057デフォルトの名無しさん
05/02/09 12:19:180058デフォルトの名無しさん
05/02/09 12:25:320059デフォルトの名無しさん
05/02/09 15:02:150060デフォルトの名無しさん
05/02/09 20:21:360061デフォルトの名無しさん
05/02/09 21:54:410062デフォルトの名無しさん
05/02/09 21:56:500063デフォルトの名無しさん
05/02/09 21:58:000064デフォルトの名無しさん
05/02/09 22:37:100065デフォルトの名無しさん
05/02/09 23:39:120066デフォルトの名無しさん
05/02/10 00:03:50やっぱ無理ですか。どうもでした。
ちなみにdllってWin用語ですか!?たまたま拡張子がDLLなだけでしょ。
0067デフォルトの名無しさん
05/02/10 00:15:110068デフォルトの名無しさん
05/02/10 00:28:17なこといっても、dymamic loadable libararyとは言わないもん。
shared libraryだな。
0069デフォルトの名無しさん
05/02/10 00:35:060070デフォルトの名無しさん
05/02/10 00:38:030071デフォルトの名無しさん
05/02/10 00:55:21>>68
確か dynamic link library の略だったような。
なぜか soopen() じゃなくて dlopen() だなあ。
0072デフォルトの名無しさん
05/02/10 14:18:26shareされるかどうかの観点 -> so
dynamicにロードされるかどうかの観点 -> dl(l)
0073デフォルトの名無しさん
05/02/10 17:04:50惜しい
0074デフォルトの名無しさん
05/02/10 17:12:06W=リチャード(故)の「UNIXネットワークプログラミング」8000円に
XTIのページが100ページぐらいあって
泣きたくなった
まじでいらん。金その分返せと
0075デフォルトの名無しさん
05/02/10 17:34:03dlopenはもともと別のAPIですから。
0076デフォルトの名無しさん
05/02/11 21:26:59printfは何度呼んでも変わらないようだけど。
int main(void)
{
errno = ETIMEDOUT;
printf("errno: %d \n", errno);
perror("perror");
printf("errno: %d \n", errno);
return 0;
}
errno: 2
perror: No such file or directory
errno: 29
0077デフォルトの名無しさん
05/02/11 21:33:200078デフォルトの名無しさん
05/02/11 23:16:4329ってなんだ?
0079デフォルトの名無しさん
05/02/11 23:56:23後で利用したければ、保存しなさい。
0080デフォルトの名無しさん
05/02/12 00:11:46perrorが標準エラーに出力するってことは、最終的にwrite(2)が
呼ばれるわけだから、どのみちerrnoが上書きされる可能性がある。
もし、errnoを保存してたとすると、write(2)が失敗した場合のerrnoを
取得できなくなってしまう(可能性も必要性も低いけど)。
こう考えれば納得できるんじゃないかな?
0082デフォルトの名無しさん
05/02/12 21:15:07popen()はスレッドセーフだよな?何故使ったらダメなんだ?
0083デフォルトの名無しさん
05/02/12 21:25:23おまいはできる部下だ
0084デフォルトの名無しさん
05/02/12 21:27:20本買う前に目録ぐらい見なよ
0085デフォルトの名無しさん
05/02/12 22:31:57ビニールの帯でくくってあってさぁ・・・
0086デフォルトの名無しさん
05/02/12 22:34:47何のために常時接続してんだか…
0087デフォルトの名無しさん
05/02/17 02:45:26どのような方法があるでしょうか?
具体的には ls -1 *.jpg の結果が欲しいのです
すいませんがよろしくおねがいします
0088デフォルトの名無しさん
05/02/17 02:52:40return system("ls -1 *.jpg");
ってことですか? それとも、
FILE *f = popen("ls -1 *.jpg", "r");
// fから読む
ってことでしょうか?
0089デフォルトの名無しさん
05/02/17 04:16:35返り値は、エラーの有無。
おもしろかった。
int hoge(char *cmd, char *b)
{
FILE *fp;
int ret;
cmd[strlen(cmd) - 1] = '\0'; /* 改行がくっついてる、と、仮定 */
printf("cmd: %s\n", cmd);
if ((fp = (popen(cmd, "r"))) == NULL) {
perror("popen");
return (1);
}
if ((ret = fread(b, 1, BUFSIZ, fp)) < 1) {
printf("no output from \"%s\"\n", cmd);
} else if (ret < 0) {
perror("fread");
pclose(fp);
return (1);
}
pclose(fp);
return (0);
}
0090デフォルトの名無しさん
05/02/17 04:42:42if ((ret = (fread(b, 1, BUFSIZ, fp))) < 1) {
fprintf(stderr, "no output from \"%s\"\n", cmd);
if (ferror(fp)) {
perror("fread");
pclose(fp);
return (1);
}
}
...すみません。もうやめます。
0091デフォルトの名無しさん
05/02/17 06:11:030092デフォルトの名無しさん
05/02/17 07:40:220093デフォルトの名無しさん
05/02/17 12:54:54それは厨だからさ。
0094デフォルトの名無しさん
05/02/17 13:22:01お前のレベルが低いだけだろ
0095デフォルトの名無しさん
05/02/17 13:56:20mailxでメールを送信する際に
添付ファイルをつけて送信することは可能なのでしょうか?
どこぞやにUNIXじゃ添付できないって書いてあったんですけれども
もしできそうならおしえていただけますでしょうか?
0096デフォルトの名無しさん
05/02/17 13:57:040097デフォルトの名無しさん
05/02/17 13:58:42板違い
0098デフォルトの名無しさん
05/02/17 13:59:16UNIX厨っていつも余計な事するよね
009995
05/02/17 14:04:38誘導願いしますw
UNIXの環境上からmailxで添付ファイルの送り方
があればききたいのですけれども
0100デフォルトの名無しさん
05/02/17 14:05:320101デフォルトの名無しさん
05/02/17 14:06:43$ man mailx
0102デフォルトの名無しさん
05/02/17 14:08:06010395
05/02/17 14:08:38おねがいします
教えてください
0104デフォルトの名無しさん
05/02/17 14:10:09UNIXなんて捨てたら?
0105デフォルトの名無しさん
05/02/17 14:11:45考えろよ
0106デフォルトの名無しさん
05/02/17 14:13:13あきらめろ
010795
05/02/17 14:14:060108デフォルトの名無しさん
05/02/17 14:14:200109デフォルトの名無しさん
05/02/17 14:15:16そのまま延々と処理を続けてもいい?
011095
05/02/17 14:15:25氏んだらいいと思うよ。
0111104
05/02/17 14:15:27そのとうりです
だからもうUNIXと言う文字があるところにはかかわらなくていいですよ
じゃぁね ばいばい
0112デフォルトの名無しさん
05/02/17 14:16:37UNIXで挫折って、わかる気がするなあ。
ずっと意味不明なコマンドの文字列打ってたら頭おかしくなりそうだし、
ずっと真っ暗なコンソール眺めてると鬱になりそうじゃん?
かといって思想のまるでないXは、オタ絵とただ沢山コンソール開くしか脳ないし、
こんなの与えても娯楽を常に要求する一般人は見向きもしない。
そもそもWebでしか見掛けない、哀れなOS、というのが一般人の見解だし。
そうそう、最近LindowsがUNIXの印象かなり悪くしたよね。
この事件でUNIXはビジネスで成功できないことがまた証明されてしまったわけだ。
昔からUNIXは関係者同士で常に足を引っ張って成長しない。
お金の匂いしないよね。全然。
そんなOSだから、挫折が常態であるのは必然なんだと思う。
0113デフォルトの名無しさん
05/02/17 14:18:01いいよ
Xのメセージは全部シグナルだし
0114デフォルトの名無しさん
05/02/17 14:25:17元95です。偽者発生してもうきけるふんいきじゃないですね。残念です。
man 英語だったんでうーんって感じだったんですけど
あとSHELLからコマンドで毎日定時に送るようにしたかったんですけど、
まあがんばって訳してみます。
結果あらしてすみませんw
0115デフォルトの名無しさん
05/02/17 14:33:240116デフォルトの名無しさん
05/02/17 14:36:52話はそれからだ
0117デフォルトの名無しさん
05/02/17 14:45:51現在実行中のプロセスが「自分自身」の絶対パスを知る方法ってありますか?
適当な path がとおってる環境下で、$ hoge <arguments...> とやったときに、
そのプログラムのなかで、hoge が /usr/bin/hoge なのか /usr/local/bin/hoge
なのかを知る方法でつ。
argv[0] を拾っても、上記の例だと hoge が得られるだけだし・・・
0118デフォルトの名無しさん
05/02/17 14:53:28Linux なら自身のpidを取得して/proc/pid/exe辺りを見ればいいんだけど。
man 5 proc で説明でると思う。他のOSの場合どうするのかは知らん。
0119デフォルトの名無しさん
05/02/17 14:55:34普通に考えると、ない。
0120114
05/02/17 15:40:39これでこたえなってます?
0121デフォルトの名無しさん
05/02/17 15:42:08ほんとUNIXって使えないね
0122デフォルトの名無しさん
05/02/17 16:03:21だから、ここはプログラミング質問スレなんだから
プログラムの使い方を聞くなってば。
0123デフォルトの名無しさん
05/02/17 16:09:39>そのとうりです
とうり?
0124デフォルトの名無しさん
05/02/17 16:33:36>>119 確かに >>118 さんに教えて頂いた方法は「普通」の方法っぽくはないですね。
もっと簡単に出来そうなんだけど・・・
以下のような動作するコマンドって、珍しいものですか?
usage:
hoge (-f <conf file>)
-f で設定ファイルが指定されればそのファイルを使うけど、オプション指定なしで起動された
場合は、hoge 自身が置かれているディレクトリ直下の conf file を使います(default)。
みたいな・・・
0125デフォルトの名無しさん
05/02/17 17:25:45ここで聞くより mailx と MIME でググると少しは幸せになったのに。
0126デフォルトの名無しさん
05/02/17 17:25:45確実に(どんな場合でも)取得する方法はない。
起動後にchroot(2)してたらパスが存在しないことすらありえるし。
0127デフォルトの名無しさん
05/02/17 17:44:02「hoge 自身が置かれているディレクトリ直下の……」というようなことは
「しない」っていうのがUNIXでの流儀なんですよ。
デフォルトのパスは定数として埋め込むのが安全です。
0128デフォルトの名無しさん
05/02/17 17:47:50いくつか流派があるが、GNU流の設定ファイルの置き場のお作法はこうじゃ
ttp://www.sra.co.jp/wingnut/standards/standards-ja_7.html#SEC54
0129デフォルトの名無しさん
05/02/17 18:17:03そんなに悪いものかな?
まあ、郷に入りては郷に従え、と。
0130デフォルトの名無しさん
05/02/17 18:33:07「自身が置かれているディレクトリ」なんて特定できるわけがない。
0131デフォルトの名無しさん
05/02/17 18:35:510132デフォルトの名無しさん
05/02/17 18:39:31動作を既定する設定ファイルなら、利用者ごとに設定できるようにするべき。
実行モジュールと同じディレクトリに置くという悪しき習慣の弊害は、
Win95時代のソフトウェアがAdministratorでないと設定を変えられない+
利用者ごとに設定できないという形でも現れている。
また、環境に依存するような設定ファイルなら、アプリケーションに埋め込むか
システムで管理するデータベースなどに登録するのがいい。
ここでもやはり、実行モジュールと同じディレクトリに置くというメリットは殆ど無い。
0133デフォルトの名無しさん
05/02/17 18:41:21ああそうか、そういう問題もあるね。今まで気付かなかったよ。
0134デフォルトの名無しさん
05/02/17 18:55:36つーか一体いつの時代のWindowsとアプリを批判してるんだよ・・・
0135デフォルトの名無しさん
05/02/17 18:57:3795くらいだとまだシングルユーザーだったからなぁ……
確かにそういう習慣はあったけれど今ではそれなりに改善されてるよ。
まだ昔の習慣引きずってるアプリケーション多いけどね。
普段Windowsしか使ってなかったから気付かなかったよ。参考になった。ありがとう。
0136デフォルトの名無しさん
05/02/17 19:29:19サンクスです。 脳内仕様を、も一回見直してみます。
0137デフォルトの名無しさん
05/02/17 21:09:150138デフォルトの名無しさん
05/02/17 21:36:16http://www.pathname.com/fhs/pub/fhs-2.3.html
0139デフォルトの名無しさん
05/02/18 00:13:210140デフォルトの名無しさん
05/02/18 00:24:45そこでsharですよ
0141デフォルトの名無しさん
05/02/18 01:04:11無茶苦茶だな
0142デフォルトの名無しさん
05/02/18 01:09:34自己パス得られないのはUNIXの欠陥の1つだよ
こいつ(>>138)こんなリンク張れば騙される奴がいるとでも思ってんだろうなw
0143デフォルトの名無しさん
05/02/18 01:15:35POSIXにもないってのは失敗かもな。
0144デフォルトの名無しさん
05/02/18 01:19:470145デフォルトの名無しさん
05/02/18 01:21:20シェルとCで機能の同期が取れてないのはヤバイ
創作の妨げでしかない
0146デフォルトの名無しさん
05/02/18 01:23:140147デフォルトの名無しさん
05/02/18 01:27:050148デフォルトの名無しさん
05/02/18 01:30:22UNIXでは流儀やら互換性やら実現不能やらで大騒ぎ
たしかにアフォすぎる
0149デフォルトの名無しさん
05/02/18 01:33:300150デフォルトの名無しさん
05/02/18 01:35:170151デフォルトの名無しさん
05/02/18 01:35:57おめでたい頭だな
UNIX板で普及スレとか立ってたけど
こんなアフォばっかじゃ永久に無理
0152デフォルトの名無しさん
05/02/18 01:42:16おれも無理だと思う。
0153デフォルトの名無しさん
05/02/18 01:45:202chでそういう便利関数集めた汎用ライブラリ作らない?
主要UNIX環境で動くようなやつを。
完全PDSで。
0154デフォルトの名無しさん
05/02/18 01:50:15PC98出身のフリーウェア作者かい?
0155デフォルトの名無しさん
05/02/18 01:50:35・Linux、*BSD、SunOS等のメジャーな奴のやり方教えてくれ
Linuxでのやり方は上に書いてたっけ。
0156デフォルトの名無しさん
05/02/18 01:51:50欲しいなら
#! /bin/sh
dir=$(dirname $0)
exec ${dir}/../lib/hoge/hoge.bin "$@"
みたいにするだけだよ。
jdk とか firefox とかでも使ってる、割とメジャーな手法。
0157デフォルトの名無しさん
05/02/18 01:53:400158デフォルトの名無しさん
05/02/18 01:56:54そういうシェルスクリプトを作るってことだから。
たぶん何の解決にもなってない。
UNIXは製作者側のセキュリティ保護をまったく考慮しないOS。
0159デフォルトの名無しさん
05/02/18 01:57:510160デフォルトの名無しさん
05/02/18 01:58:120161デフォルトの名無しさん
05/02/18 02:02:250162デフォルトの名無しさん
05/02/18 02:04:100163デフォルトの名無しさん
05/02/18 02:06:330164デフォルトの名無しさん
05/02/18 02:12:52>>132の言う問題が明確に問題視されたのは、
Windows 2000 TSEのマルチユーザアプリケーションのガイドラインができてからですね。
その時からWindows(TSEやXP)でも>>124のやり方はガイドライン違反です。
今やMac OS Xでもそうです。
0165デフォルトの名無しさん
05/02/18 02:14:220166デフォルトの名無しさん
05/02/18 02:16:40Windowsロゴを取得する際に要求される仕様だってだけ。
しかもそれはユーザーデータの保存場所の指定に関してであって
カレントディレクトリのコンフィグレーションを読むのは
.NETアプリだって普通にやってるよ。
0167デフォルトの名無しさん
05/02/18 02:21:38パスが通ってない所のものでも実行できるべ?
0168デフォルトの名無しさん
05/02/18 02:22:13抱き合わせ商法が許されたのは20年以上前の秋葉原ぐらいだが、
現在も生き残ってるベンダーは、今でもその商法で売っている。
まさに20年前の思想。
当然ソフトウェアの保護にはものすごく疎い。
ぶっちゃげ自分のシステム以外の事はどうでもよく、問題を認識してすらいない。
ベンダーはマシンを買ってもらえれば元が取れるからわれ関せず。
不正ユーザーにとっては、動いているソフトは勝手にクラックしてください
と言わんばかりの無法地帯。
0169デフォルトの名無しさん
05/02/18 02:24:49それなら明確に起動時にパスを指定してるから位置がとれるだろうよ。
0170デフォルトの名無しさん
05/02/18 02:27:18とはいえ、今のUNIX(互換OS)の主流であるLinux系やら
BSD系は通常ハードウェアについてこないぞ。
MacOSはついてくるな。
PCは、MSとの契約でWindowsを抱き合わせしないと販売できない
(Windowsを供給してもらえない、仕切り値が高くなる)ようになってる。
0171デフォルトの名無しさん
05/02/18 02:28:16まあ1クッション置けばそうかもしれんが・・・
0172デフォルトの名無しさん
05/02/18 02:28:36あぁ、そうか。あかんね。
カレントディレクトリとargv[0]を繋げるとか…駄目っぽい。
0173デフォルトの名無しさん
05/02/18 02:35:26たとえば/tmp/.../lsとか、./lsはあやしい。
0174デフォルトの名無しさん
05/02/18 02:38:150175デフォルトの名無しさん
05/02/18 02:40:36ネチネチいじってオナニーしてる連中しか居らんべ?
0176デフォルトの名無しさん
05/02/18 02:42:52・'/'なら絶対パス。
・'/'でなくargv[0]に'/'を含むなら相対パス。
・そうでないならPATHを調べる。
でどう?
0177デフォルトの名無しさん
05/02/18 02:45:05execl("/path/to/your/program", "/bin/cat", "hoge", NULL);
されたらどうするよ。
0178デフォルトの名無しさん
05/02/18 02:46:49でいいじゃん。
0179デフォルトの名無しさん
05/02/18 02:47:40もちろんお手上げ。
0180デフォルトの名無しさん
05/02/18 02:49:16ファイルはunlinkされてるかもしれんし
0181デフォルトの名無しさん
05/02/18 02:53:230182デフォルトの名無しさん
05/02/18 02:54:20確かにそれはそうなんだが、そこまで含めてしまうとなあ・・・
せめて自分自身の実体があった場所とか欲しいな
0183デフォルトの名無しさん
05/02/18 02:57:09プロセス構造体とかユーザ構造体から
取得してるのですか??
0184デフォルトの名無しさん
05/02/18 03:05:32ところでpsコマンドで見れるのは
>execl("/path/to/your/program", "/bin/cat", "hoge", NULL);
で言うと"/path/to/your/program"?それとも"/bin/cat"?
今端末の前に居ないんで確認できないんだ。
折角自身のPIDが分かるのにそこから引き出せないのかな?
すみません、ごめんなさい、出来ないみたいです、諦めます。
0185デフォルトの名無しさん
05/02/18 03:16:400186デフォルトの名無しさん
05/02/18 03:30:38ここまでの議論は既にできないことを前提に、
ではどうするかということに移ってると思うんだが。
なぜ謝る必要があるのかわからんな。
そういうことはKen ThonmsonやらPOSIX作ったやつらやらに言っとくれ。
0187117 = 124
05/02/18 08:35:27自分の書き込みに、こんなにたくさんレスがついたの、初めてです。 やっと、ヒッキー卒業
できそうな気がしてきました。 釣り師の快感も理解でき(ry
とまれ、>>127 >>128 のご意見は参考になりますた。
それと、>>181。 一番、オモシロカターヨ。
ミンナ、アリガ�d
0188117 = 124
05/02/18 08:36:010189デフォルトの名無しさん
05/02/18 09:30:24psで見れるのはどのUNIXでもargv[0]だと思う。
0190デフォルトの名無しさん
05/02/18 10:20:061このファイルに対してファイル名(パス)がいくつでもつけられるから、
実行ファイルのある場所は?っていう質問には無理があるのよ。
実行ファイルといっしょに置いた設定ファイルを使おうとした場合、
最悪でも今のPATHと照らし合わせれば、どのファイル名で実行されたかは
わかるだろうけど(which)、そこに一緒に置かれた設定ファイルが
あるかどうか保証できないじゃん。
0191デフォルトの名無しさん
05/02/18 10:54:10というか、ユーザー空間からpathnameを取得するための関数って
POSIXには含まれてないの?pathnameの有効性ともかくとしてさ。
0192デフォルトの名無しさん
05/02/18 10:57:22| pathnameの有効性はともかく、こうなります
って書いてあんのかよ…いらねーよ。つーか有害。
0193デフォルトの名無しさん
05/02/18 11:01:41なにを言ってるのかよく分らないんだけど、
execveシステムコールを発行する時点で、
pathnameは決まってるんじゃないの?だったら
それをユーザー空間から取得できるよう、共通のインターフェイスを
提供してもいいんじゃないの?っていう話なんだけど。
0194117 = 124
05/02/18 11:13:30♪ 私のため〜に〜 争わな〜い〜で〜
0195デフォルトの名無しさん
05/02/18 11:22:17アプリは /usr/xxx/app
設定ファイルは /usr/xxx/app.conf
だとして
ln /usr/xxx/app /usr/bin/app
とやったらどうなのよ?
/usr/bin/app として実行したら
/usr/bin/app.conf は存在しないだろ?
0196デフォルトの名無しさん
05/02/18 11:41:17それは「設定ファイルが見付かりません」でいいんじゃないの。
Linux で readlink("/proc/self/exe", ...) するとパスが取れるよう
な仕組みの、共通の API が欲しいぞ、と。
0197デフォルトの名無しさん
05/02/18 11:44:43>>195みたいなのはUNIXでは完全にlegalな使い方なんだから、
それをわざわざ制限するのはアホ。
0198デフォルトの名無しさん
05/02/18 11:53:45少ないとは思うけど需要はあるので、共通の手段があってもいいと思う
けどねえ。自分は使わないけど。
0199デフォルトの名無しさん
05/02/18 12:01:48いったいいつごろのJavaの話をしているのかねえ。
0200デフォルトの名無しさん
05/02/18 12:11:10JDKはその配布形態から定数を埋め込めないが、
代わりにちゃんとJAVA_HOMEという環境変数をみるよ。
それがない場合にやむを得ずdirname $0をとってるだけ。
0201デフォルトの名無しさん
05/02/18 12:26:42>>192
0202デフォルトの名無しさん
05/02/18 12:48:45(configure 時に --prefix で指定する) で十分だ
と思うけどなあ。そんなに大きなアプリなん?
インストールされた場所から設定ファイルを探すっ
てのは、UNIX 的にはむしろ嫌われることが多い。
どうしてかっていうと、インストールされたもの
は NFS などで共有される可能性があるけど、
設定ファイルは各マシンごとあるいは各ユーザー
ごとで別々にしたいから/etc か $HOME に置くの
が普通だから。
0203デフォルトの名無しさん
05/02/18 12:51:30に附属するデータファイルがあり、その場所を変更
したい場合には、JDK みたいに環境変数で指定可能
にして、環境変数がない場合には wrapper script
経由で dirname $0 を見るってのがまあ習慣。
Linux 方式は、カーネルメモリがちょっと無駄になる
(普通のカーネルは、わざわざ使えないかもしれない
情報を記憶して、物理メモリを無駄にするなんて
ことはしない) ってことの他に、>>126 の言うよう
に chroot 環境からは、そのアプリが使えないって
問題もあるな。
0204デフォルトの名無しさん
05/02/18 12:59:37シンボリックリンクがないせいで、固定パス名
(たとえば C:\Program Files\アプリ名\data) から
データを検索するように作ると、起動ドライブにしか
データファイルを置けなくて実用に耐えないとか、
実行中のアプリケーションやDLLを削除することが
できないせいで、セキュリティフィックスを当てる
間は実行中のサービスを止める必要があるし、結局
一度はリブートが必要になることが多いっていう
Windows の欠陥を欠陥だと認識できてないんだと
思うな。
UNIX の場合、プログラム実行中でも削除できてしまう
から、パス名の検索はもともとできない変わりに、
サービスを止める時間はほんとに一瞬で済むし、
リブートは必要ないんだが。
0205デフォルトの名無しさん
05/02/18 13:03:040206デフォルトの名無しさん
05/02/18 13:05:36NTFS 使ってるならハードリンクもシンボリックリンクも使えるよ。
0207デフォルトの名無しさん
05/02/18 13:05:530208デフォルトの名無しさん
05/02/18 13:10:19XPに限定されるけどね。
0209デフォルトの名無しさん
05/02/18 13:13:19同じように、UnixにWindowsスタイルを持ち込むのはアホ。
どっちが良いとか悪いとかはケースバイケースでしょ。
0210デフォルトの名無しさん
05/02/18 13:41:18できない
ということでまとまりましたか?
0211デフォルトの名無しさん
05/02/18 13:50:34シンボリックリンクってどうやるの?
.lnkの話?
0212デフォルトの名無しさん
05/02/18 13:54:17wrapperスクリプト経由ならできるでまとまったのでは?
0213デフォルトの名無しさん
05/02/18 13:56:59できないと
0214デフォルトの名無しさん
05/02/18 14:00:18ttp://homepage1.nifty.com/emk/symlink.html
0215デフォルトの名無しさん
05/02/18 14:01:26そうなんだけどそれがわからん奴が多過ぎ。ム板にあるせいか
自分の無知からくる妄想的な優越感にかこつけて
昏いコンプレックスを晴らそうとする厨が絶えないね。
まあ元から知性に欠けるので馬脚を現しまくりなんだけど。
>>212
まとめは>>202-203だろ。
別にラッパースクリプトでしなければならない必然性はないけどね。
単にそれが手間がかからないからそうすることが多いってだけで。
あえて言えば、Cのコード書くより早いのと、動作を知るのに
特にドキュメントを探し回らなくても読めばわかるってのが利点だね。
0216204
05/02/18 14:01:34ははあ、Windows 2000 からリバースポイントって機能が追加されて
たのか。勉強になりますた。
これって、ディスクが足らなくなって増設した場合とか、画期的に
便利だと思うんだけど、広まってないのはなんでかな?
>>211
http://support.microsoft.com/default.aspx?scid=kb;ja;JP205524
とか
http://homepage1.nifty.com/emk/symlink.html
とかあるみたい。
ntfs.sys にパッチを当てないとディレクトリしか指せないみたいだ
けど、ディスクが足りなくなった場合とかはそれでも問題なかろう。
通常はマシンごとにある設定ファイルを、ネットワークで共有したい
から /etc/設定ファイル → /global/etc/設定ファイル みたいな
シンボリックリンクを作りたいっていう要求に相当するのは無理だけ
ど。ファイルを指せないだけじゃなくて、リモートファイルシステム
も指せないみたいだから。
0217デフォルトの名無しさん
05/02/18 14:01:570218デフォルトの名無しさん
05/02/18 14:17:42全然問題を理解してないね
さすがwwwwww
0219デフォルトの名無しさん
05/02/18 14:27:58不親切な奴だな。
>>215
wrapper スクリプトの場合は、スクリプトが setuid/setgid
されてない限りは確実に argv[0] にパス名が渡ってくるん
だけど、Cプログラムの場合、argv[0] には基本的にコマンド
名しか渡ってこないから無理なんよ。
まあ、C でも、
1. strchr(argv[0], '/') != NULL なら argv[0]
からディレクトリを取り出す。
2. さもなくば $PATH から $argv[0] を探し、そこ
から探す
とすれば、実用上は問題なく探せるわけだが。
0220117 = 124
05/02/18 16:41:26「実行モジュールと同一ディレクトリを、設定ファイル置き場のデフォルトに・・」なんて
こたぁ、もう口が裂けても言いませんからぁ・・・
gnu さまに逆らおうなんて気は、毛頭なかったんでごぜーます。 ほんの出来心で・・・
デフォルト位置は、リテラル文字列でソースに梅込みますです。
そのあと、core 吐いて氏にます。
0221デフォルトの名無しさん
05/02/18 16:51:450222デフォルトの名無しさん
05/02/18 17:24:55> だけど、Cプログラムの場合、argv[0] には基本的にコマンド
> 名しか渡ってこないから無理なんよ。
え! もしかして俺はargv[0]に常にフルパスが入ると思ってたとみなされてるわけ?
イヤン。
> まあ、C でも、
> 1. strchr(argv[0], '/') != NULL なら argv[0]
> からディレクトリを取り出す。
> 2. さもなくば $PATH から $argv[0] を探し、そこ
> から探す
> とすれば、実用上は問題なく探せるわけだが。
普通そうするでしょ。
> >>215
> wrapper スクリプトの場合は、スクリプトが setuid/setgid
> されてない限りは確実に argv[0] にパス名が渡ってくるん
これって$0のこと? そんなわけないと思うんだけど。
それともスクリプトの側にフルパスで書いてあるからって話?
0223デフォルトの名無しさん
05/02/18 18:00:43そうそう。
そう。$0 のこと。書き間違えた。
> そんなわけないと思うんだけど。
いいや、そんなわけある。
でないと、インタープリタ (/bin/sh とか) がスクリプトが
どこにあるか見つけられないでしょ。だから $0 には確実に
ディレクトリ名が渡ってくる。細かいことを言うと $PATH に
カレントディレクトリが入っていて (← これはセキュリティ
ホールだから避けるないとまずい設定だがそれは置いておいて)、
カレントディレクトリのスクリプトを起動した場合には、$0 に
ディレクトリ名が入ってないわけだが、この場合もカレント
ディレクトリにあるスクリプトであるという情報はちゃんと分かる。
wrapper を使うことが結構多いのは、この性質を利用するため。
ただし、セキュアな setuid/setgid スクリプトを実装している
OS 上で、setuid/setgid スクリプトを起動した場合は例外。
0224デフォルトの名無しさん
05/02/18 18:29:57> >>206
>ははあ、Windows 2000 からリバースポイントって機能が追加されて
>たのか。勉強になりますた。
>これって、ディスクが足らなくなって増設した場合とか、画期的に
>便利だと思うんだけど、広まってないのはなんでかな?
デフォルトフォーマットであるベーシックディスクでは実現出来ないので
ダイナミックディスクにフォーマットコンバージョンする必要がある。
別にディスクの中身が消える訳ではないのだが、変換直前に警告がうるさく
出てくるので普通の人はビビってそこで思いとどまることが多い。
パフォーマンスの低下を心配して思いとどまる人も多いらしい。
私は問答無用でインストール直後にダイナミックディスクにしてます。
0225デフォルトの名無しさん
05/02/18 18:47:33FreeBSDで
execlp("./hoge", "/bin/oreore", "oredayo", NULL);
を、じっこうして、
ps -o comm,args すると、該当行の表示は
hoge /bin/oreore oredayo (hoge)
となりますた。(ばれています。)
manによると
> キーワード ucomm (アカウンティング名) は信用できます。
これのaliasのようです。
0226デフォルトの名無しさん
05/02/18 18:47:38> > そんなわけないと思うんだけど。
>
> いいや、そんなわけある。
> でないと、インタープリタ (/bin/sh とか) がスクリプトが
> どこにあるか見つけられないでしょ。だから $0 には確実に
> ディレクトリ名が渡ってくる。細かいことを言うと $PATH に
ああ、そうかそうか。PATHの上にある場合は確かにフルパス必要ですね。
なぜか相対パスで叩く場合しか考えてませんでした。納得。
ついでに恥をしのんでおききしますが、
> ただし、セキュアな setuid/setgid スクリプトを実装している
> OS 上で、setuid/setgid スクリプトを起動した場合は例外。
これってどのようなOSでどのような動作をしますか?
私の知識は「最近はセキュリティ上の理由で昔のOSと違って
スクリプトのsetuidビットは無効になる」って10年前ので止まってるんですけど、
最近はその問題を解決した上でスクリプトに立てられたsetuidが有効になるんですか?
0227デフォルトの名無しさん
05/02/18 19:00:48通常、スクリプトファイルをオープンするのはインタープリタ
の仕事だが、このような OS では、カーネルが直接スクリプトを
オープンし、そのファイルディスクリプタ番号を、インタープリタ
に「/dev/fd/ディスクリプタ」という名称で渡す。
少なくとも、SVR4 と NetBSD では実装してる。
NetBSD はカーネルオプションに SETUIDSCRIPTS と書かない限りは
無効。NetBSD が OpenBSD との分かれる前からある機能なので、
たぶん OpenBSD でも使えるんじゃないかと思う。
10年前でも、SVR4 は間違いなく対応してたと思うけど…
SVR4 直系である Solaris でも勿論使える。
0228デフォルトの名無しさん
05/02/18 19:06:26その背後で、魚たちはなおもじゃばじゃばと跳ね続けるのでした。
脱糞。
0229デフォルトの名無しさん
05/02/18 19:15:430230デフォルトの名無しさん
05/02/18 19:18:38カーネル内にプロセスと1:1対応する実行イメージのファイルパスは
保存されてるわけでしょ。なんでそれがユーザー空間から取得できないの?
Win厨とバカにするなら、まずは疑問にはちゃんと答えるべきでしょ。
0231デフォルトの名無しさん
05/02/18 19:23:340232デフォルトの名無しさん
05/02/18 19:26:10そのパッケージに依存するパッケージが、
置場所を見つけられるような機構がないとどうにもならない。
そうしないとRPMにあるようなfile単位でのconflict,
dependを扱えなくなってしまうから。
0233デフォルトの名無しさん
05/02/18 19:27:09されてない。取得できるとも限らない。
unlink(2)してしまえばfile systemとの関係がなくなるので。
0234デフォルトの名無しさん
05/02/18 19:27:110235デフォルトの名無しさん
05/02/18 19:27:48悪習といえるからじゃない?
0236デフォルトの名無しさん
05/02/18 19:28:57ハードリンクやchrootでpathnameという文字列の意味自体が変わるってことは分ってる。
知りたいのは、システムコールとして渡った文字列。なんでそれがユーザー空間から
取得できないのかってこと。
0237デフォルトの名無しさん
05/02/18 19:33:290238デフォルトの名無しさん
05/02/18 19:36:27>システムコールとして渡った文字列
これってなんのこと?
0239デフォルトの名無しさん
05/02/18 19:38:55コマンドのパス名はメモリの無駄だから保存されてない。
>>205にある ucomm は、コマンド名のbasenameの部分
だけでディレクトリは含んでないの。
0240デフォルトの名無しさん
05/02/18 19:42:11保存されているとなぜ思ったのかしら。保存しておいても、
あてにならない (コマンド実行中に削除されたりすれば意味が
ない) んだから、保存しておく意味もないんだけど。
Windows の場合、実行中のプログラムの削除ができないから、
保存しておく意味も一応あるだろうけど。
0241デフォルトの名無しさん
05/02/18 19:49:08ああなるほど。納得した。UNIXのVFSがフレキシブル、
というのをしきりに強調してたのはそういうことですか。
0242デフォルトの名無しさん
05/02/18 19:49:32ディレクトリエントリが消えるだけってことかな?
だとすれば、実行モジュールの件もファイル名と実行モジュールが対応しないわけだよね。
0243デフォルトの名無しさん
05/02/18 19:55:18自分を開いているプロセスも1個もなくなったら消えます。
一時的に使うファイルを、オープン直後にunlinkしたりするのは昔からけっこうある。
誰にもいじられないし、プロセスが終わると勝手に消える。
0244デフォルトの名無しさん
05/02/18 20:06:01その通り。
実行中に改名だってできるし。
0245デフォルトの名無しさん
05/02/18 20:08:07それに対するパスの表現力があまりにも貧弱だっていうことは
ありませんか?。ユーザー空間からは、パスを通してしか
VFSにアクセスできないわけでしょう。かといってパスに変わる
何があるんだって言われると、答えられないけど。
0246デフォルトの名無しさん
05/02/18 20:10:42意味のないものを使えるかのように振る舞って、
初級プログラマを悩ませない。
そのような可能性のあるAPIは排除して、
問題のあるプログラムを作成させない。
これは一つの見識。Windowsとは違う点。
0247デフォルトの名無しさん
05/02/18 20:13:48パス以外のアクセス手段を用意しようものなら、ディレクトリ階層と
そのパーミッションないしACLに基づいたアクセス制御モデルがご破算に
なりかねませんが。
0248デフォルトの名無しさん
05/02/18 20:16:33(handle。ただし Windows でいう HANDLE とは別物)
を指定して直接アクセスする fhopen って機能もある
けどね。>>247の言うようなセキュリティ上の問題が
あるから root だけからしか利用できないけど。
0249デフォルトの名無しさん
05/02/18 20:32:57これでいいかな。
0250デフォルトの名無しさん
05/02/18 20:34:490251デフォルトの名無しさん
05/02/18 20:39:330252デフォルトの名無しさん
05/02/18 21:38:06その代わり、プログラムのパス名を求めることができない。
・Windows はプログラムが自身のパス名を求めることができ
るが、その代わり、実行中のプログラムおよびそれを含む
ディレクトリの削除や改名ができない。
どっちをウンコだと思うかは人それぞれだと思うが。俺自身はUNIX厨だからセキュリティアップデートで多くの
場合リブートを必要とする Windows の仕様の方がヤだなー。
0253デフォルトの名無しさん
05/02/18 21:39:24ジャンクションを含むパス名を指定したプログラムを実行中
の場合、そのジャンクションの削除もできないのかぁ。
0254デフォルトの名無しさん
05/02/18 21:56:56ものの良し悪しはともかく、Windowsの方が
厨房にも直感的に理解できる仕様とはいえませんかね。
0255デフォルトの名無しさん
05/02/18 22:05:09スレ違いではあるんだが一応。
ベ ー シ ッ ク デ ィ ス ク で も で き ま す よ ?
NTFS にしとけば OK なはず。つか実際使ってますが。
FAT32 と間違ってるんじゃない?
普及してない理由としては、標準状態で簡単に使えるインタフェースが用意されていない、
アプリによって挙動が異なる、があると思う。
例えば、適当なファイル、サブディレクトリがあるディレクトリに対するリパースポイント
(ジャンクション)をエクスプローラで削除してみれば納得できるかと。
あ、あくまでテスト用のごみファイルでやりましょう。
0256デフォルトの名無しさん
05/02/18 22:11:06>>224はジャンクションの話をしてるんじゃなくて、
>>206の言うディスクが足りなくなって増設した
場合に便利な機能==ダイナミックディスクの話を
してるみたいだね。
UNIX で言うところの LVM + Software RAID +
resizable filesystem に相当する機能のようだが
まとめて一つの名前になってるのがなんか変な感じ。
> エクスプローラで削除してみれば納得できるかと。
どうなるん?
0257デフォルトの名無しさん
05/02/18 22:11:10そうね。
UNIXでは乱立のファイルロッキングも
Windowsはバカチョンだしね。
ただし、分散ファイルシステムでは、かなりきつい制約になるけども。
って、これ板違いの話題じゃねえ?
0258デフォルトの名無しさん
05/02/18 22:12:51海栗糞がいらんことで抗弁するから話題がそれていくんだよ
0259デフォルトの名無しさん
05/02/18 22:13:37昔は確かに乱立してたけど、1990年代の
終わり以降は fcntl の F_GET/SETLK で
ほぼ統一ですよ。
NFS 経由のロックも、今はそれなりに
動くようになったようだ。
0260デフォルトの名無しさん
05/02/19 00:46:590261デフォルトの名無しさん
05/02/19 00:59:050262デフォルトの名無しさん
05/02/19 09:11:030263デフォルトの名無しさん
05/02/19 09:47:48首 洗 っ て 出 直 し て き な!!
0264デフォルトの名無しさん
05/02/19 09:54:560265デフォルトの名無しさん
05/02/19 10:32:240266デフォルトの名無しさん
05/02/19 10:58:510267デフォルトの名無しさん
05/02/19 11:05:40今さら言い直しですかw
お 前 L v 低 す ぎ で す
0268デフォルトの名無しさん
05/02/19 12:01:37うん、対応してるよ。
もっとも俺は RedHat のことを指して商用UNIX とは
呼ばないけどなあ。商用UNIXクローンと呼ぶならまあ
分かるけど。
0269デフォルトの名無しさん
05/02/19 12:04:140270デフォルトの名無しさん
05/02/19 12:27:530271デフォルトの名無しさん
05/02/19 12:37:13MacOSXは商用UNIXに含まれますか?
0272デフォルトの名無しさん
05/02/19 12:46:04libproc(procps)の<proc/readproc.h>にあるproc_t辺りでどう?
0273デフォルトの名無しさん
05/02/19 12:57:15RedHatLinuxを商用と呼べない、というのには納得がいかないな。
事実上商用として使われているメジャーOSのひとつだろ。
単なるオープンソース寄せ集めじゃなくて、コードのメンテナが付いてて
しかも24時間サポートもやってるわけじゃん。その分カネもかかるけど。
これを商用UNIXと呼ばないで何を商用UNIXと呼ぶの?
まさかコードの由来がどうのとかツマンナイこと言わないよね?
0274デフォルトの名無しさん
05/02/19 14:54:140275デフォルトの名無しさん
05/02/19 14:54:58売り物
0276デフォルトの名無しさん
05/02/19 14:56:18268はUNIXと呼びたくないだけじゃないの?
0277デフォルトの名無しさん
05/02/19 15:27:190278デフォルトの名無しさん
05/02/19 15:59:550279デフォルトの名無しさん
05/02/19 16:14:08カーネル内のデータ構造体だとどれになりますか?
0280デフォルトの名無しさん
05/02/19 16:21:38カーネル依存
0281デフォルトの名無しさん
05/02/19 17:02:58struct task_struct {
....
unsigned long flags; /* per process flags, defined below */
#define PF_ALIGNWARN0x00000001/* Print alignment warning msgs */
#define PF_STARTING0x00000002/* being created */
#define PF_EXITING0x00000004/* getting shut down */
#define PF_DEAD0x00000008/* Dead */
これってどういう意味ですか?
task_structってのはBSDのproc構造体とは違うんですか?
0282デフォルトの名無しさん
05/02/19 18:16:00まあ知ってはいるが、ちゃんと書け。バージョンもな。
あとここよりLinux板のカーネルなんちゃらスレの方が適切。
0283デフォルトの名無しさん
05/02/20 06:17:430284デフォルトの名無しさん
05/02/20 15:49:27別に何の問題もないでしょ。
ファイルをロックする権限があるのに、パーミッションを変更
する権限がない状況なんてありえないんだから。
逆に、advisory と mandatory を切替えるのにプログラム側の
対処が全く必要ないっていうのは、大きなメリット。
開発サイドとはまったく関係なく、運用サイドだけで対応でき
るからね。
0285デフォルトの名無しさん
05/02/20 20:32:46fcntl (sock, F_SETOWN, getpid () );
fcntl (sock, F_SETFL, O_ASYNC);
でSIGIOを受けるようにした後で、
SIGIOが発生しないように、fcntlで設定をするにはどうしたらいいでしょうか?
0286デフォルトの名無しさん
05/02/21 00:51:180287デフォルトの名無しさん
05/02/21 01:22:29ありがとうございました。
0288デフォルトの名無しさん
05/02/21 10:41:42> これを商用UNIXと呼ばないで何を商用UNIXと呼ぶの?
RedHat が Open Group の conformance test 通ったら
商用 UNIX と呼んであげよう。
0289デフォルトの名無しさん
05/02/21 10:57:140290デフォルトの名無しさん
05/02/21 11:08:500291デフォルトの名無しさん
05/02/21 11:15:51チョー有名な再帰型定義だろ。今さら反応すんな。
0292デフォルトの名無しさん
05/02/21 21:39:52それはcompatibleかどうかの定義であって
商用かどうかの定義とは異なるのでは?
0293デフォルトの名無しさん
05/02/21 21:43:390294デフォルトの名無しさん
05/02/22 01:06:42HP-UXとかSolarisとか
OSだけなんて商売にならねーって
M$でさえPCとのバンドルで儲けてるのに
0295デフォルトの名無しさん
05/02/22 01:13:12なんてのが「商用」になるのさ。
抱き合わせは、特定ハードウェア用の、という意味だろ?
全然商用と関係ないやん。
0296デフォルトの名無しさん
05/02/22 01:13:34は?
0297デフォルトの名無しさん
05/02/22 01:35:08だ〜か〜ら〜、「商用」の部分に文句をつけてる奴は
誰もいないんだってば。
「商用UNIX」ではなく「商用Linux」
OK?
0298デフォルトの名無しさん
05/02/22 01:57:300299デフォルトの名無しさん
05/02/22 03:49:240300デフォルトの名無しさん
05/02/22 09:29:25通んなきゃ、少なくとも商標としての UNIX は名乗れんぞ。
0301デフォルトの名無しさん
05/02/22 09:41:070302デフォルトの名無しさん
05/02/22 09:42:130303デフォルトの名無しさん
05/02/22 10:46:15ttp://www.opengroup.org/ を自分で調べれ。
>>302
そらそうだ。
0304デフォルトの名無しさん
05/02/22 11:42:37UNIXおよびUNIX clone環境一般のプログラミングに関する質問スレッド
0305デフォルトの名無しさん
05/02/22 13:34:24当然、金がかかる。
0306デフォルトの名無しさん
05/02/22 13:46:31金がかかるかどうかは知らない。
0307デフォルトの名無しさん
05/02/22 14:38:080308デフォルトの名無しさん
05/02/22 15:04:040309デフォルトの名無しさん
05/02/22 15:38:550310デフォルトの名無しさん
05/02/22 17:41:250311デフォルトの名無しさん
05/02/22 18:52:10プロセスのメモリ覗きたい
0312デフォルトの名無しさん
05/02/22 19:09:090313デフォルトの名無しさん
05/02/22 20:11:340314デフォルトの名無しさん
05/02/25 01:14:140315デフォルトの名無しさん
05/02/25 01:41:10XCloseDisplay
exit
したいのですが、その指定時間までの間にもXNextEvent の処理を受けたいのですが
この場合は どのように書くのでしょうか?
XNextEvent をループでまわして そのループの中でtimeで計算して指定時間後に抜けようと思ったのですが
XNextEvent は、イベントが起きるまでそこで止まってしまうのでループでまわすことができません
すいませんが、教えていただけると幸です
0316デフォルトの名無しさん
05/02/25 03:14:38イントリンシックスにタイマーなかったっけ?
それなら時間になれば勝手にコールバックが呼ばれると思うが。
0317デフォルトの名無しさん
05/02/25 05:24:04Xlib しか使ってないなら ConnectionNumber() で
ファイルディスクリプタを求めて、poll(2) かな。
0318317
05/02/25 07:25:27s/XtAddInput/XtAddTimeout/
0319デフォルトの名無しさん
05/02/25 17:21:072.6のkernel/fork.cのdo_fork関数とcopy_process関数を読んだら分りました。
しかしこのネーミングなんとかならないですかね。もう手遅れかな。
0320デフォルトの名無しさん
05/02/25 19:47:09Hurdを待て
0321315
05/02/25 23:16:31ありがとうございます
Xtはつかっていず、 Xlibだけです
ConnectionNumberとpollを調べてみたのですが
プログラミングを始めたばかりでよくわかりません
poll の第3引数にタイムアウトまでの時間を指定すると
言うことしかわかりませんでした・・・
すいませんが、 簡単にサンプルを書いていただけませんでしょうか?
すいませんが、 よろしくおねがいします
0322デフォルトの名無しさん
05/02/25 23:51:46っていうかググれ!
0323デフォルトの名無しさん
05/02/26 00:17:03たぶん、こんな感じ。
0324デフォルトの名無しさん
05/02/26 00:17:39--- piyo.c Sat Feb 26 00:07:42 2005
***************
*** 1,6 ****
--- 1,10 ----
#include <stdio.h>
#include <X11/Xlib.h>
#include <X11/Xutil.h>
+ #include <sys/types.h>
+ #include <poll.h>
+ #include <time.h>
+ #include <errno.h>
#define STRING "Hello, world"
#define BORDER 1
***************
*** 49,54 ****
--- 53,59 ----
XSizeHints xsh;
char *geomSpec;
XSetWindowAttributes xswa;
+ time_t deadline = 0;
if ((dpy = XOpenDisplay(NULL)) == NULL) {
fprintf(stderr, "%s: can't open %s\n", argv[0], XDisplayName(NULL));
0325デフォルトの名無しさん
05/02/26 00:18:49XMapWindow(dpy, win);
for (;;) {
+ time_t now;
+ struct pollfd fd;
+ int rv;
+
+ if (deadline != 0 && !XPending(dpy)) {
+ time(&now);
+ if (deadline <= now)
+ break;
+ fd.fd = ConnectionNumber(dpy);
+ fd.events = POLLIN;
+ rv = poll(&fd, 1, (deadline - now) * 1000);
+ if (rv == -1) {
+ if (rv == EINTR)
+ continue;
+ perror("poll");
+ exit(1);
+ }
+ if (rv == 0) /* timer expired */
+ break;
+ }
XNextEvent(dpy, &event);
0326デフォルトの名無しさん
05/02/26 00:20:40deadline に、終了時刻 (UNIX Epoch からの秒数) を入れておくと、
そのタイミングで終わる。
0327デフォルトの名無しさん
05/02/26 00:28:51if (rv == EINTR)
は、
if (errno == EINTR)
が正しい。
0328デフォルトの名無しさん
05/02/26 00:34:010329デフォルトの名無しさん
05/02/27 10:26:190330デフォルトの名無しさん
05/02/28 04:59:340331デフォルトの名無しさん
05/02/28 05:06:120333デフォルトの名無しさん
05/02/28 13:57:440334デフォルトの名無しさん
05/03/01 09:26:590335デフォルトの名無しさん
05/03/01 16:53:14良いライブラリがあったらお教えください。
ちょっと探してみたんですがシンプルで使いやすそうなのが見つかりませんでした。
0336デフォルトの名無しさん
05/03/01 17:00:590337デフォルトの名無しさん
05/03/01 17:33:150338デフォルトの名無しさん
05/03/01 17:39:49iconvだと変換元の文字コードを指定しなきゃいけないですよね。
それは仕方ないのかな…
PerlのJcode.pmみたいにお手軽に使えるのはないんですかね?
sylpheedってMUAのソースにあるcodeconvあたりを流用するのが良いような気がしてるんですけど。
やっぱ定番はiconvなんですか?
0339デフォルトの名無しさん
05/03/01 17:43:45私はあいこんぶ
0341デフォルトの名無しさん
05/03/01 18:19:30あー、なるほど。自動判別「も」したい、と。
そういうのって、用途 (というか、入力がどこまで
限定できるか) に拠って全然違ってくるからねぇ…
0342デフォルトの名無しさん
05/03/01 18:35:36このスレよんでたら眠くなってきた。
0343デフォルトの名無しさん
05/03/01 18:41:130344デフォルトの名無しさん
05/03/01 18:44:02文字コードを自動判別しないといけない時点で負け。
0345デフォルトの名無しさん
05/03/01 18:44:52なんか最近は自作自演で回ってるみたい。
俺も眠たくなってきた。
0346デフォルトの名無しさん
05/03/01 18:45:410347デフォルトの名無しさん
05/03/01 18:49:49実行ファイルに細工したいので
UNIXの実行ファイルのフォーマットを教えてください。
0348デフォルトの名無しさん
05/03/01 18:53:340349デフォルトの名無しさん
05/03/01 18:55:37わかりますか?リソース
0350デフォルトの名無しさん
05/03/01 19:00:04セキュリティの減ったくれもないので使いたくありません。
WindowsでいうPEへのセクション追加ぐらいの手間で解決したいのです。
0351デフォルトの名無しさん
05/03/01 19:01:330352デフォルトの名無しさん
05/03/01 19:03:070353デフォルトの名無しさん
05/03/01 19:04:590354デフォルトの名無しさん
05/03/01 19:05:58リンカでつなげば?
0355デフォルトの名無しさん
05/03/01 19:07:58何言ってんの?このタコは
0356デフォルトの名無しさん
05/03/01 19:11:100357デフォルトの名無しさん
05/03/01 19:18:15だから何ですか?
一般論を聞きたいのではなく、
入れたい場合が出てきたということです。
>>352
詳しく教えてください。
>>354
リンカでどうやって繋ぐのでしょうか?
>>356
初期済みのデータが初期化済みデータのことならその通りです。
0358デフォルトの名無しさん
05/03/01 19:31:03アイコンとかって外部ファイル?
もしかしていちいちパス指定で取ってきてる?
パス管理複雑にならない?
0359デフォルトの名無しさん
05/03/01 19:31:28ELFの話はLinkers & Loadersていう本にそれなりに載ってる気がする。
0360デフォルトの名無しさん
05/03/01 19:31:520361デフォルトの名無しさん
05/03/01 19:38:33おまえ、つまんねー奴って言われるだろ
0362デフォルトの名無しさん
05/03/01 19:39:22そういうことでしたら
既存の実行ファイルに対して追加したいので
リンカを使う方法は無理です。
0363デフォルトの名無しさん
05/03/01 19:40:35>だから何ですか?
漏れは351じゃないけど、別に多少関連した雑談や世間話くらいしても良いと思うんだけど・・・
質問と回答以外はスレ違い、っていう立場もあるのかもしれないけど。
>リンカでどうやって繋ぐのでしょうか?
テキトーなバイナリなりXMLなり文字列なりをソースとして、
const unsigned char appResourceHoge[] = { 0x11, 0x22, .............. };
みたいなソースファイルを出力するスクリプトなんかを使う。
Xのコードとか書いたことがあればイメージできると思う。
実行ファイルに細工したい(ソース無しでリソースだけ変更したい)って用途には向かない。
なんだから偉そうな質問者様に対してこんな返事しかできなくてごめんね。
0364デフォルトの名無しさん
05/03/01 19:40:43実行ファイルのフォーマット教えてくれよ
0365デフォルトの名無しさん
05/03/01 19:41:29ん?既存の実行ファイルを弄らないなら埋め込んでも意味ないだろ?
埋め込んだ上でそれを使うように修正しないと
0366デフォルトの名無しさん
05/03/01 19:41:56うわ、そんなことできるならはじめからやってるだよ
0367デフォルトの名無しさん
05/03/01 19:42:530368デフォルトの名無しさん
05/03/01 19:43:23Windowsのリソースのように、バイナリに埋め込まれていてかつ後から
編集できるデータ格納方法は無いだろうか、という質問だと思うが。
コード自体は自分で書くのだろう。
0369デフォルトの名無しさん
05/03/01 19:44:14そう思ってたが >>362 を読んで違うのかと思った
0370デフォルトの名無しさん
05/03/01 19:46:59後でマジックナンバーか何かで検索して挿げ替えるとか、かなあ。
0371デフォルトの名無しさん
05/03/01 19:50:07自分で埋めるならリンカ使えるだろ
人のアプリをどうこうするなら、Winのリソース差し替えのようにはいかない。
0372デフォルトの名無しさん
05/03/01 19:52:23実行時にファイル開いてELFヘッダからその領域を見ればいいんじゃ。
OSのバグ踏む可能性あるけど
0373デフォルトの名無しさん
05/03/01 19:53:02それでいいの?
0374デフォルトの名無しさん
05/03/01 19:55:520375デフォルトの名無しさん
05/03/01 19:59:16もし、OSの支援が無いならば、
実行プロセスが自分自身の元になった実行ファイルの所在を
正確に把握する手段を持たなくてはいけないはず。
これって、少し前に出ていた設定ファイルの議論と重なるような気がする。
0376デフォルトの名無しさん
05/03/01 20:11:33ちゃっちゃと調べて実際をどうなのかを書けよ
0377デフォルトの名無しさん
05/03/01 20:12:56リソースにもいろいろあるでしょ。
メモリとかディスクとかいったリソースならもちろん扱える。
人的リソースみたいなものは、OSの守備範囲外だから当然無理。
てゆうか、そもそも質問が意味不明。
> 実行プロセスが自分自身の元になった実行ファイルの所在を
> 正確に把握する手段を持たなくてはいけないはず。
> これって、少し前に出ていた設定ファイルの議論と重なるような気がする。
実行ファイルのディスク上の物理位置は正確に把握している。
パス名は把握しても意味がない (Windows と違い、実行ファイル
のパス名が存在しなくなっても実行を継続できる) から、そんな
ものは記録しないってのは、このスレでさんざん既出。
なんか、基本的な素養に欠けているって感じの質問だなあ。
ソースとまでは言わんから、せめて本ぐらい読めというか。
0378デフォルトの名無しさん
05/03/01 20:13:150379デフォルトの名無しさん
05/03/01 20:13:46質問スレだから。
質問だけするのが正しい態度。
0380デフォルトの名無しさん
05/03/01 20:14:10だったら最初からこの本読めとかリンク出せよヴォケ
0381デフォルトの名無しさん
05/03/01 20:14:500382デフォルトの名無しさん
05/03/01 20:16:200383デフォルトの名無しさん
05/03/01 20:16:41>リソースにもいろいろあるでしょ。
この流れだとWindowsや(旧)Macで言うところのリソースのことではないでしょうか。
>>381
WineではPEファイルから取ってくるみたいですよ。
0384デフォルトの名無しさん
05/03/01 20:18:590385デフォルトの名無しさん
05/03/01 20:20:04どこに載ってるか書いて欲しいなあ。
0386デフォルトの名無しさん
05/03/01 20:20:41!!!そのキーワードは、
いっちゃいかん!!
0387デフォルトの名無しさん
05/03/01 20:21:490388デフォルトの名無しさん
05/03/01 20:23:21本の名前も出せないでしょ。
>>381みたいな質問している人にOSの本勧めても
無意味だし。
>>381
Xの場合、ダイアローグの表示はツールキットの
仕事なのでツールキットの種類によりけり。
アイコンの表示はウィンドウマネージャの仕事
なので、ウィンドウマネージャによりけり。
(ツールキットが決まると、ツールキット標準の
ウィンドウマネージャが決まる場合もある。)
知りたいツールキットとウィンドウマネージャの
種類を具体的に述べれば、もっと具体的な答も
出せるかもね。
いにしえのXtとtwmで言うなら
/usr/X11R6/include/X11/{bitmaps,pixmaps}/
と /usr/X11R6/lib/X11/app-defaults/ あたりが
標準的な場所なわけだが。(アプリケーション固有
の場所に置くこともできる。)
ツールキットは狭義ではOSの一部ではない。
>>387が言ってるのはそういう意味。
0389デフォルトの名無しさん
05/03/01 20:23:270390デフォルトの名無しさん
05/03/01 20:26:23わかってないなあ
0391デフォルトの名無しさん
05/03/01 20:27:27おれは正解を選んだ
0392デフォルトの名無しさん
05/03/01 20:28:33もうUNIXで仕事したくないのに
UNIXの仕事がきます。
どうすればよいですか?
453 名前:デフォルトの名無しさん 投稿日:05/02/28 01:18:47
仕事があるだけマシってもんよ
そうだろう?兄弟
454 名前:デフォルトの名無しさん 投稿日:05/02/28 01:26:38
もういやだ!
もういやだ!
もういやだ!
0393デフォルトの名無しさん
05/03/01 20:30:510394デフォルトの名無しさん
05/03/01 20:31:13自分はLinux以外知りません。
0395デフォルトの名無しさん
05/03/01 20:34:08商用、フリーを問わず、現役のUNIX系OS、ほぼ全て。
ELF の規格を定めたのは、AT&T と Sun じゃないかな。
linux は最初のうちはa.outしかサポートしてなかったね。
0396デフォルトの名無しさん
05/03/01 20:35:29あんがと。
0397デフォルトの名無しさん
05/03/01 20:37:560398デフォルトの名無しさん
05/03/01 20:38:25Solaris, *BSD, IRIX, SVR4 等...
最近は組み込み用途の開発ツールも ELF を吐き出す.
0399デフォルトの名無しさん
05/03/01 20:40:270400デフォルトの名無しさん
05/03/01 20:42:04使える命令セットやシステムコールが異なるので、
同一のトロイの木馬を複数のOSに対応させるのは
面倒なんだけどね。まあやれば当然できるが。
つうか、そういうものを作るだけの知恵のある奴は、
ふつうはもう少し建設的なことに暇を使うと思うんだが。
そういう、できて当たり前で、人が困るだけのプログラム
を作るのは、そういうことの判断ができない頭弱い奴だけ
じゃない?
0401デフォルトの名無しさん
05/03/01 20:58:380402デフォルトの名無しさん
05/03/01 22:05:130403デフォルトの名無しさん
05/03/01 22:09:200404デフォルトの名無しさん
05/03/01 22:25:28トロイとかウィルスばらまかないとね
需要のための供給
0405だよもん
05/03/01 22:37:030406335
05/03/01 22:49:491文書が1つの文字コードに限定されてるんです.
>>341
そうです.自動判別”も”したいんですけど,
どうも良いライブラリがみつかんないんですよねぇ.
>>344
>文字コードを自動判別しないといけない時点で負け。
orz.
完全に自動判別すんのが厳しいのは分かってるんですけど…
大体でよいんです.
>>346
nkfに渡すのも考えてるんですけど…
ライブラリ化されてて使いやすいのはないものかと.
0407デフォルトの名無しさん
05/03/01 23:36:56http://tricklib.com/cxx/ex/babel/
g++ だと多少問題があるらしいがこれはどうだ?
僅かな文字数でも高い精度で判別できるぞ。
0408デフォルトの名無しさん
05/03/02 11:14:24使う気がしなくなるのは俺だけか?
0409デフォルトの名無しさん
05/03/02 11:23:120410デフォルトの名無しさん
05/03/02 13:38:210411デフォルトの名無しさん
05/03/02 15:11:02↑見ず知らずの他人の趣味を「人生の無駄」呼ばわりする香具師
0412335
05/03/02 15:50:59ありがとうございます。よさげですね。
g++だと何か問題があるんですかね?
ちょっと試してみます。
0413デフォルトの名無しさん
05/03/03 23:45:230414デフォルトの名無しさん
05/03/05 05:52:290415デフォルトの名無しさん
05/03/05 11:28:090416デフォルトの名無しさん
05/03/07 13:17:21unsigned longに入れてるんだけど、これって
128bitCPUが出てきたときに問題にならないの?
0417デフォルトの名無しさん
05/03/07 13:30:53128bit CPU が実用になる時代が本当に来たとしても、
その CPU で long>=128bit なら問題にならない。
long<128bit なら問題になる。
一般論としては、そういう用途には unsigned long では
なく、uintptr_t ないし intptr_t を使うべき。
この型は C99 なら #include <stdint.h> すると定義
される。
0418デフォルトの名無しさん
05/03/07 13:42:04longを128bitにするから問題なし。
0419デフォルトの名無しさん
05/03/07 13:42:08ほとんどの場合unsignedにする意味なし
Linuxのプロセスメモリマップの使い方でも調べたほうが賢明
0420デフォルトの名無しさん
05/03/07 14:16:30なんだこりゃ
0421デフォルトの名無しさん
05/03/07 18:18:53ようでつね。
対して、多くの方々は >>416 さんが疑問視しているのは 「 long 」 の方だと・・・
どちらにしても、>>417 さんの答えで解決でつよね?
0422デフォルトの名無しさん
05/03/07 19:12:18128bitCPUが出てきたときは、LP128というものを定義して、
unsigned longはつねにポインタサイズと同じビット長になる
ことを暗に想定してるのかな?
LP128だと
short(16),int(32),long(128),long long(128)
こんな感じなのかな?
>>128
>一般論としては、そういう用途には unsigned long では
>なく、uintptr_t ないし intptr_t を使うべき。
ですよねえ
0423デフォルトの名無しさん
05/03/07 19:22:13これがいろんな型にtypedefされて、またそれらが
インターフェイスの定義に既に使われていたりするところが
ややこしいね。
0424デフォルトの名無しさん
05/03/07 19:50:19予測できる将来に128bit CPUが実現するかどうかは
良く分からないけど、もし実現したらUNIX系は
short:int:long:long long=16:32:64:128 になるん
じゃないかなあ。だって、1/2/4/8/16 全てのサイズの
整数型が使えないと不便でしょ。
今やuintptr_tがあるから、long がポインタ変数を
保持できるとかいった仮定を設ける必要ないし。
0425デフォルトの名無しさん
05/03/07 19:53:29http://www.opengroup.org/public/tech/aspen/lp64_wp.htm
0426デフォルトの名無しさん
05/03/07 20:19:14ILP64・・・intとlongとポインタが64ビットに
LLP64・・・long longとポインタが64ビットに
ILP32・・・intとlongとポインタは32ビット(今の32bit向けCコンパイラはこれかな?)
LP32・・・longとポインタは32ビット、intは16ビット
こんな感じ?
0427デフォルトの名無しさん
05/03/07 20:23:570428デフォルトの名無しさん
05/03/07 20:29:51もし動かなかったらIBMに金出させて力技で修正すればいいだけ。
今困っていない事を今対応するな。これがLinuxのモットーだ。
0429デフォルトの名無しさん
05/03/07 20:33:26勝手にやってくれ.
0430デフォルトの名無しさん
05/03/07 20:48:260431デフォルトの名無しさん
05/03/07 20:52:540432デフォルトの名無しさん
05/03/07 20:54:59二つの視点で見るとこんなかな。
UNIXは32bit,64bitそれぞれILP32とLP64だけど、
char:short:int:longそれぞれ
ILP32 8:16:32:32 32(pointer)
LP64 8:16:32:64 64(pointer)
ILP32からLP64への移行で変わったのは、
(int,long)と(int,pointer)の相対的関係が変わったことと、
longとpointerの実際のデータ長が変わったということ。
char:short:int:long:long long
ILP128 8:16:128:128:128
LP128 8:16:32:128:128
LLP128 8:16:32:64:128
128bitCPUにおいてはこんな感じのがありえると思うけど、
今UNIXで32bit64bit両方に通用するコードとしてlong=pointerという
仮定の元にコードを書いてしまうともうLP128しかないと思うんだよね。
というかILP32から64bit化においてLP64を採用した時点で
long=pointerという想定を受け入れてるように見える。
ILP128はちょっとありえないね。LP64でせっかくintの実データ長を32で固定した意味がなくなる。
LLP128が1番よさそうに見えるけど、LP64からlongとpointerの相対的関係が異なる。
素人考えだとLP128しかなさそうに見えるけど。
0433デフォルトの名無しさん
05/03/07 21:01:510434デフォルトの名無しさん
05/03/07 21:02:19だから intptr_t, uintptr_t を使えってばさ。
それで問題なし。
0435デフォルトの名無しさん
05/03/07 21:43:35だよね。30年くらいかかっている。
同じような指数的ペースで発展する(1年で1bitくらい)として
128bit マシンができるのは、2050年を過ぎたぐらい…
俺は死んでるな。
0436デフォルトの名無しさん
05/03/07 21:46:460437デフォルトの名無しさん
05/03/07 22:51:54という根源的な疑問は起きないのか?
0438デフォルトの名無しさん
05/03/07 22:59:35一番大きいでしょ。(AS/400 みたいに、アドレス空間の
ほとんどを無駄に捨てざるをえないアーキテクチャだと
話は別だが。)
問題は、現在の指数関数的なストレージサイズの増大が、
あと50年続くかどうかと、たとえ続いたとしても、そんなに
使い道があるかどうかだな。
64ビットでも、人類ひとりひとりに、それぞれ2GB以上も
あるというのに。
0439デフォルトの名無しさん
05/03/07 23:02:380440デフォルトの名無しさん
05/03/07 23:05:370441デフォルトの名無しさん
05/03/07 23:07:410442429
05/03/08 01:57:05438 じゃないんだけど, そのころはおいらは隠居してるわけだ.
興味ねぇ.
>>438
> 基本的にはストレージのサイズが増えるからという要因が
> 一番大きいでしょ。
数値計算とかやってると, アドレッシングできる領域がどれだけ増
えても実際の計算速度が上がらないと, メリットは小さい.
やっと 64bit を有効に使える計算速度に達したってのが現実では?
# DB 検索なんかでもそぉだと思うぞ, エンジン作ってる連中にし
# てみれば...
0443デフォルトの名無しさん
05/03/08 01:59:32ダウト。
データベースとか情報検索とかはとっくに64bitないと話にならなくなってる。
0444デフォルトの名無しさん
05/03/08 02:36:390445デフォルトの名無しさん
05/03/08 03:12:48ブー。mmapが使えないと結構苦しい。
0446445
05/03/08 03:13:480447デフォルトの名無しさん
05/03/08 03:28:32これは一言でいってどういう事情によるものなのかしら?
Linux linux/include/asm/posix_types.h
BSD sys/arch/`uname -m`/include/ansi.h
/*i386*/
#define _BSD_SIZE_T_ unsigned int
#define _BSD_CLOCK_T_ unsigned long
/*amd64*/
#define _BSD_SIZE_T_ unsigned long
#define _BSD_CLOCK_T_ unsigned int
0448デフォルトの名無しさん
05/03/08 03:35:29/*i386*/
typedef unsigned int __kernel_size_t;
typedef long __kernel_clock_t;
/*amd64*/
typedef unsigned long __kernel_size_t;
typedef long __kernel_clock_t;
0449デフォルトの名無しさん
05/03/08 05:16:220450429
05/03/08 07:20:28> データベースとか情報検索とかはとっくに64bitないと話にならなくなってる。
そぉゆう意味で言ってるんだが...
「やっと」ってゆう言い方が悪かった. すまん.
おれ的には, やっと 10年くらい前からってな感覚だったもんで...
当初からそれなりに, 64bit マシンはメモリバス帯域広いし, マル
チプロセッサ化するために, バスのクロスバ化なんて, ハードウェ
ア的に見た場合, 非効率以外のなにもんでも無いようなことまでやっ
てるところもあるし...
それ以前は, こんなぜいたくはスパコンにしか許されなかったわけ
だから...
0451デフォルトの名無しさん
05/03/08 07:39:510452デフォルトの名無しさん
05/03/08 09:07:010453デフォルトの名無しさん
05/03/08 09:12:18BSDの方の型は、ユーザー空間にも公開しているものなので、
一度決めると変えない方がいいんじゃないかな。まあユーザー
プログラムが行儀良く書かれていれば、同じサイズの型に
変えても問題ない筈だけど、行儀良く書かれてない場合、
int と long の食い違いが生じると、lint では警告さえる
ケースがありそうな。
あとは、その CPU アーキテクチャの ABI の仕様書に書かれて
いる型名に合わせてるとかもあるかも。
Linux の方はカーネル内部用の型に見えるなので、良くわかんない。
0454デフォルトの名無しさん
05/03/08 09:29:17C99 なら一応できるよ。
intptr_t x; なら
#include <inttypes.h>
printf("%" PRIdPTR "\n", x);
とか。
typedef intptr_t MyType;
してるなら同時に
#define PRIdMYTYPE PRIdPTR
もとしておいて、MyType の printf には
PRIdMYTYPE を同様に指定すればいい。
size_t も "z" 修飾子を使ってどうような
ことができる。
0455デフォルトの名無しさん
05/03/08 09:43:57> size_t も "z" 修飾子を使ってどうような
> ことができる。
ついでにここも詳しく……
0456デフォルトの名無しさん
05/03/08 10:48:23相当長い間必要ないだろ。データバスが128bitなのはGPUじゃ
当たり前になってるんだろうけど。
16bit -> 32bit アドレス空間は6万5千倍。
32bit -> 64bit アドレス空間は42億倍。
このアドレス空間を使い尽くすのっていつ頃?
ヘタしたら人間が絶滅してるかもなw
0457デフォルトの名無しさん
05/03/08 10:49:29↓
128ビットCPU(データバス幅>=アドレスバス幅=128bit)なCPUは
0458デフォルトの名無しさん
05/03/08 11:21:26z A following integer conversion corresponds to a size_t or
ssize_t argument. (Linux libc5 has Z with this meaning. Don't
use it.)
#define PRIdSIZE "z"
こういうのあんまり好きじゃないが。
0459デフォルトの名無しさん
05/03/08 11:22:55うちのシステムには入ってないや……。
0460デフォルトの名無しさん
05/03/08 11:24:18話かな?
0461デフォルトの名無しさん
05/03/09 13:00:27#define PRIdSIZE "zd"
の方がいい。小文字の「d」の意味がなくなっちゃうから。
#define PRIxSIZE "zx"
とかしたいしね。
0462461
05/03/09 13:46:14C99を前提にしていいソフトなら、#defineせずに
"z"を直に書いた方がいいだろうけどね。
#defineする必要があるのは、C99より前の処理系
への移植を考慮する必要があるケースと、あとは
typedef size_t MyType;
#define PRIdMYTYPE "zd"
のように、自分で定義した型に対して printf の
フォーマット文字列を提供したい場合。
0463デフォルトの名無しさん
05/03/09 23:29:27glibcのソースを探してるのですが。。どこにあるのでしょうか?
0464デフォルトの名無しさん
05/03/09 23:32:00ダウンロードした場所にありましたよ
0465463
05/03/09 23:37:42うーん。glibc-xxx/malloc/malloc.cの中とかその周辺とか調べたんですがないんですよ。。
0466デフォルトの名無しさん
05/03/09 23:38:510467デフォルトの名無しさん
05/03/09 23:40:220468デフォルトの名無しさん
05/03/09 23:43:22アホ発見
0469463
05/03/10 00:03:13http://www.gelato.unsw.edu.au/linux-ia64/0111/2457.html
>BTW, calloc is included in malloc.c.
> You would like to open the file glibc-2.2.4/malloc/malloc.c,
> and then you will be looking for cALLOc. It is calloc function.
そういえばmALLOcみたいな変なのがあったな。。
今ソースがないので明日調べてみます。お騒がせしました。
0470デフォルトの名無しさん
05/03/10 00:38:220471デフォルトの名無しさん
05/03/10 00:39:560472デフォルトの名無しさん
05/03/10 16:32:090473デフォルトの名無しさん
05/03/10 17:16:570474デフォルトの名無しさん
05/03/10 20:35:26-lpthreadのリンクを下のようにMakefileで記述するとcannot find -lpthreadという
エラーがでてしまいます。
test:main.o sub.o
gcc -o test main.o sub.o -lpthread
main.o:main.c test.h
gcc -c main.c test.h
sub.o:sub.c test.h
gcc -c sub.c test.h
コンソールで一つずつコンパイルしていけば問題はないんですが・・・
よろしくおねがいします
0475デフォルトの名無しさん
05/03/10 21:34:31それはともかく、スレ違いです。
0476デフォルトの名無しさん
05/03/10 21:46:46Unixプログラミングの場合、スタンダードなIDEがないので、
Makefileやコンパイルオプション指定をする段階から
すでにコーディングの戦いが始まっていると思うのは俺だけですか?
0477デフォルトの名無しさん
05/03/10 21:50:13素敵なビルドの仕組みを作ることは
コード自体を書くことと同じくらい重要でぷ。
0478デフォルトの名無しさん
05/03/10 21:51:240479デフォルトの名無しさん
05/03/10 21:53:09UNIXって頭悪すぎ。
0480デフォルトの名無しさん
05/03/10 21:56:150481デフォルトの名無しさん
05/03/10 21:58:32-lpthread の前に変なコード入ってないか od ででも確認してみたらどうだろう。
0482デフォルトの名無しさん
05/03/10 22:20:31みえみえというか、すでに1つのお約束になってますな。
お約束は美しい。
0484デフォルトの名無しさん
05/03/10 22:54:35libpthread.* がリンカから見えてないんじゃない?
0485デフォルトの名無しさん
05/03/10 23:12:02そういう話じゃないの? でも libpthread が /usr/lib
にない OS ってなんじゃろ? NetBSD-1.6 とか?
0486デフォルトの名無しさん
05/03/11 00:22:44UNIXの種類は何か書いた方がいい。
それ専用の板やスレに行くとモアベター。
0487474
05/03/11 00:29:21スレ汚しすいませんでした
0488474
05/03/11 01:00:05ちゃんと動いてるし・・・いいんだろうか・・・(´・ω・`)
0489デフォルトの名無しさん
05/03/11 01:03:57いいです。
-pthreadで、マクロの定義、ライブラリの適切な処理等を行います。
0491デフォルトの名無しさん
05/03/11 01:22:000492デフォルトの名無しさん
05/03/11 01:45:010493デフォルトの名無しさん
05/03/11 01:45:430494デフォルトの名無しさん
05/03/11 16:15:290495デフォルトの名無しさん
05/03/11 17:07:190496デフォルトの名無しさん
05/03/12 00:40:120497デフォルトの名無しさん
05/03/12 00:42:550498デフォルトの名無しさん
05/03/12 01:27:230499デフォルトの名無しさん
05/03/12 07:49:460500デフォルトの名無しさん
05/03/12 14:35:34ハァ?プログラミングは「UNIXこそが仕様」ですが何か?
0501デフォルトの名無しさん
05/03/12 14:51:54-pthreadはUNIX仕様じゃなくて、gccの仕様だろ。
マニュアルに書いてある仕様を謎と呼ぶのは
マニュアルも読めない厨房だけだがな。
0502デフォルトの名無しさん
05/03/12 14:58:090503デフォルトの名無しさん
05/03/12 15:34:57アマゾン川流域で、約1000ペソ。
0504デフォルトの名無しさん
05/03/12 16:05:24日本で買えませんかねぇ・・・
0505デフォルトの名無しさん
05/03/12 18:31:50ぜんぶMSのWindowsにあわせればOKだよ。
0506デフォルトの名無しさん
05/03/12 20:59:200507デフォルトの名無しさん
05/03/12 22:46:220508デフォルトの名無しさん
05/03/14 01:07:10UNIXの例外処理はどんなロジックを使えばよいでしょうか?
Windowsの場合はSEHという機構を使ってます。
Javaでいうfinallyやcatch辺りの処理の話です。
0509デフォルトの名無しさん
05/03/14 01:21:57MSのWindows(ゲイツ)は、POSIXだのANSIにあわせるよう努力してくれるが、
逆の努力は誰もしてくれない。
Unixに腐敗臭が漂うのも無理はない。19世紀の老大国を見る思いだ。
0510デフォルトの名無しさん
05/03/14 01:54:340511デフォルトの名無しさん
05/03/14 01:57:380512デフォルトの名無しさん
05/03/14 01:58:460513デフォルトの名無しさん
05/03/14 02:04:42実装言語による。
C++で書くなら、C++標準の例外処理処理機構を使えばいいんじゃない?
Cで書くなら、自分で明示的に制御するしかない。
0514デフォルトの名無しさん
05/03/14 02:06:48なんの話? SFUのこと言ってるのかな?
だったらUNIX上での似たようなものとしてはWineとか
Monoがあるよ。
というわけで、逆の努力もしてるってことで終了。
0515デフォルトの名無しさん
05/03/14 02:38:16WindowsNTにPOSIXサブシステムがあったのは「POSIXに準拠してないと導入しない」と
アメリカの政府機関が言い出したからなんだけどな
0516デフォルトの名無しさん
05/03/14 03:01:02NT系Windowsの POSIXサブシステムはそういう話だね。
はっきり言ってあれは全く使いものにならんかった。
FIPS規格に通ることだけが目的で、実用性ゼロ。
でもSFUの方は結構ましだと思うけど。
もちろん、ソースレベルの限定的な互換性しかないから、
バイナリ互換性を提供してくれるWineやMonoには劣るけど。
0517デフォルトの名無しさん
05/03/14 04:09:45憧れちゃいますかそうですか。
0518デフォルトの名無しさん
05/03/14 04:21:02WordやExcel形式で文書を送ってくるので仕方ないっすよ。
という俺はVMwareのクライアントOSとしてWindowsを動かす派。
自分で一から書く文書には、もちろんそんなの使わないけどネ。
0519デフォルトの名無しさん
05/03/14 04:27:17Unixerはいらん苦労が好き。
0520デフォルトの名無しさん
05/03/14 04:39:38今ならOpenOffice使うって手もあるけどね。
互換性はまだまだ低いけど。
0521デフォルトの名無しさん
05/03/14 04:57:31それで問題起きたことないなあ。
つーかteratermなかったらUNIXなんてとっくに死滅してたね。
おまえらもっとteratermの作者に感謝すべきだと思いませんか?
つーかWindows上からteratermの快適さに比べたらX?ナニソレって感じ。
あんなのインスコしてもディスクの無駄。
どーせemacs動けばいいしね。
0522デフォルトの名無しさん
05/03/14 04:58:270523デフォルトの名無しさん
05/03/14 08:56:030524デフォルトの名無しさん
05/03/14 09:23:070525デフォルトの名無しさん
05/03/14 10:07:560526デフォルトの名無しさん
05/03/14 10:18:16Unixユーザ特有の思考停止だな。
ターミナル経由でなければできないことは、
想定しないように脳内で排除フィルタが発動する。
0527デフォルトの名無しさん
05/03/14 10:31:55確かに面倒ではあるが、uuencodeして標準出力に出力、
telnet端末ソフトにログ機能などがあるだろうからそれを利用して端末側でuudecode。
自分の知識のなさを他人の思考停止に置き換えないように。
0528527
05/03/14 10:34:08s/telnet端末ソフト/telnet端末ソフト側/
Windows標準のtelnetでも(windowsの機能を利用して)copy&pasteくらいできるだろ。
0529デフォルトの名無しさん
05/03/14 11:04:480530デフォルトの名無しさん
05/03/14 11:10:49Unix信者には、「それはそもそも、XであってUnixではない。」
と嘯きつつ逃亡する退路が確保されているので、
Unix信者を追及するのは時間の無駄。
0531デフォルトの名無しさん
05/03/14 11:16:010532デフォルトの名無しさん
05/03/14 14:35:540533デフォルトの名無しさん
05/03/14 14:47:26http://www.amazon.co.jp/exec/obidos/ASIN/4756107834/
0534デフォルトの名無しさん
05/03/14 14:53:55ただの実装史と割り切って書かれてる、スティーブンスの本は好き。
0535デフォルトの名無しさん
05/03/14 15:29:540536デフォルトの名無しさん
05/03/14 15:58:08そういう俺は当然ktermですよ。mltermでも可。(w
0537デフォルトの名無しさん
05/03/14 16:01:060538デフォルトの名無しさん
05/03/14 18:23:40teratermみたいにUNIX使うためのWindowsプログラミングでもしてた方がいいんじゃない?
0539デフォルトの名無しさん
05/03/14 18:28:100540デフォルトの名無しさん
05/03/14 19:03:06そりゃあるよ。だいたい世の中の7割のWebサイトは
(Linuxを含む)UNIX系OSで動いているんだしさ。
ソフトウェア開発作業を必要とする大規模なサイト
になるほどUNIX系OSのシェアは上がるし。
googleだってamazonだって、Linuxとかそういう
UNIX系OSで動いてるのは知らない?
0541デフォルトの名無しさん
05/03/14 19:39:430542デフォルトの名無しさん
05/03/14 19:45:320543デフォルトの名無しさん
05/03/14 20:02:35考えても Windows にすることはありえないけどね。
Windows XP だとクライアント数10までというライセンス
制限にひっかかるから、Windows 2003 Server が必要。
これで 1台あたり10万円×台数分の金がかかる。
これに対し、今みたいに FreeBSD や Linux を使ってれば
ライセンス台はタダ。
Windows にするだけで性能が向上して、台数が1/10で済む
とかいう効果があるのならともかく、そんなことも全然ない
わけだし。
0544デフォルトの名無しさん
05/03/14 20:19:490545デフォルトの名無しさん
05/03/14 21:34:14わざわざkterm上でやって「難しいなあ」とか喜んでる奴は末期症状
0546デフォルトの名無しさん
05/03/14 21:34:25そのページを読めばいいんですね?
0547デフォルトの名無しさん
05/03/14 21:39:29てゆうかWindowsで好みの設定にするのは俺には難しい。(w
UNIXだとcp .??*だけですむので俺には簡単。
もちろん、君にとっては逆だろう。いいじゃん好きずきなんだし。
0548デフォルトの名無しさん
05/03/14 21:44:180549デフォルトの名無しさん
05/03/14 21:44:510550デフォルトの名無しさん
05/03/14 21:54:350551デフォルトの名無しさん
05/03/14 22:00:48その上信頼性もクソもないshで書きなぐられたシステムなんか保守したくないだろ?
0552デフォルトの名無しさん
05/03/14 22:03:310553デフォルトの名無しさん
05/03/14 22:04:150554デフォルトの名無しさん
05/03/14 22:33:54シェルスクリプトは滅多にエラーにならないからエラー処理は
必要なくてとても信頼できるらしいです
うちのUNIX暦20年の課長(40)が言ってました
エラーになっても気付いてないだけじゃないんですか、と言おうと
しましたがやめておきました
0555デフォルトの名無しさん
05/03/14 22:44:22分からないんだが、シェルスクリプトだって
エラー処理ぐらいできるし、俺はやってるよ。
0556デフォルトの名無しさん
05/03/14 22:51:190557デフォルトの名無しさん
05/03/14 23:21:09コンパイラですかインタプリタですか?
その自作言語の実行スタックはどういう構成でしょう?
schemeのインタプリタ、コンパイラは参考になると思います。
0558デフォルトの名無しさん
05/03/15 00:05:48こういうプログラムを書いたのですが、
#include <iostream>
main()
{
cout << "hello";
}
gcc test.cppと書いてコンパイルすると、
/tmp/ccHDOsZp.o(.text+0x19): In function `main':
: undefined reference to `std::cout'
/tmp/ccHDOsZp.o(.text+0x1e): In function `main':
: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std
::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits
<char> >&, char const*)'
/tmp/ccHDOsZp.o(.text+0x4a): In function `__static_initialization_and_destructio
n_0(int, int)':
: undefined reference to `std::ios_base::Init::Init[in-charge]()'
/tmp/ccHDOsZp.o(.text+0x79): In function `__tcf_0':
: undefined reference to `std::ios_base::Init::~Init [in-charge]()'
/tmp/ccHDOsZp.o(.eh_frame+0x11): undefined reference to `__gxx_personality_v0'
collect2: ld はステータス 1 で終了しました
というエラーがでるのですが、C++のコンパイルの仕方が間違っているのでしょうか。
0559デフォルトの名無しさん
05/03/15 00:08:52いいえ
0560デフォルトの名無しさん
05/03/15 00:12:010562デフォルトの名無しさん
05/03/15 00:22:55gccスレで聞け。
0563デフォルトの名無しさん
05/03/15 00:39:38コンパイルのしかたが間違っとる。
>>560が書いているように、gcc じゃなくて g++ か
あるいは c++ コマンドを指定する必要がある。
0564デフォルトの名無しさん
05/03/15 01:11:530565デフォルトの名無しさん
05/03/15 09:44:25盥・・・すごい字があるんだな、知らなかったヨ
0566デフォルトの名無しさん
05/03/15 10:03:090567デフォルトの名無しさん
05/03/15 14:47:14ソースコードが間違ってます。
冒頭で、
using namespace std;
とするか、std::coutとするのが今ん流儀です。
それ以外は処理系依存の動作。
0568デフォルトの名無しさん
05/03/15 15:07:050569デフォルトの名無しさん
05/03/15 15:22:24それは既に>>561で本人が気づいてる
0570デフォルトの名無しさん
05/03/15 15:39:47やーいばーか
0571デフォルトの名無しさん
05/03/15 15:41:58とんだ災難だとは思うがよろしく頼む。
0573デフォルトの名無しさん
05/03/15 20:56:32お前おもしろいな
0574デフォルトの名無しさん
05/03/16 01:00:290575デフォルトの名無しさん
05/03/16 01:01:000576デフォルトの名無しさん
05/03/16 01:01:410577デフォルトの名無しさん
05/03/16 01:03:400578デフォルトの名無しさん
05/03/16 01:08:34ネタもないのに書くなYO!
0579567
05/03/16 03:04:40ソースコードが間違ってます。
冒頭で、
using namespace std;
とするか、std::coutとするのが今ん流儀です。
それ以外は処理系依存の動作。
って書こうと思っていたのにッ…orz
0580デフォルトの名無しさん
05/03/16 03:08:27な?
0581デフォルトの名無しさん
05/03/16 04:20:470582デフォルトの名無しさん
05/03/16 11:16:000583デフォルトの名無しさん
05/03/17 16:47:56gcc で -g をつけてデバッグ情報つきの
オブジェクトファイルを作ってから
リンクしました.
ところができた実行ファイルを gdb しても
デバッグできません.
たとえば list しても
No symbol table is loaded. Use the "file" command.
とでます.
-g をつけるとたしかに .o ファイルはサイズが増えていますが,
最終的にリンクすると,できた実行ファイルは -g を
つけようとつけまいとなぜか変わらないんです.
なぜでしょうか?
0584デフォルトの名無しさん
05/03/17 16:53:200585583
05/03/17 16:58:50リンクするときに -g つけてもつけなくても結果は同じです
0586デフォルトの名無しさん
05/03/17 17:10:290587583
05/03/17 17:21:53たしかにリンクに -s がついていて
これをはずすとデバッグできました
他人が書いたソースなもんで
man 見たところ -s に対する説明がありませんね
-S はありますが.
これはなんでしょうか?
0588デフォルトの名無しさん
05/03/17 17:34:290589429
05/03/17 20:46:23> man 見たところ -s に対する説明がありませんね
% man ld
<snip>
-s
--strip-all
Omit all symbol information from the output file.
-S
--strip-debug
Omit debugger symbol information (but not all symbols) from the
output file.
<snip>
って, 書いてあるが...
0590デフォルトの名無しさん
05/03/17 20:48:22なあ!
0591デフォルトの名無しさん
05/03/17 21:14:43ちゃんと書いてあるよ。
-s Removes all symbolic debugging information from the
output object file. This option is passed to ld(1).
This option cannot be specified with -g.
gcc 場合、マニュアルには確かにないねえ。
しかし gcc の info を見ると実は書いてある。
GNU 系の場合、これはありがち…
だから GNU は(ry
0592デフォルトの名無しさん
05/03/17 21:19:38> gcc 場合、マニュアルには確かにないねえ。
> GNU 系の場合、これはありがち…
おれは, 一時期, gcc だと obsolete になったのかと思って,
-Wl で ld に渡してたぞ.
だから GNU は(ry
0593デフォルトの名無しさん
05/03/17 21:23:070594デフォルトの名無しさん
05/03/17 22:16:12誰かC言語でプログラム書いてもらえませんか?
0595デフォルトの名無しさん
05/03/17 22:18:19俺様に命令するな!!!
0596デフォルトの名無しさん
05/03/17 22:19:290597デフォルトの名無しさん
05/03/17 22:25:36最高速なアルゴリムを示そう。
int main()
{
fputs("2: 2\n"
"3: 3\n"
"4: 2, 2\n"
... 自分で埋めろ
, stdout);
return 0;
}
(1も素因数分解できるんだっけ?素因数ってもう忘れた)
0598デフォルトの名無しさん
05/03/17 22:34:54> -s Remove all symbol table and relocation information from the exe-
> cutable.
gcc-3.3.3 です。
0599デフォルトの名無しさん
05/03/17 22:39:41それって stdio のせいで遅くね?
0600デフォルトの名無しさん
05/03/17 23:00:46全部書けなかった時とか、EINTRとか。
0601デフォルトの名無しさん
05/03/17 23:09:51#include <stdio.h>
#define BUF_SIZE 256
int main(void)
{
int i;
char buf[BUF_SIZE];
for (i = 1; i <= 100; i++) {
snprintf(buf, BUF_SIZE, "factor %d", i);
system(buf);
}
return 0;
}
0602デフォルトの名無しさん
05/03/17 23:14:47うちはgcc-2.95.3ですた。
gcc-3 になって心を入れ換えた?
0603デフォルトの名無しさん
05/03/18 00:16:34fputs() でも一緒だと思うが...。
0604デフォルトの名無しさん
05/03/18 01:20:27少なくとも全部書けなかった場合については、
fputs() は、内部で再試行してくれます。
むか〜しの SVR4 が、これをやってくれなくて欝だった
ような覚えがあるが。
0605デフォルトの名無しさん
05/03/18 02:55:44初期のSVR4はsignalの振る舞いが、
defaultではBSD風じゃなくて、SVR3風だった。すぐに変ったけど。
だからsystem call中に、signalを受けると、エラーで失敗した。
ライブラリもsystem callに再入せず。(BSDセマンティクスだとする)
0606じじー
05/03/18 04:17:10> defaultではBSD風じゃなくて、SVR3風だった。すぐに変ったけど。
これは、今でもそうじゃない?
signal(3) はデフォルトでは SA_RESTART しない筈。
で、ここで書いた write(2) の再試行ってのはシステムコール
リスタートの話じゃないの。それならまだ許せる。
初期の SVR4 では、write(2) が第3引数よりも少ない正の値を
返した場合 (つまり partial write の場合)、残りを単に捨て
ちゃってたような気が… つまり完全にバグ。
0607じじー
05/03/18 04:18:58partial write の残りを捨ててたのは stdio ライブラリね。
0608デフォルトの名無しさん
05/03/19 12:45:25gcc の man には こう書いてありますが。
The information in this man page is an extract from the
full documentation of the GNU C compiler, and is limited
to the meaning of the options.
This man page is not kept up to date except when volun
teers want to maintain it. If you find a discrepancy
between the man page and the software, please check the
Info file, which is the authoritative documentation.
0609デフォルトの名無しさん
05/03/20 00:43:02え れ が ん と(ニコリ
0610デフォルトの名無しさん
05/03/20 02:47:45mmapの動作に関する質問です。
//#include *は省略
#define SIZE 536870912
int main() {
void *map;
int fd = open("tmp_file", O_RDWR);
size_t size = (SIZE / getpagesize() + 1) * getpagesize();
map = mmap(0, size, PROT_READ | PROT_WRITE, MAP_FIXED, fd, 0);
munmap(map, SIZE);
return 0;
}
というプログラムを動かすとバスエラーになってしまいます。
また、変数sizeを使わずにSIZEを使うとセグメントエラーになります。
mmapはファイルをメモリに全部読み込まずに必要な分だけキャッシュする
とmanに書いてあるように読めたのですが、間違いでしょうか。
環境はFreeBSD 5.3R, gcc 3.4.2です。メモリは512MBです。
0611デフォルトの名無しさん
05/03/20 03:15:560612デフォルトの名無しさん
05/03/20 03:45:13mmapに渡してるsizeとmunmapに渡してるSIZEは同じなのか?
つーかちゃんとエラーチェックしろよ。
とりあえずstraceでもしてみれば?
0613デフォルトの名無しさん
05/03/20 04:06:01> #define SIZE 536870912
これって二進で100000000000000000000000000000、30bitじゃん。
幾らなんでもでかいだろ。
そのカーネルはユーザ空間どれくらいとれるの?
詳しいところ調べるの無理だったら、UNIX板のFreeBSD質問スレが良いかも。
0614デフォルトの名無しさん
05/03/20 06:18:36第一引数が 0 なのに MAP_FIXED を指定している点もある。
0番値から連続で512MBも置き換えたら、現在実行している
プログラムからなにから全部置き換えになるから、そりゃ
コアダンプもするだろ。
それから、flags には、必ず MAP_PRIVATE か MAP_SHARED
のどらかか片方は指定するようにしろ。
あと、>>612 が言うように、システムコールがエラーで返って
ないか調べて、エラーだったら perror() なりerr() する習慣
をつけろ。基本中の基本。
これだけ短いプログラムに、なんでこんなにたくさんバグを
入れられるのかが謎だ。もっと人の書いたちゃんとしたプログラム
を読んで真似する習慣をつけるべき。
0615デフォルトの名無しさん
05/03/20 06:57:390616デフォルトの名無しさん
05/03/20 10:47:370617610
05/03/20 11:46:33あ、SIZEはtypoです。実際は両方ともsizeを指定してます。
あと、エラーチェックもperrorを実際は入れてます。
長くなると迷惑かと思って省略してしまいました、ごめんなさい。
>>613
その辺をうまくよきに計らってくれるのがmmapだと認識してたのですが・・・
間違いでしたか。
>>614
flagsにMAP_PRIVATEを入れたら行けました。
何か勘違いしてるみたいなのでもちっとじっくりmanを読んでみます。
ありがとうございました。
0618デフォルトの名無しさん
05/03/20 12:35:430619デフォルトの名無しさん
05/03/20 13:37:38>>610 ではないだが
> 30bitじゃん。
> 幾らなんでもでかいだろ。
なんで?
ふつうに,
mmap(0, 1024L*1024L*1024L, ...)
って, 使えてるが.
FreeBSD でも Solaris でも IRIX でも...
CPU アーキテクチャにもよるだろうけど, 32bit あれば
2G のユーザ空間確保できるのが普通じゃねぇの.
0620デフォルトの名無しさん
05/03/20 13:42:05> CPU アーキテクチャにもよるだろうけど, 32bit あれば
> 2G のユーザ空間確保できるのが普通じゃねぇの.
なことはない。
0621デフォルトの名無しさん
05/03/20 13:47:05> なことはない。
だから, なぜだか教えてほしいって言ってるじゃん.
backing store に指定容量以上ののファイルとか,
十分な量の swap 持ってきてもだめなの?
0622デフォルトの名無しさん
05/03/20 13:55:44・32bitアドレス空間を、半分カーネル空間
・ユーザ空間の半分をテキスト領域
・残りをスタック領域とデータ領域
・sparseであることを仮定したmmap設計
などなど
x86はセグメントありますから、32bit全部データ領域は可能。
0623デフォルトの名無しさん
05/03/20 14:02:450624デフォルトの名無しさん
05/03/20 14:04:350625621
05/03/20 14:08:40> よくあるケースは、
> ・32bitアドレス空間を、半分カーネル空間
mips あたりだと CPU が, そうゆう設計ですよね.
> ・ユーザ空間の半分をテキスト領域
こんなのって本当にある? バイナリの仕様次第か?
FreeBSD とか, 昔の SunOS-4 なんかだと
2^32/2 - text+maxdsiz+maxssiz が,
mmap で使用可能な空間ですよね?
> ・sparseであることを仮定したmmap設計
> などなど
64bit ならまだしも 32bit でやるかなぁ???
> x86はセグメントありますから、32bit全部データ領域は可能。
トロくなりませんか, OS が?
0626621
05/03/20 14:11:15ごめんなさい,
mmap(NULL, ..., /*MAP_FIXED ではない*/)
の話.
0627デフォルトの名無しさん
05/03/20 15:58:01良きに計らえとか言ってると火傷します
0628デフォルトの名無しさん
05/03/20 16:38:420629デフォルトの名無しさん
05/03/20 17:10:23わざわざ面倒なことする必要もない。
0630デフォルトの名無しさん
05/03/20 17:13:25i386 上だと、VM_MAXUSER_ADDRESS=3G くらいだから
512MB くらいなら mmap できることが多いよ。
KVM を広げるようにカーネルを config してたり、
他にいろいろ mmap してたりすると 別だし、
0番値から MAP_FIXED で mmap してたらまずいけど。
>>617 は MAP_PRIVATE を入れただけじゃなくて、
MAP_FIXED は取り除いたんじゃないかな。
m68k 用 NetBSD は、カーネルとユーザ空間に別の
仮想空間を使っているので、ユーザ空間だけで 4GB
使えたり。
ユーザー空間が 4GB/2=2GB って OS は多いけど、
text に 2GB/2=1GB も割り当てるなんてもったいない
ことしてる OS はないと思う。text は、実行ファイル
に含まれている分しか確保されない。むしろ、
ヒープと stack の中間に shared library 用の mmap
領域があったりすることが問題。
0631デフォルトの名無しさん
05/03/20 17:13:47mmap は、いまや POSIX.1:2004 に含まれているので、
そこそこポータブルですが、なにか?
Linux や *BSD など、POSIX.1:2004 をフル実装して
ない OS でも、mmap に関しては、ほぼ POSIX.1:2004
の仕様を満たしているよ。もっとも、定義されている
のは、各 OS の最大公約数程度の機能だけど。
0632デフォルトの名無しさん
05/03/20 17:15:24Windows のメモリマップドファイルって、ローカル
ファイルシステムはマップできるけど、リモートに
ある奴は駄目という不便な仕様だった記憶があるけど
今では直ったの?
UNIX の場合、当然そんな制限はありません。
0633デフォルトの名無しさん
05/03/20 17:28:28POSIXに含まれている=ポータブルではない。
「そこそこポータブル」って何だよ。
> mmap に関しては、ほぼ POSIX.1:2004 の仕様を満たしているよ。
本当に?A LinuxとB LinuxとC LinuxとD LinuxとFreeBSDで使えても
ポータブルとは言わないよ?
0634デフォルトの名無しさん
05/03/20 17:32:10ペイントハウスで思いのままだ!
0635デフォルトの名無しさん
05/03/20 17:37:57> 本当に?A LinuxとB LinuxとC LinuxとD LinuxとFreeBSDで使えても
> ポータブルとは言わないよ?
で、君は使えない処理系の一つでも挙げればいいんだけど、自分は何も知らないけど煽ってるだけと言うことでいいの ?
0636デフォルトの名無しさん
05/03/20 17:46:23POSIX.1:2004に書いてある仕様なら、Solaris, IRIX, Tru64, HP-UX,
AIX は使ってないので知らんが。これで現在でもメンテされている
商用UNIXはほぼ全部。ちなみにこの程度の範囲の仕様なら、いにしえ
の SunOS4 でも通用する。
mmap はシステムコールなので、別に A Linux, B Linux なんて
言わなくても全部の Linux で同じ動作だし、あの範囲の仕様な
ら、実際に Linux でも通用する。FreeBSD に限らず、全ての
4.4BSD 派生 OS でも通用する。
最初にまともな実装が登場した SunOS4 の時代ならともかく、
あれから 15年も経った今でもポータブルでないっていうのは
時代遅れだと思う。
0637636
05/03/20 17:48:22> POSIX.1:2004に書いてある仕様なら、Solaris, IRIX, Tru64, HP-UX,
> AIX は使ってないので知らんが。
POSIX.1:2004に書いてある仕様なら、Solaris, IRIX, Tru64, HP-UX は
少なくとも満たしている。AIX は使ってないので知らんが。
0638デフォルトの名無しさん
05/03/20 18:21:480639デフォルトの名無しさん
05/03/20 18:32:28だったらAIX以外ならOKよ。
AIXは、mmapは大丈夫かもしれんが、そもそもOSが変態だから
やめた方がいいかもしれん。
0640デフォルトの名無しさん
05/03/20 18:34:24ワロタ
0641デフォルトの名無しさん
05/03/20 18:45:28大抵の質問者が環境書かないからだと思うけど、
今回は環境かいても無駄だった。
0642デフォルトの名無しさん
05/03/20 18:55:200643デフォルトの名無しさん
05/03/20 18:58:03元々の610のプログラムはバグバグなので、どのOSでも動かん。
0644デフォルトの名無しさん
05/03/20 19:13:130645デフォルトの名無しさん
05/03/21 02:25:57正確なところが分からなくても仕方ないと思う
0646デフォルトの名無しさん
05/03/21 03:22:590647デフォルトの名無しさん
2005/03/21 03:49:09(月)どこの本やサンプルを見たらあんなコードになるのか興味深い
駆逐したいのでどこを参考にしたのか教えて欲しい。
0648デフォルトの名無しさん
2005/03/21(月) 09:16:03ttp://www.linux.or.jp/JM/html/LDP_man-pages/man3/basename.3.html
>path の内容を変更することがある。
だそうだ。
0649デフォルトの名無しさん
2005/03/21(月) 09:43:420650デフォルトの名無しさん
2005/03/21(月) 11:50:10どちらかに決まってないんじゃ、呼び出した後free()すべきか
どうかどうやって決めればいいんでしょう?
0651デフォルトの名無しさん
2005/03/21(月) 12:21:58自分が確保したものは自分で free() するのが基本。
strdup() みたいに、ライブラリ内で確保するやつもいるけど、そういうやつはマニュアルに書いてある。
0652デフォルトの名無しさん
2005/03/21(月) 12:35:46> dirname および basename は、静的に割り当てられたメモリへのポインタを
> 返すことがあり、これらの領域は後の関数呼び出しで上書きされるかもしれない。
…の部分に対する疑問?
それなら、
char * path = "foo/bar";
char * path_dup = strdup(path_dup);
char * path_dir = dirname(path_dup);
して、
free(path_dup);
すればいいだけだと思うが。
path_dup = dirname(path_dup);
みたいにすると、path_dup が strdup で確保したメモリじゃない可能性があるから、
free() するべきかどうか分からなくなるがね。
0653デフォルトの名無しさん
2005/03/21(月) 13:07:56gethostbyname(3)なんかは、「*で返すのはstatic dataだべ」って書いてある。
http://www.opengroup.org/onlinepubs/007908799/xns/endhostent.html
のAPPLICATION USAGE
0654デフォルトの名無しさん
2005/03/21(月) 13:09:13> char * path = "foo/bar";
> char * path_dup = strdup(path_dup);
>
> char * path_dir = dirname(path_dup);
ここでpath_dirの指す先がpath_dupの中かもしれないので
> free(path_dup);
ここでfree()してしまうとpath_dirが使えなくなりませんか?
何かすごくおかしいことを言っているのだろうか・・・
0655デフォルトの名無しさん
2005/03/21(月) 13:12:18おまえ読解力ゼロ
0656デフォルトの名無しさん
2005/03/21(月) 13:26:42付け加えると、path_dirは必要ならすぐに自前の領域にコピーしておくこと。
∵basename()を再度呼び出すと上書きされるから。
0657デフォルトの名無しさん
2005/03/21(月) 14:02:44> char * path_dup = strdup(path_dup);
< char * path_dup = strdup(dup);
通りすがりに、取り合えず訂正しておくわ
0658デフォルトの名無しさん
2005/03/21(月) 14:03:51m9(^Д^)プギャー
0659デフォルトの名無しさん
2005/03/21(月) 14:05:50< char * path_dup = strdup(path);
間違えたわ…ハズ
0660デフォルトの名無しさん
2005/03/21(月) 18:31:51「静的に割り当てられたメモリ」ってのはライブラリがstaticに持ってるバッファだと
言ってるように読めるんだが(バッファじゃないがerrnoみたいな)。
であるとすれば、free()するとおかしなことになるよな。
>>651が言ってるのはそういうことじゃないの?
0661デフォルトの名無しさん
2005/03/21(月) 18:34:510662デフォルトの名無しさん
2005/03/21(月) 18:42:03だから basename の返り値を free しなきゃいいわけで、
basename に与えたポインタを free するのは問題ないだろ?
0663デフォルトの名無しさん
2005/03/21(月) 18:58:490664デフォルトの名無しさん
2005/03/23(水) 02:23:26引数で与えられた領域を上書きすることはない。だから、
上書きされることを気にしてstrdup()する必要もない。
どうもglibc-2.2.1までのPOSIXバージョンは、POSIXの
解釈を間違えていて上書きしてたことがあったようだが。
これはglibc特有のバグで、glibcを使ってなければ関係
ない。>>648の和訳のバグセクションは、そのあたりが
誤訳っぽいな。glibc-2.2.1より後でも問題があるように
読めてしまう。英語マニュアルを見れば明らかなんだが。
0665デフォルトの名無しさん
2005/03/23(水) 05:35:24POSIXはどうかしらないけど、FreeBSD5.3だと
char * basename(const char *path);
って定義になってるから、引数のバッファは変更されることはなさそうね。
ついでに、返り値は「a pointer to internal static storage space」を返すとなってる。
>>652にあてはめるならこんな感じか。
char * path = "foo/bar";
char * path_dir = strdup(dirname(path));
/* ここでpath_dirを利用 */
free(path_dir);
0666デフォルトの名無しさん
2005/03/25(金) 14:31:040667デフォルトの名無しさん
2005/03/26(土) 14:48:430668デフォルトの名無しさん
2005/03/26(土) 19:16:440669デフォルトの名無しさん
2005/03/27(日) 02:54:15うん。ただし、basename(3)を複数回呼んで、その返り値を
後でまとめて使うような場合はmalloc(3)が必要となる。
0670デフォルトの名無しさん
2005/03/27(日) 11:34:390671デフォルトの名無しさん
2005/03/29(火) 17:59:02それをヘッダファイルではなく、foo.cの中で宣言定義するのってのは、
スタイル的に問題ないのでしょうか?
0672デフォルトの名無しさん
2005/03/29(火) 18:00:460673デフォルトの名無しさん
2005/03/29(火) 18:36:19BSDのソースではあまりみかけないのに、Linuxでは沢山あるので
0674デフォルトの名無しさん
2005/03/29(火) 20:13:11ID:実際に見えないようにすべき、と考えます。
unixとは全然関係ないけどね。
0675デフォルトの名無しさん
2005/03/29(火) 20:23:300676デフォルトの名無しさん
2005/03/30(水) 16:22:54俺も ノシ
0677デフォルトの名無しさん
2005/03/31(木) 15:18:490678デフォルトの名無しさん
2005/03/31(木) 15:21:08stat()
0679デフォルトの名無しさん
2005/04/02(土) 23:47:35だとしてこれは役に立つことがあるんでしょうか?
0680デフォルトの名無しさん
2005/04/03(日) 01:03:52複数使いたければ、hcreate_r()使いなよ。
0681デフォルトの名無しさん
2005/04/05(火) 01:13:50hcreate_r() は GNU 拡張か。
0682デフォルトの名無しさん
2005/04/05(火) 01:50:35プラットフォームによってはバグってたりするから使わない方がいいよ
追加できるエントリ数にこっそり上限があったり
0683デフォルトの名無しさん
2005/04/05(火) 10:51:56gdb で program_b の動作をデバッグするには
どうすればいいのでしょう?
0684デフォルトの名無しさん
2005/04/05(火) 11:15:04program_b の最初の辺りに sleep なり, 入力待ちなりを入れといて,
ps | grep program_b して gdb <pid-of-program_b> する.
どっちかってゆうと, ウニ板のくだ質ネタだが...
0685デフォルトの名無しさん
2005/04/05(火) 12:09:45"program_b arg1 arg2"
↓
"gdbserver localhost:20000 program_b arg1 arg2"
$ gdb
gdb> target remote localhost:20000
gdb> break xxx
gdb> continue
0686デフォルトの名無しさん
2005/04/05(火) 21:37:030687デフォルトの名無しさん
2005/04/05(火) 21:47:460688デフォルトの名無しさん
2005/04/06(水) 00:02:56こんな感じでいいのか?
以下を実行すると、自身を対象にgdbのウィンドウが立ち上がる。
char pidbuf[20];
snprintf(pidbuf, sizeof pidbuf, "%d", getpid());
if (fork() == 0)
execlp("xterm", "xterm", "-e", "gdb", argv[0], pidbuf, NULL);
sleep(5); /* wait for gdb */
かなーりいい加減な実装だけど。
0689デフォルトの名無しさん
2005/04/06(水) 10:45:22網羅した質の高いサイトを
この俺に教えてください
0690デフォルトの名無しさん
2005/04/06(水) 11:05:390691デフォルトの名無しさん
2005/04/06(水) 15:24:06書くのめんどい
つーか、どう考えても世の中に大量にあるだろそんな汎用ライブラリ
どうしてgoogleで引っかからないんだこれ
だれかの陰謀か? 宇宙人?
0692デフォルトの名無しさん
2005/04/06(水) 15:26:47perl >>>>>>>>>>>>>>>>>>>> ruby
http://search.cpan.org/search?query=csv&mode=all
0693デフォルトの名無しさん
2005/04/06(水) 16:41:41> http://search.cpan.org/search?query=csv&mode=all
まぬけですね
0694デフォルトの名無しさん
2005/04/06(水) 17:24:05> > http://search.cpan.org/search?query=csv&mode=all
>
> まぬけですね
まぬけですね
0695デフォルトの名無しさん
2005/04/06(水) 17:36:220696デフォルトの名無しさん
2005/04/06(水) 17:52:29そうでないなら...
> 691 名前:デフォルトの名無しさん[] 投稿日:2005/04/06(水) 15:24:06
> CSVをパースするライブラリくれ
> 695 名前:デフォルトの名無しさん[sage] 投稿日:2005/04/06(水) 17:36:22
> Cでくれ
この間になんぼでも書けるだろう。
0697デフォルトの名無しさん
2005/04/06(水) 18:28:290698デフォルトの名無しさん
2005/04/06(水) 21:04:08何故みつからないかというと、みんなが納得する"CSV"という
名前のフォーマットは存在しないからです
標準化されていない悲しさよ
0699デフォルトの名無しさん
2005/04/06(水) 21:24:12google で
"comma separated value" parse library
を検索すると見つかるぞ。
単に探し方が悪いだけだと見た。
0700デフォルトの名無しさん
2005/04/06(水) 23:00:19・フィールド,で区切られている。
・#から改行までは無視。
・,#をデータに入れたい時は、"tell your #, please!"とクォート。
・レコードは改行で区切られている。
が典型的かな。
>>698
色々と問題が起きそうなのは、
・改行コード。
・ISO-2022-JPの様な左面の文字集合切り替えのある場合。
かな。
0701デフォルトの名無しさん
2005/04/06(水) 23:08:41> ・,#をデータに入れたい時は、"tell your #, please!"とクォート。
マジかよ
そんなエスケープ初めて聞いた
0702デフォルトの名無しさん
2005/04/07(木) 09:11:15・1行で1レコード。
・コンマ「,」をデリミタとして値を区切る。
・値にコンマが含まれているときにはダブルクォート「”」で括る。
・値にダブルクォートが含まれているときは「””」と2重にする。
多少の方言はあるけど、だいたいこんなんが基本。
というのが漏れの理解。
0703デフォルトの名無しさん
2005/04/07(木) 09:41:22文字列フィールドに数字しかないときは「'」が先行するとか、
微妙にいやらしい方言が多いんだよね。
0704デフォルトの名無しさん
2005/04/07(木) 10:12:330705デフォルトの名無しさん
2005/04/07(木) 12:35:081,"abc","def",ghi,1111
2,"abc","This is a quoted
string.",def,234
3,"abc
def","hoghoge",aaa,234
みたいな
0706デフォルトの名無しさん
2005/04/07(木) 14:22:07lex 辺りでアナライザーはかせりゃ, 悩むほどのもんじゃねぇだろ?
あとは, yylex 呼ぶループ書くだけ.
0707デフォルトの名無しさん
2005/04/07(木) 14:30:47この程度が書けないような香具師は、Cを使うのはやめて、
Java とか Perl とか Python とか Ruby とか VB に転向すべき。
0708デフォルトの名無しさん
2005/04/07(木) 14:32:23ttp://www.din.or.jp/~ohzaki/perl.htm#CSV2Values
PHP なら
ttp://jp.php.net/manual/ja/function.fgetcsv.php
があるけどね
0709デフォルトの名無しさん
2005/04/07(木) 15:00:15それとも、メールサーバのプログラムの中にそのようなテーブルがあるのでしょうか?
0710デフォルトの名無しさん
2005/04/07(木) 15:02:40> この程度、lex 使わずに手書きしても全然たいしたことない。
ゴリゴリ手書きして遅いルーチンを書くのはいとも簡単だけど、
(f)lexと同等かそれ以上に高速なものにしようとすると結構大変かも。
0711デフォルトの名無しさん
2005/04/07(木) 15:04:59echo $TZ
0712デフォルトの名無しさん
2005/04/07(木) 15:06:370713デフォルトの名無しさん
2005/04/07(木) 15:36:01トークンの種類が非常に多く、DFAのメリットが効いてくる
ような場合なら、確かに (f)lexの方が速くなるが、この例
だと共通プレフィックスになるような文字列は全くないので、
まともなプログラマが書けば、どう転んでも手書きの方が速い。
もちろん、まともじゃないプログラマなら話は全然別。
0714デフォルトの名無しさん
2005/04/07(木) 16:01:55へっ?字句解析でDFAの表引きが効率向上に役立つ割合なんてほんの僅かです
が。字句解析器生成が手書きよりもうれしいのは、まず第一にバッファリング
(と先読み管理)をそれなりにきちんとやってくれるからですけど。もちろんき
ちんと最適化したマニュアルの解析器の方がバッファリングも速いけど、それ
はそれで「どう転んでも」速くなるほど自明じゃない。
0715デフォルトの名無しさん
2005/04/07(木) 16:12:37バッファリングなんていらないでしょ? 一文字バッ
ファリング、すなわち ungetc() で十分なことが
多いと思うけど。そりゃたまには、そうじゃない
変態文法もあるけどさあ。
今回の CSV も ungetc() で十分なので、バッファ
リングで遅くなる要素は、まったくないと思うけど?
0716デフォルトの名無しさん
2005/04/07(木) 18:08:46大量の CSV を読もうとしてるのか…ッ!
こないだいたけどね。
「いやー Excel で開けないくらいでっかくなっちゃいましたよハッハッハ」
とかいうから、行数カウントしてみたら 1200万行。
0717デフォルトの名無しさん
2005/04/07(木) 18:54:460718デフォルトの名無しさん
2005/04/07(木) 20:36:510719デフォルトの名無しさん
2005/04/07(木) 21:00:270720デフォルトの名無しさん
2005/04/07(木) 21:21:460721デフォルトの名無しさん
2005/04/07(木) 21:53:300722デフォルトの名無しさん
2005/04/08(金) 00:09:410723デフォルトの名無しさん
2005/04/08(金) 00:40:390724デフォルトの名無しさん
2005/04/08(金) 01:39:56車輪の再発明の必要もないし...
ってな, つもりで >>706 を書いたんだが, 妙なことになってるしorz
>>720
> UNIXプログラミングに関係ないはなししはよそでおねがいします。
おもいっきり, UNIXプログラミングの*はなしし*だと思うが...
つか, UNIXプログラミングの*はなしし*をすれば, この程度は普通
だと思うぞ.
0725デフォルトの名無しさん
2005/04/08(金) 03:10:140726デフォルトの名無しさん
2005/04/08(金) 03:38:49ftp://elsie.nci.nih.gov/pub/tzdata2005h.tar.gz
0727デフォルトの名無しさん
2005/04/08(金) 03:39:31http://david.tribble.com/text/c0xtimezone.html
0728デフォルトの名無しさん
2005/04/08(金) 09:32:37関係無いだろ
0729デフォルトの名無しさん
2005/04/08(金) 11:46:01火炎放射器でタバコに火を付けるってのはこういうのを言うのかね。
0730691
2005/04/08(金) 13:46:41誰かが作ったものがそこらに転がってるなら
火炎放射器でもなんでも使うよ。
0731デフォルトの名無しさん
2005/04/08(金) 14:42:400732デフォルトの名無しさん
2005/04/08(金) 14:50:36まぁいいか。
>>730
火炎放射器使うくらいなら私は自分で火を熾すよ。
0733デフォルトの名無しさん
2005/04/08(金) 14:58:36> 火炎放射器使うくらいなら私は自分で火を熾すよ。
野蛮だなw
0734デフォルトの名無しさん
2005/04/08(金) 15:14:19つうか、これぐらい単純な処理だと、lex使う方
がむしろ面倒だと思う。
0735デフォルトの名無しさん
2005/04/08(金) 15:50:400736デフォルトの名無しさん
2005/04/08(金) 16:11:180737デフォルトの名無しさん
2005/04/08(金) 18:39:06おれはやだぜ
0738デフォルトの名無しさん
2005/04/08(金) 18:50:53書くのめんどい
つーか、どう考えても世の中に大量にあるだろそんな汎用ライブラリ
どうしてgoogleで引っかからないんだこれ
だれかの陰謀か? 宇宙人?
0739デフォルトの名無しさん
2005/04/08(金) 18:55:420740部外者でけどね
2005/04/08(金) 19:24:440741デフォルトの名無しさん
2005/04/08(金) 19:32:59整数の合計を求めるのにsetjump/longjump?
>>739, >>738
std::accumulate()
0742デフォルトの名無しさん
2005/04/08(金) 19:39:110743デフォルトの名無しさん
2005/04/08(金) 20:18:250744デフォルトの名無しさん
2005/04/08(金) 20:23:220745デフォルトの名無しさん
2005/04/08(金) 20:27:160746デフォルトの名無しさん
2005/04/08(金) 23:34:300747デフォルトの名無しさん
2005/04/10(日) 18:06:28自分の回りに車輪が見当たらなければ作るしかねーだろが。
0748エラー処理ブッチご容赦
2005/04/10(日) 23:57:43#include <setjmp.h>
#include <stdio.h>
void acc1(int n, int x, jmp_buf env) {
if (n == 0) { longjmp(env, x); }
else { acc1(n - 1, n + x, env); }
}
int acc(int n) {
jmp_buf env; int x;
if (n == 0) { return 0;}
else if (x = setjmp(env)) { return x; }
else { acc1(n, 0, env); }
}
int main(int argc, char *argv[]) {
printf("%d\n", acc(atoi(argv[1])));
}
0749デフォルトの名無しさん
2005/04/11(月) 08:01:460750デフォルトの名無しさん
2005/04/11(月) 08:30:25#include <stdio.h>
#include <stdlib.h>
int main(int argc, char ** argv) {
printf("%d\n", atoi(argv[1]) * (atoi(argv[1]) + 1) / 2);
return 0;
}
0751デフォルトの名無しさん
2005/04/11(月) 09:27:350752デフォルトの名無しさん
2005/04/11(月) 09:39:22それのどこが「任意個の整数の合計」なんだか。
つーか、>740=>748が阿呆なだけか。
0753仕様書無しさん
2005/04/19(火) 00:40:02setjmp 使ってなくてすまん。
int
summers (int n, ...)
{
va_list ap;
int i = 0, sum = 0;
va_start (ap, n);
while (i++ < n)
sum += va_arg (ap, int);
va_end (ap);
return sum;
}
0754デフォルトの名無しさん
2005/04/19(火) 20:26:29setjmp使わなきゃ
0755デフォルトの名無しさん
2005/04/21(木) 15:45:47ある実行ファイルを実行している最中で,
このファイルを open することはできますか?
0756デフォルトの名無しさん
2005/04/21(木) 15:48:58自分で試せ。
0757デフォルトの名無しさん
2005/04/21(木) 15:50:00こんにちはLinuxさん
0758デフォルトの名無しさん
2005/04/21(木) 15:50:17このファイルとは、実行中の実行ファイルのことでしょうか。
それなら制限つきでopenできるはずです。
0759デフォルトの名無しさん
2005/04/21(木) 15:56:14制限って?
0760755
2005/04/21(木) 16:13:06ある実行可能ファイルを open したところ
失敗して,strerror(errno) したところ
Text file busy
とでるんです(バイナリファイルなのに…)
これはそのファイルが実行中と解釈していいのでしょうか?
0761デフォルトの名無しさん
2005/04/21(木) 16:38:39LinuxさんはどんなUNIXを使ってらっしゃるんで?
0762デフォルトの名無しさん
2005/04/21(木) 17:05:16あと text はコードというような意味。
バイナリファイル/テキストファイルというような区別はUnixにはない。
使用中なのは確かだけど実行中かどうかは知らん。
0763デフォルトの名無しさん
2005/04/21(木) 17:07:060764デフォルトの名無しさん
2005/04/21(木) 17:15:210765755
2005/04/21(木) 17:18:53参考になりますた
> errno 26 は "Text file busy."
Linux でも同様です
0767デフォルトの名無しさん
2005/04/21(木) 20:41:01そんなもん想定の範囲内だが?
0768デフォルトの名無しさん
2005/04/21(木) 20:47:43もっとやって!
0769デフォルトの名無しさん
2005/04/21(木) 23:40:28UNIXの実行ファイルは更新可能
0770デフォルトの名無しさん
2005/04/21(木) 23:43:560771デフォルトの名無しさん
2005/04/22(金) 00:20:080772__
2005/04/22(金) 00:40:24んー、こういうことかな?
#include <stdio.h>
int
main (int argc, char **argv)
{
FILE *fp;
if ((fp = fopen (argv[0], "w")) == NULL)
perror ("fopen"), exit (1);
fclose (fp);
return 0;
}
$ gcc -Wall -o Text Text.c
$ ./Text
fopen: Text file busy
$
0773デフォルトの名無しさん
2005/04/22(金) 09:39:12良い例です(笑)。細かな事ですが、コマンド名には大文字を入れないのが慣習です
0774デフォルトの名無しさん
2005/04/22(金) 11:36:45待ち時間を 10 秒とかにしているのに
すぐに 0 が返ってきます
時間切れ以外に 0 が返ってくる場合はありえるのでしょうか?
man select には時間切れと書いていますが
0775デフォルトの名無しさん
2005/04/22(金) 11:54:380776デフォルトの名無しさん
2005/04/22(金) 12:18:55待ち時間の設定から呼び出しまで辺りのソースを晒して味噌。
0777デフォルトの名無しさん
2005/04/22(金) 20:23:18契約違反になります
0778デフォルトの名無しさん
2005/04/22(金) 20:26:260780デフォルトの名無しさん
2005/04/23(土) 05:05:530781デフォルトの名無しさん
2005/04/25(月) 11:15:17(1) Redhat 7.1
(2) Redhat EL WS
で動作が違いました.
すでに実行中のファイルを書きこみ専用で
open しようとしたときに
(1)では成功,(2)では失敗します.
このようなことはありえますでしょうか?
これは OS 自体の設定の違いによって起こるものなのでしょうか?
また,ファイルパスを指定して,
それが実行中かどうかを知る方法(もちプログラムの中で)は
ありますか?
0782デフォルトの名無しさん
2005/04/25(月) 11:54:35execve(2)した時の、O_EXEC, MAP_DENYWRITE関係の設定が変ったんだろ。
書けるとsecurity holeになるからね。十分あり得る。
$ cat /proc/プロセスID/maps
してみてね。
0783デフォルトの名無しさん
2005/04/25(月) 12:42:32本当にそうなら、これでまたひとつWindowsに近づいたな。
0784781
2005/04/25(月) 12:48:45Linux 板にいてきます
0786デフォルトの名無しさん
2005/04/29(金) 16:02:44sleepを入れながらポーリングするのでしょうか?
0787デフォルトの名無しさん
2005/04/29(金) 16:06:080788デフォルトの名無しさん
2005/04/29(金) 16:09:48ポーリングでしか分からないのなら、それもあり。
でも定期的に無駄にCPU使うので、可能なら
accept なり、read なりでイベント待ちするのが普通
0789デフォルトの名無しさん
2005/05/01(日) 10:11:26こんな問題をいきなり授業で出題されました。
まだほとんど何もやってないので、さっぱり
意味が分かりません。分かる方がいらっしゃるなら、
回答の方教えてはいただけませんか?
f(x)=xの2乗-xy-yの2乗 について
x=-0.423 y=1 の時の値を(小数点第4位までの表示)
で求めなさい。ただし、変数x,yの値はscanf文で
入力させてください。
0790デフォルトの名無しさん
2005/05/01(日) 10:15:540791デフォルトの名無しさん
2005/05/01(日) 10:20:48で聞けばいいんですかね?
0792デフォルトの名無しさん
2005/05/01(日) 10:37:11perl -e '$x=scanf();$y=scanf();printf "%.4f\n",$x**2-$x*$y-$y**2;sub scanf {<>}'
0793デフォルトの名無しさん
2005/05/01(日) 11:20:35お好きなところへどうぞ。
http://pc8.2ch.net/test/read.cgi/tech/1113811213/
http://pc8.2ch.net/test/read.cgi/tech/1108989422/
0794デフォルトの名無しさん
2005/05/01(日) 12:11:430795从*・ 。.・) ◆SayuminPM.
2005/05/01(日) 21:46:42http://www.amazon.com/exec/obidos/tg/detail/-/0201433079/
みんな予約した?
0796デフォルトの名無しさん
2005/05/01(日) 22:50:17第1版で十分
0797デフォルトの名無しさん
2005/05/01(日) 23:19:31は不必要
0798デフォルトの名無しさん
2005/05/01(日) 23:38:03とりあえずレビューされてから考えようかな、と。
第1版は持ってるし。エラッタ修正待ちも兼ねて。
0799デフォルトの名無しさん
2005/05/01(日) 23:42:31本
第1版で十分
0800デフォルトの名無しさん
2005/05/02(月) 00:07:330801デフォルトの名無しさん
2005/05/02(月) 00:26:020802デフォルトの名無しさん
2005/05/02(月) 00:45:05>799は>797の指示に従ったんだろ。
0803デフォルトの名無しさん
2005/05/02(月) 00:54:40×エラッタ
○イレイタ
○エラータ
0804デフォルトの名無しさん
2005/05/02(月) 03:53:51UNIXをユニックスと書くやつはいてもユーニクスとは誰も書かないのと同じで。
803は現代日本で生きるのは大変そうだな。
明治時代なら好きな読みを押し付けられたのに。
0805デフォルトの名無しさん
2005/05/02(月) 03:59:280806デフォルトの名無しさん
2005/05/02(月) 04:20:020807デフォルトの名無しさん
2005/05/02(月) 19:52:240808デフォルトの名無しさん
2005/05/02(月) 19:56:030809デフォルトの名無しさん
2005/05/04(水) 16:07:050810デフォルトの名無しさん
2005/05/04(水) 16:07:460811デフォルトの名無しさん
2005/05/04(水) 16:12:010812デフォルトの名無しさん
2005/05/05(木) 23:01:54fork/execして生まれた子が親の死を感知する方法で一般的な
方法はあるのでしょうか?(initに引き取られると困る)
調べると「システムによってはSIGHUPが...」とかという記述で
一般的な方法は見つかりませんでした。
もちろん、「そんな親プログラムを作るな」というのは承知しているのですが...
0813デフォルトの名無しさん
2005/05/05(木) 23:17:20どうしても知りたければお爺さんプロセスから教えてもらうようにするとか。
ちなみにSIGHUPは親プロセスの死とは直接関係ないですよ。
0814デフォルトの名無しさん
2005/05/05(木) 23:38:01お手本にしたいのですが
0815デフォルトの名無しさん
2005/05/05(木) 23:43:53$ ls
Makefile.in README aclocal.m4 background.c blue.c
bs.6 bs.c cardfile.c cardfile.dat color_set.c
configure* configure.in demo_defkey.c demo_forms.c demo_keyok.c
demo_menus.c demo_panels.c ditto.c dots.c edit_field.c
edit_field.h filter.c firework.c firstlast.c gdc.6
gdc.c hanoi.c hashtest.c ins_wide.c inserts.c
keynames.c knight.c listused.sh* lrtest.c modules
ncurses.c ncurses_tst.hin newdemo.c railroad.c rain.c
tclock.c test.priv.h testaddch.c testcurs.c testscanw.c
tracemunch* view.c worm.c xmas.c
0816デフォルトの名無しさん
2005/05/06(金) 00:17:10親のみが書き手、子が読み手のpipeを用意する。
親が死んだら子によるread(2)の返り値が0になるはず。
とか。一般的かどうかは知らない。
0817812
2005/05/06(金) 00:35:30>>816
レスありがとうございます。やはり一般的な方法はないですか・・・
パイプとかPID監視とかの代替案を使うことにします。
0818デフォルトの名無しさん
2005/05/06(金) 01:09:12> (initに引き取られると困る)
ここが引っ掛かっていてスルーしていたんだけど、
これどういう意味なの? 何が困るの?
pollingでいいなら、IPCのセマフォ使うとか。
0819デフォルトの名無しさん
2005/05/06(金) 01:17:25wwwwwwっwwwwwwっうぇwwwwwwwwwwww
wwwうぇwwwうはっwwwっ
おkwww
wwwwwwwwwwwwwwwwwwwwwwwwwwwwww
0820デフォルトの名無しさん
2005/05/06(金) 03:26:12kqueue/keventがあるOSなら任意のpidのexitしたのがわかる。
0821デフォルトの名無しさん
2005/05/06(金) 06:08:03適当にシグナル投げてみるとかは?
0822デフォルトの名無しさん
2005/05/06(金) 06:24:26能動的にアクション起こしていいんなら getppid()!=1 で十分だろう
0823デフォルトの名無しさん
2005/05/07(土) 02:48:42printf("%S",wb);
や
wchar_t wb[20];
initscr();
getn_wstr(wb, 20);
printw("%S",wb);
は問題なし
wchar_t wb[] = L"ほげ";
initscr();
printw("%S",wb);
は
^[$B$[$2^[(B
こんな風に表示されてしまう
setlocale(LC_ALL, "");してみても変化無し
何が足りないんでしょう
0824デフォルトの名無しさん
2005/05/07(土) 03:05:390825デフォルトの名無しさん
2005/05/07(土) 07:14:54ターミナルのlocaleはそれでいいのか?
0826デフォルトの名無しさん
2005/05/07(土) 18:29:50getppidなんてはじめて知った
おくがふかいなぁ
0827デフォルトの名無しさん
2005/05/10(火) 07:09:50WindowsにおけるWM_COPYDATAのような方法を探しているのですが。
0828デフォルトの名無しさん
2005/05/10(火) 08:35:35そうでなければmmap(2)、IPC共有メモリなど。
0829デフォルトの名無しさん
2005/05/10(火) 16:03:44C++でコマンドラインプログラムは書けます。
0830デフォルトの名無しさん
2005/05/10(火) 17:30:24多分GTK+かQtのどちらかになると思うけど。決まったらそのスレへgo!
0831デフォルトの名無しさん
2005/05/10(火) 20:00:240832デフォルトの名無しさん
2005/05/10(火) 20:02:450833デフォルトの名無しさん
2005/05/10(火) 20:26:28UNIXなら標準だし、ついでにXlibにも詳しくなる。
0834デフォルトの名無しさん
2005/05/10(火) 20:30:230835デフォルトの名無しさん
2005/05/10(火) 20:46:32ツールキットとしては古くて資料も色々あるけど。
それにしても、関数名が長いし。
#XmToggleButtonGadgetGetState()とかw
0836デフォルトの名無しさん
2005/05/10(火) 20:59:48>ついでにXlibにも詳しくなる。
詳しくないと使えないっつーか
だから避けられるんだっつーか
…折れ線グラフひとつ書くのも一苦労でしたよ、ええ。
0837デフォルトの名無しさん
2005/05/11(水) 00:27:26俺としてはmoc拡張の必要のないgtk--を推奨。
http://www.geocities.com/SiliconValley/Vista/7184/guitool.html
↑を眺めてみるのもよし
0838デフォルトの名無しさん
2005/05/12(木) 23:46:190839デフォルトの名無しさん
2005/05/14(土) 03:01:370840デフォルトの名無しさん
2005/05/14(土) 03:31:320841デフォルトの名無しさん
2005/05/14(土) 04:19:010842839
2005/05/14(土) 04:48:27実行が終了すれば必ず消えるものなのでしょうか?
0843デフォルトの名無しさん
2005/05/14(土) 06:18:250844デフォルトの名無しさん
2005/05/14(土) 06:20:14kill(pid, 0)
0845デフォルトの名無しさん
2005/05/14(土) 06:20:43kill(839, 0)
0846デフォルトの名無しさん
2005/05/14(土) 06:36:23killよりも/procの方が確実に判定できるケースがあるとのことだから
そのやり方について聞いているんだろう。
実装(環境)依存としか答えようがなさそうだけど。
関係ないけど、「実行中である」という確実な判定は不可能だな。
なんらかの呼び出しから制御が戻る前に終了する可能性がある。
PIDの唯一性(再割り当てされないこと)が保証されていれば
「終了した」ということは判定できるだろうけど。
0847デフォルトの名無しさん
2005/05/14(土) 06:39:19親プロセスは、一秒に一回ぐらいの間隔で、子プロセスが終了してるかどうかを確認したいのです。
その間、親では
while(1){
子プロセスの終了してるか監視 終了してれば、処理を抜ける
メータ表示
}
などのプログラムを動かしたいと思っています。
いろいろ調べたんですがwait()関数なるものが子プロセス終了まで待ちつづけるというものでしたので、子プロセスが動いている間
メータを動かすという処理が出来ませんでした。
子プロセスは、system関数で、別のプログラムを実行しています。
その間、親プロセスで、メータを増やす処理をしたいのですが、子プロセスが終了?してるか調べるwait関数に変わるものは何かあるのでしょうか?
ps -aux で確認したところ、子プロセスの処理が終わったらゾンビプロセスになってました;
0848デフォルトの名無しさん
2005/05/14(土) 06:56:45最近の10レスも読まないのな
0849デフォルトの名無しさん
2005/05/14(土) 07:41:43別のスレでもご迷惑をかけました
勝手に書き込んで荒らしてしまって、
すみませんでした自分で調べてみます。
申し訳ありませんでした。
>おまえはタイトルも>>1も読まないだけでなく
>最近の10レスも読まないのな
これからは、すべて読んでから書き込みます。
すいませんでした。
0850デフォルトの名無しさん
2005/05/14(土) 07:43:250851デフォルトの名無しさん
2005/05/14(土) 08:16:290852デフォルトの名無しさん
2005/05/14(土) 09:54:10wait3(2)かwait4(2)で、WNOHANG
0853デフォルトの名無しさん
2005/05/14(土) 13:02:590854デフォルトの名無しさん
2005/05/14(土) 21:11:45なんだそれは?その子プロセスは直接の子では無いではないか。
素直にAPUEを嫁
0855デフォルトの名無しさん
2005/05/14(土) 21:15:060856デフォルトの名無しさん
2005/05/14(土) 22:40:270857デフォルトの名無しさん
2005/05/14(土) 22:59:42usleep
0858デフォルトの名無しさん
2005/05/14(土) 23:03:30ありがとう
0859デフォルトの名無しさん
2005/05/14(土) 23:09:50nanosleep
0860デフォルトの名無しさん
2005/05/14(土) 23:57:590861デフォルトの名無しさん
2005/05/15(日) 11:17:57通報したほうがいいですか?
0862デフォルトの名無しさん
2005/05/15(日) 12:15:060863デフォルトの名無しさん
2005/05/15(日) 13:05:550864デフォルトの名無しさん
2005/05/15(日) 13:33:110865デフォルトの名無しさん
2005/05/15(日) 15:41:240866デフォルトの名無しさん
2005/05/15(日) 15:52:400867デフォルトの名無しさん
2005/05/15(日) 15:54:26Linuxは知らないけど /proc の下あたりになんかあるんじゃ?
いずれにしても移植性はないと思う。
0868デフォルトの名無しさん
NGNG0869デフォルトの名無しさん
2005/05/15(日) 17:16:430870デフォルトの名無しさん
2005/05/16(月) 01:38:200871デフォルトの名無しさん
2005/05/16(月) 02:05:210872デフォルトの名無しさん
2005/05/16(月) 02:13:11dlopenとかの事?
0873デフォルトの名無しさん
2005/05/17(火) 02:49:380874デフォルトの名無しさん
2005/05/17(火) 02:52:050875デフォルトの名無しさん
2005/05/17(火) 07:14:100876デフォルトの名無しさん
2005/05/17(火) 07:33:330877デフォルトの名無しさん
2005/05/17(火) 08:04:370878デフォルトの名無しさん
2005/05/17(火) 08:07:350879デフォルトの名無しさん
2005/05/17(火) 08:18:470880デフォルトの名無しさん
2005/05/17(火) 08:29:00http://ex10.2ch.net/test/read.cgi/news4vip/1116266649/
0881デフォルトの名無しさん
2005/05/17(火) 23:47:580882デフォルトの名無しさん
2005/05/18(水) 10:48:050883デフォルトの名無しさん
2005/05/18(水) 14:57:59getloadavg(3)
0884デフォルトの名無しさん
2005/05/18(水) 15:01:000885デフォルトの名無しさん
2005/05/18(水) 15:08:33使っているCPUの数 ÷ 所有しているCPUの数 × 100
0886デフォルトの名無しさん
2005/05/18(水) 16:30:450887デフォルトの名無しさん
2005/05/18(水) 16:33:08経験を積む
0888デフォルトの名無しさん
2005/05/18(水) 17:39:04kmem, /proc関係
$ cat /proc/loadavg
0889デフォルトの名無しさん
2005/05/18(水) 20:29:09HP-UXだったら、pstat(2)(pstat_getdynamic(2)だったかな)。
Tru64 UNIXだったら、table(2)。
0890デフォルトの名無しさん
2005/05/18(水) 21:37:02header を grep すれば大抵ポインタが見つかる
0891デフォルトの名無しさん
2005/05/18(水) 22:41:240892デフォルトの名無しさん
2005/05/18(水) 22:47:000893デフォルトの名無しさん
2005/05/18(水) 22:57:330894デフォルトの名無しさん
2005/05/18(水) 22:59:47要件が良く分からんが、スレチガイかと
0895デフォルトの名無しさん
2005/05/18(水) 23:45:45同じことを実現しているコマンドを探すor思い出す→wとかuptime→
wのソースを見る→該当部分を探す→getloadavg発見→manで確認
>>889
どうせこんなくだらない質問するやつは犬厨あたりだろうから
getloadavgが無いシステムのことは考えなかった。補足サンクスコ
0896デフォルトの名無しさん
2005/05/18(水) 23:54:540897?
2005/05/18(水) 23:59:550898ヽ(´ー`)ノ ◆.ogCuANUcE
2005/05/19(木) 00:01:41$ man -k 'load average'
getloadavg (3) - get system load averages # (゚Д゚)!
tload (1) - graphic representation of system load average
xload (1x) - system load average display for X
0899デフォルトの名無しさん
2005/05/19(木) 01:11:50ふーん
0900デフォルトの名無しさん
2005/05/19(木) 02:23:37うまく背景色で塗りつぶす方法って何かないでしょうか?
0901デフォルトの名無しさん
2005/05/19(木) 02:42:570902デフォルトの名無しさん
2005/05/19(木) 08:00:00やり方がまずいんでしょうか
0903デフォルトの名無しさん
2005/05/19(木) 09:27:270904デフォルトの名無しさん
2005/05/19(木) 09:29:150905デフォルトの名無しさん
2005/05/19(木) 11:56:28私の頭が悪いだけかもしれませんが・・・
0906デフォルトの名無しさん
2005/05/19(木) 13:49:19sh: /unsafe/: No such file or directory
Error executing formatting or display command.
System command /unsafe/ exited with status 32512.
Segmentation fault (core dumped)
('・ω・`)
0907デフォルトの名無しさん
2005/05/19(木) 13:55:17すべておまいが悪い
0908905
2005/05/20(金) 08:04:370909デフォルトの名無しさん
2005/05/20(金) 11:11:46system()で作ってみたのですが、sshのパスワードの反応する部分がわかりません。
0910デフォルトの名無しさん
2005/05/20(金) 14:59:130911デフォルトの名無しさん
2005/05/20(金) 18:24:00XmClipboard何とかという関数を使ってるんだが、
どうも動きがいまいちなんだが。
0912デフォルトの名無しさん
2005/05/20(金) 22:22:240913デフォルトの名無しさん
2005/05/21(土) 10:35:040914デフォルトの名無しさん
2005/05/21(土) 10:43:180915デフォルトの名無しさん
2005/05/21(土) 14:36:56同意。だけどその種の発言はマ板で(ry
0916デフォルトの名無しさん
2005/05/21(土) 19:51:23Xじゃ、どう転んでもだめだわ
UNIXはさ、マルチログインって点にまだ救いがあるんだからさ
あとtelnet/sslやftpとかで一通りのことできるし
高コストなGUIがいらないって点をもっと誇りに思おうぜ
0917デフォルトの名無しさん
2005/05/21(土) 20:02:350918デフォルトの名無しさん
2005/05/21(土) 20:18:48その態度は (・д・)イクナイ!
0919デフォルトの名無しさん
2005/05/21(土) 21:14:28そうですか
0920デフォルトの名無しさん
2005/05/21(土) 22:16:470921デフォルトの名無しさん
2005/05/22(日) 00:23:09KDEやGNOMEはそこそこ頑張ってるけどダメ
CDEなんて汚物だな
GUIはMacとWindowsに任せてUNIXは得意分野で使おう
0922デフォルトの名無しさん
2005/05/22(日) 00:26:09Mac OS X があるじゃん。
0923デフォルトの名無しさん
2005/05/22(日) 00:40:330924デフォルトの名無しさん
2005/05/22(日) 02:34:320925デフォルトの名無しさん
2005/05/22(日) 04:14:10いろいろ存在することに異存はない。
0926デフォルトの名無しさん
2005/05/22(日) 10:56:09gnomeとkdeのOKとキャンセルボタンの配置がドナルド式になったのが
気に入らねぇ。
やたらと重いのも気に入らねぇ。
cdeの方がましだ。
・・・って関係ねぇな。
0927デフォルトの名無しさん
2005/05/22(日) 10:59:190928デフォルトの名無しさん
2005/05/23(月) 01:17:580929デフォルトの名無しさん
2005/05/23(月) 01:19:050930デフォルトの名無しさん
2005/05/23(月) 01:27:10○低レベルの人でも技術者顔できるようになった
0931デフォルトの名無しさん
2005/05/23(月) 01:27:45全世界の話ならわかるが、この国の技術が下がったのなら
使う日本人が低レベルだったからだろう?M$のせいにするな
0932デフォルトの名無しさん
2005/05/23(月) 01:35:41俺はダメだ
0933デフォルトの名無しさん
2005/05/23(月) 05:17:15自分のレベルが高いと勘違いしてるのがとても迷惑。
0934デフォルトの名無しさん
2005/05/23(月) 07:22:27自分のレベルが高いと勘違いしてるのがとても迷惑。
0935デフォルトの名無しさん
2005/05/23(月) 08:23:23Unix上でコンパイルされているかWindows上でコンパイルされているかを
判別するにはどうしたらよいのでしょうか?
対象となるコンパイラは今のところg++、bcc32、VCです。
0936デフォルトの名無しさん
2005/05/23(月) 08:52:460937デフォルトの名無しさん
2005/05/23(月) 09:28:280938デフォルトの名無しさん
2005/05/23(月) 09:35:27まあ、マルチプラットフォームに対応したライブラリのヘッダが参考になると思うよ。
zlibとかboostとか。
0939デフォルトの名無しさん
2005/05/23(月) 09:54:15ありがtぽ
0940デフォルトの名無しさん
2005/05/23(月) 10:10:48役立たずなわけだが
0941デフォルトの名無しさん
2005/05/23(月) 11:51:04やけにコテコテしたGUIは作れても、その中で動く肝心なものは
すでに用意されてるものを呼び出す以上のことはできないつーような話じゃないの?
0942デフォルトの名無しさん
2005/05/23(月) 12:01:44全部かどうかは知らないが少なくともMingwにもCygwinにもVC++にもBCCにも定義されてる
0943デフォルトの名無しさん
2005/05/23(月) 14:45:42俺は我慢できないそんな環境。
FreeBSD で十分だろ。
0944デフォルトの名無しさん
2005/05/23(月) 15:02:000945デフォルトの名無しさん
2005/05/23(月) 15:24:41ならば今すぐ総てのエロゲをFreeBSDで動作させてみせろ!
0946デフォルトの名無しさん
2005/05/23(月) 15:28:030947デフォルトの名無しさん
2005/05/23(月) 15:31:07とりあえず、シスプリを動かしてみた。
@@@@
@@@@@
@@@@
0948デフォルトの名無しさん
2005/05/23(月) 15:38:33おまいはエロゲでOS移行するのかよ。
0949デフォルトの名無しさん
2005/05/23(月) 15:40:170950デフォルトの名無しさん
2005/05/23(月) 15:51:200951デフォルトの名無しさん
2005/05/23(月) 15:55:550952デフォルトの名無しさん
2005/05/23(月) 17:37:320953デフォルトの名無しさん
2005/05/23(月) 17:42:30パソコン丸ごとゴミ箱に放りこめ
0954デフォルトの名無しさん
2005/05/23(月) 18:34:580955デフォルトの名無しさん
2005/05/23(月) 19:49:03CGIを勉強して「掲示板」等を作成したいのですが、
お薦めのサイトがありましたら、教えて頂ければと思います。
どなたかよろしくお願い致します。
0956デフォルトの名無しさん
2005/05/23(月) 20:41:38鼬害
0957デフォルトの名無しさん
2005/05/23(月) 20:46:520958デフォルトの名無しさん
2005/05/23(月) 21:53:550959デフォルトの名無しさん
2005/05/23(月) 21:57:570960デフォルトの名無しさん
2005/05/23(月) 21:58:080961デフォルトの名無しさん
2005/05/23(月) 22:19:120962デフォルトの名無しさん
2005/05/23(月) 22:25:500963デフォルトの名無しさん
2005/05/23(月) 23:31:230964デフォルトの名無しさん
2005/05/23(月) 23:34:25劣化した車輪の再発明をして遊んでいます
0965デフォルトの名無しさん
2005/05/23(月) 23:42:40「車輪の再発明」創刊
0966デフォルトの名無しさん
2005/05/24(火) 00:11:43スターリングエンジンの再発明に
ステップアップしようと思います。
どうですか?
0967デフォルトの名無しさん
2005/05/24(火) 00:41:39できたらできたですごいが。
0968デフォルトの名無しさん
2005/05/24(火) 04:05:590969デフォルトの名無しさん
2005/05/24(火) 08:27:350970デフォルトの名無しさん
2005/05/24(火) 09:35:53UNIX環境で動くdir(仮称) というプログラムを作りたいのですが
機能としては DOSコマンドのように プログラムのdirを打ち込み
取得したいディレクトリをパラメタに指定すると、その配下のファイル一覧が
ズラーと取得できるような処理をイメージしています。
現在、パラメタに与えた、個別のファイルをフルパスで指定すると
その情報のみ抽出できるまで試作品は完成しました。
Cで作成しております。取得するための関数はstatを使用しました
考え方としてはwin系apiのFindFirst,Nextが利用できれば嬉しいのですが、
UNIX環境で開発して動作させる場合、このような再帰処理的に連続して
指定配下を処理する場合、どのようにかんがえればよろしいでしょうか?
もう1点ですが通常 cc test.cで test.cのコンパイルが行えますが
デバッグモードで1ステップずつ挙動をみたい場合、どうすればいいか教えて
いただけないでしょうか?長々と書きまして申し訳ありません。
是非、御教授おねがいいたします。
0971デフォルトの名無しさん
2005/05/24(火) 09:49:14よく知らないけど
しかししつもんするがわというのはよむがわのよみやすさというものにもうすこしはいりょしてくれてもよさそうなものだが
0972デフォルトの名無しさん
2005/05/24(火) 09:57:360973デフォルトの名無しさん
2005/05/24(火) 10:03:00ありがとうございます。そちらのキーワードでググってみます。
分かりづらい文章すみませんでした。
>>972
半年以前のファイル更新日付で時刻部分が落ちてしまいます。
当方環境でlsを使うとsolarisのバージョンが古いので
--full-timeが動きません
なので、環境に依存しないstatを使えばどのファイルも同じ条件で列挙
出来るものだと考えました。
0974デフォルトの名無しさん
2005/05/24(火) 10:26:38それならfind使えば?
0975デフォルトの名無しさん
2005/05/24(火) 10:29:54自作したい理由が判らん。
例えば特定の名のファイル(stdで始まるインクルードファイル)を特定のディレクトリ群(/usr,/opt)以下から
探し出して日付けを知りたいなら、
find /usr /opt -name 'std*.h' -print|xargs ls -l
とかできるわけだけど。
0976デフォルトの名無しさん
2005/05/24(火) 10:44:22>>975
レスありがとうございます。当方環境では find でもls-lでも
半年以前のファイル更新日付だと
時刻部分が飛んでしまうので自作で検討いたしました。
0977デフォルトの名無しさん
2005/05/24(火) 11:09:50>976は時刻も知りたいらしいからls実行しちゃダメじゃんw
つーか、-printじゃなくて-lsでいいべさ。
>>976
つーことで、find . -lsなら時刻は出るべ。
0978デフォルトの名無しさん
2005/05/24(火) 11:15:29レスありがとうございました.
表示形式は変ったのですが、やはりfind -lsでも時刻部分は
飛んでしまって表示されません。半年以内のファイルであれば
時刻まで表示されています。
0979975
2005/05/24(火) 11:24:50そんじゃ、>>975のxargs以降をxargs tar cf -|tar tvf -でどうだ?
#いや、最早冗長すぎるけど。
##そこまでするならgnuのlsのソースでも見ればいいような。
###まぁ、gnuのlsをコンパイルすればいいのか。
>>977
findの-lsは無駄に情報量多くて好きじゃないもんで。順番もヒット順だし。
で、findの-lsも時刻は出ないってば。
0980デフォルトの名無しさん
2005/05/24(火) 11:26:36-rで再帰、-tで最終変更時刻表示。
begin 644 dir.c.gz
M'XL("$^/DD(``V1I<BYC`'U4;4_;,!#^G/R*6ZI"`@7*)+ZLP(2T#YO$IFEL
MTB1`57`<:M$ZE>W`JJG_?7=GUR6IABI5]KT\?N[NN0R4%O.VDG!N5_;$K9;2
M'L\NTT'';%WINM9*&:E[ME8KZZJNS:F%[.&Y2C4[IKEZZ-N,TH]D2Y\;5<$2
MKYAI<M%HZT#,2@,'KC2/DJPC0"^8>EX^^J.C8Y'^39-/7W[``89,T@0Q6^'`
M<X<#_#,K-*L:\AR-<`'-4FIZ)`(7!5Q<P+=?U]<%(%A2,X\Z1\K2F%$F2JT;
M%_.&MKC3V0BV^8B?&.E:H_&T3I.7F9I+R/EM?-#(LJ)$_Q2]0&R0J%@L\^P8
MH3CRZ+*:ZG(A"]C;@^C==1/$0-6ZDC5\O_KY>?KUZG<ZP)O2,AK@_=E9.B#"
M-;Z7<"L?VOIVX[\GSIMFT>C!HIN-1.[=:W:O&D5^RA++58[QHRSCXA,YMY(K
MZWA[+?*^TGE?=A)RUVG/TRTW$-TX]XAG$8D!XF%HVM#"T2)O#!8DSYZ1C
MZZ8+NA9;SKU$GFL'G^56A-+(<#/]<H-RRR-B4\G0ER3JEY\.2O4,8Z5K5HB8
M-U9N-#%)UVE*@EZ42N=TP+:)4=`_GI]O[UGFY!(C-?$GQD=YC</=O;H'!9YZ
MY@*M.(=FZ7*/3)@X`>/\"*@N03MP=,J5/*!BG\AA7Y03,W2&#H@2Q[QO]C]P
MO1L"IWZX,2N$N1#FW@[[&,+Z6]?J)]V\:%P[IQI]A[^@ET3^40Y+XPO*OFSG
M#CH8$$%\U>"74U;<TE(X:4#@W&`\;!@8>[V+S9,*7PYJ&QPQ%UWQYV+L6Q)'
MSIO2'_D:XF+4C8%<\>>',":@X)SGC*?#P]#?_^XCZY^5H.XW.X#Y8R\\_%PB
M9BMC^!LBC80CVJY.XV;T-FQGQ2+&&VNV1>LO6LC>-MMW?\P+\0_>^P6,M`8`
!`"MC
`
end
0981デフォルトの名無しさん
2005/05/24(火) 12:30:100982デフォルトの名無しさん
2005/05/24(火) 12:39:30stat
tar cf - hogehoge | tar tvf -
tcsh -c 'filetest -M: hogehoge'
diff -c hogehoge /dev/null | head -1
0983デフォルトの名無しさん
2005/05/24(火) 13:00:100984デフォルトの名無しさん
2005/05/24(火) 13:08:390985980
2005/05/24(火) 13:19:47UNIXプログラミング質問すれ Part6
http://pc8.2ch.net/test/read.cgi/tech/1116908090/
0986デフォルトの名無しさん
2005/05/24(火) 14:55:140987デフォルトの名無しさん
2005/05/24(火) 14:55:460988デフォルトの名無しさん
2005/05/24(火) 21:18:240989デフォルトの名無しさん
2005/05/24(火) 21:19:580990デフォルトの名無しさん
2005/05/24(火) 22:45:35http://web.cs.mun.ca/~rod/ncurses/ncurses.html#introduction
これ訳そうと思ってるんだけど需要あるかな
0991デフォルトの名無しさん
2005/05/24(火) 22:45:550992デフォルトの名無しさん
2005/05/24(火) 22:48:27cursesってまだUNIXでは現役なのか。
おれは10年ぐらい前に挫折したよ。
その後UNIXは他人に苦労させたもん勝ちということを理解した。
0993デフォルトの名無しさん
2005/05/24(火) 23:01:43需要はわからんが、翻訳すれば翻訳者自身がNCURSESの知識を得れると思うよ。
0994デフォルトの名無しさん
2005/05/24(火) 23:03:130995デフォルトの名無しさん
2005/05/24(火) 23:05:26って古の Lisp Hacker が言ってたね
まぁ最近は苦労するって言ってもたかが知れてるけど
0996デフォルトの名無しさん
2005/05/24(火) 23:15:240997デフォルトの名無しさん
2005/05/24(火) 23:25:52私は現役で使ってますよ。てっとりばやいですから。
どの程度需要があるのかは分かりませんが・・・
0998デフォルトの名無しさん
2005/05/24(火) 23:30:55関数呼び出しの例とかね
0999デフォルトの名無しさん
2005/05/25(水) 00:06:491000デフォルトの名無しさん
2005/05/25(水) 00:07:1010011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。