1 名前:名無しさん@お腹いっぱい。 [2005/09/22(木) 20:29:34 ] UNIXおよびUNIX clone環境一般のプログラミングに関する質問スレッド 過去スレ(プログラム技術板) Part6 pc8.2ch.net/test/read.cgi/tech/1116908090/ Part5 pc8.2ch.net/test/read.cgi/tech/1105723117/ Part4 pc5.2ch.net/test/read.cgi/tech/1095843584/ Part3 pc5.2ch.net/test/read.cgi/tech/1085930894/ Part2 pc5.2ch.net/test/read.cgi/tech/1055110889/ Part1 pc2.2ch.net/tech/kako/992/992057422.html Part3ミラー makimo.to/2ch/pc5_tech/1085/1085930894.html Part2ミラー makimo.to/2ch/pc5_tech/1055/1055110889.html 関連スレ Cygwin使っている人いますか? その14 (UNIX板) pc8.2ch.net/test/read.cgi/unix/1107587275/ Cygwin使っている人いますか? 3 (Windows板) pc8.2ch.net/test/read.cgi/win/1090131123/ 関連板 Linux板 pc8.2ch.net/linux/ プログラム技術板 pc8.2ch.net/tech/
817 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/09(土) 14:09:33 ] >>814 free()で解放されないとは限らない。 例えばglibcでmalloc()で確保されている領域の場合、 free()で解放される可能性がある。 ただその辺りの制御をしたいなら、自分で mmap なり使って 領域管理をするのが、てっとり早いと思う
818 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/09(土) 14:11:07 ] s/例えばglibcでmalloc()で/例えばglibcでmmap()で/
819 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/09(土) 14:38:26 ] >>817 えっと、それは知ってるんですが(苦笑) 自分でmalloc()を再実装したりせずに 現状のmalloc()に直接メモリ解放を指示する方法の質問です。 >>818 glibcなら、mmap()だけじゃなくsbrk()で確保されている領域でも 場合によってはfree()で解放される場合があります。
820 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/09(土) 14:42:06 ] メモリアロケータくらい自分で作れば良いじゃん。苦笑してる間に実装出来ると思うが。
821 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/09(土) 18:04:46 ] >>814 dlmalloc なら mallopt(M_TRIM_THRESHOLD, 0) でそうなる。 dlmalloc ベースの実装なら似たようなオプションが使えるかもしれない。
822 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/09(土) 18:11:53 ] 実行環境に依存する話なのに実行環境が書いてないから釣り
823 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/09(土) 18:15:03 ] メモリアロケータは好きなものに置き換える事が可能なので、 環境依存とは言えない。
824 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/09(土) 19:38:40 ] 置き換えも許容したら余計話が発散しますがな
825 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/09(土) 23:05:35 ] LD_PRELOAD 等で malloc を置き換えるのは割と一般的な話じゃないの。
826 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/10(日) 00:50:07 ] >>816 ruby脳とか言われるのは癪ですが、 何でもまずは自分で作ろうとせずに探すべしとおじいちゃんに言われましたもので。 自己解決しましたのでもういいです。
827 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/11(月) 10:50:41 ] 自分で探す努力をしない姿勢を批判されてるのになぁ 開き直りもいいとこだな
828 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/11(月) 10:53:55 ] それがruby脳
829 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/11(月) 10:59:00 ] >>827 「開き直り」の用法を間違えてます。 自己解決 → 開き直りではない 解決してないけど解決する必要はないと言い張る → 開き直り
830 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/11(月) 11:28:49 ] > 態度を改め、まじめに応対する。また、観念してふてぶてしい態度に出る。居直る。 > 急に態度を変えてきびしくなる。覚悟をきめて、ふてぶてしい態度に変わる。いなおる。
831 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/11(月) 21:41:31 ] 言葉遊びならどっかいってやれよ
832 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/11(月) 22:14:14 ] 言語遊びも似たようなもんだ。
833 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/11(月) 22:15:20 ] また開き直ってるよこの基地外
834 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/11(月) 22:44:12 ] 「開き直る」の用法を間違えています。
835 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/12(火) 17:40:04 ] うへー この粘着っぷりは女だな きめえ
836 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/14(木) 14:37:21 ] >>835 おまえがきもい
837 名前:名無しさん@お腹いっぱい。 [2010/01/21(木) 15:48:46 ] (1)最大10人の、3科目(数学、英語、国語)の成績データ(整数)がある。 最初に人数を入力し、そのあと人数分の3科目の成績を入力すると、各科目の平均点を小数点以下2桁で表示するプログラムを作成しなさい 。 ただし、10を超える人数を指定した場合にはエラーメッセージを表示して終了すること。 (2)個々の成績を格納する配列を1つの2次元配列に改造し、動作を確認しなさい。
838 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/21(木) 15:55:53 ] >837 学校のプログラム課題の質問にはお答えいたしかねます
839 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/21(木) 19:31:04 ] >>837 #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAXNUM 10 #define MAXDAT 3 #define MAXBUF 4096 int main(int ac, char **av) { int i, j, k; int points[MAXDAT][MAXNUM + 1]; char buf[MAXBUF]; char *dat[] = {"Mathmatics", "English", "Japanese"}; fprintf(stdout, "Number of persons = ? "); fgets(buf, sizeof(buf), stdin); sscanf(buf, "%d", &i); if(i < 0 || i > MAXNUM){ fprintf(stdout, "Please input number 1 - 10\n"); return 1; } for(j = 1; j <= i; j++){ fprintf(stdout, "Person %d 's Mathmatics, English, Japanese = ? ", j); fgets(buf, sizeof(buf), stdin); sscanf(buf, "%d, %d, %d", &points[0][j], &points[1][j], &points[2][j]); fprintf(stdout, "%d, %d, %d\n", points[0][j], points[1][j], points[2][j]); for(k = 0; k < MAXDAT; k++){ if(j == 1){ points[k][0] = 0; } points[k][0] += points[k][j]; } } for(k = 0; k < MAXDAT; k++){ fprintf(stdout, "Average %s = %.2f\n", dat[k], (double)points[k][0] / i); } return 0; }
840 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/21(木) 20:29:02 ] #!/usr/bin/awk -f BEGIN { getline; NR = 0; if ($1 > 10) { print("Too many recs"); exit }} { for (i = 1; i <= 3; ++i) sum[i] += $i } END { for (k in sum) printf("%.2f ", sum[k] / NR); printf("\n"); }
841 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/21(木) 20:30:42 ] 少なくともループ使わないぐらいのボケはかますべきだろ
842 名前:名無しさん@お腹いっぱい。 [2010/01/23(土) 22:22:26 ] ソラリスだけコードを変えたいんですが、 #ifdef __solaris__ ってやっても無視されます、ヘルプお願いします
843 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/23(土) 22:28:28 ] >>842 docs.sun.com/app/docs/doc/820-1209/bjapy __sun を使えばオケ。
844 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/24(日) 07:52:48 ] >>843 それだと、SunOSまで含まれるから不可。 (dosc.sun.comって間違いあるんだね) 正しくは、買収されたので __oracle__ を使う。
845 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/24(日) 13:11:04 ] >>844 uname すれば分かりますが Solaris は SunOS ですよ。 間違い易いポイントだとは思いますが。
846 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/24(日) 13:47:23 ] >>845 だから、SunOSを除くSolarisだけで場合分けしたいんだよ。 __sunは、SunOSでもSolarisでも定義されてる。だから__sunは不可。
847 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/24(日) 14:04:36 ] __SunOS_n_nで列挙しろ。
848 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/24(日) 14:19:18 ] >>846 だから、SunOS を除く Solaris という物は存在しないんだよ。 お前さんは質問者じゃないんだろ。勝手に不可とか決めるなよ。 docs.sun.com は間違っていないし、今時 Solaris じゃない SunOS を除外する理由なんて無いだろ。 ネタだとしても、次からはもっと面白いレスを頼みますよ。
849 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/24(日) 14:28:36 ] >>846 #if defined(__sun) && !defined( __SVR4)
850 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/24(日) 15:08:06 ] >>849 ありがとうございました。できました。 >>843 >>845 >>847 >>848 すみませんが、ありがたくありませんでした。
851 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/24(日) 15:10:05 ] つまんないからもういいよ
852 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/24(日) 15:13:15 ] >>849 おいおい、それはSunOSの場合だろw Solarisなら、 #if defined(__sun) && defined(__svr4) >>850 は本当に試したんだろうか?
853 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/24(日) 15:15:41 ] Solaris = 「RedHat」やら「Ubuntu」やらと同じ、ディストリビューションの名前 SunOS = 「Linux」と同じ、OSの名前
854 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/24(日) 15:20:10 ] >>852 ありがとうございました。今度こそできました。 Solarisの他にSunOSもまだあって、 SunOSの方はFreeBSD等と同じソースでビルドできるので、 Solarisの場合だけ場合分けしたかったのです。 助かりました。
855 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/24(日) 15:24:01 ] libucb
856 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/24(日) 15:46:57 ] もう少し面白いネタキボンヌ。
857 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/26(火) 11:46:44 ] Python で rlwrap もどきを作ろうとしていて、大体は動いているのですが、 最初にタイプした1文字だけが2回エコーされてしまいます。 どうしてか教えていただけないでしょうか。 codepad.org/JUkKghqq 環境はCentOS 5.3 / Python 2.4 です。
858 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/26(火) 14:51:52 ] pc12.2ch.net/test/read.cgi/tech/1253535109/
859 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/01/26(火) 23:03:20 ] もしこれがCで書かれていたら、「K&R読め!」で解決する問題か?
860 名前:名無しさん@お腹いっぱい。 [2010/02/06(土) 21:35:51 ] readv()で読んだデータがバッファより短かった場合でも、 struct iovecのiov_lenが元の値のままです。バグでしょうか? どうやってデータサイズを知ればいいんでしょうか?
861 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/02/06(土) 22:15:02 ] man良く読んでご覧。OSのバグという事にしたがるのは100年早い。 Each iovec entry specifies the base address and length of an area in memory where data should be placed. The readv() system call will always fill an area completely before proceeding to the next.
862 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/02/07(日) 08:39:08 ] >>861 man良く読んでご覧。引用した部分だと「今のバッファを完全に満たしてから 次のバッファに移る」ことを言ってるだけで、データが足りなかった場合の 答えになってない。 man引用しただけで解答になってることにしたがるのは100年早い。
863 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/02/07(日) 10:57:56 ] >>862 煽って回答聞こうなんて随分古い手つかうな。www これで理解出来ないなら、プログラム作るのは100年早い。
864 名前:862 mailto:sage [2010/02/07(日) 11:03:18 ] >>863 俺、回答者の間違いを指摘しただけだし。 質問してるわけじゃないし。
865 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/02/07(日) 11:07:46 ] >>864 理解出来ないバカが横から割り込んだ事にしたいのか? 必死だな。ww お前がプログラムにつまずいていてもオレは全然困らない。
866 名前:862 mailto:sage [2010/02/07(日) 11:12:08 ] おそらく >>861 は、"always fill" だけを読んで 「バッファは常に満たされる(満たされないことはあり得ない)」と 誤解したんだろう。そのあとの "before" の条件を読み落してる。 で、>>860 が質問してるのは、バッファが満たされなかった時の そのサイズ等の取得方法。manを参照するとしても、 >>861 の部分ではポイントがズレてる。 ちなみに、俺は質問してるんじゃないので、正解は知ってる。
867 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/02/07(日) 11:13:20 ] 俺も >>861 は意味不明だと思ったよ 質問者は iov_len がなぜか更新されない。バグか?、って訊いてるのに 関係無い引用して論破したテイになってるのが不思議 そもそも >>861 以降 >>860 の質問に誰も答えてないことの方が あれなわけだけど
868 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/02/07(日) 11:18:24 ] そんなに、必死に弁解するなよ。w
869 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/02/08(月) 10:10:34 ] つーかmanよく読めって言うにしても>>861 は指摘する場所が見当違いだわな
870 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/02/08(月) 10:33:23 ] 全力で工作中だな。 お前のプログラムが完成しなくてもオレは全然困らない。
871 名前:名無しさん@お腹いっぱい。 [2010/02/08(月) 11:44:01 ] 複数の数字に,同じ四則演算(+,−,*,/)を繰り返した計算結果を表示するシェルスクリプトを,cshシェルスクリプトで書け。 (基本仕様) @ コマンドとして実行できる.(シェルコマンドである.) A 入力した数字を計算できる. B 入力できる数字の個数は2以上とする. C 四則演算子(+,−,*,/)を選択,または直接入力して 数字1□数字2□・・・□数字N (□=+ or − or * or /,N≧2) の計算結果を出力する. D 四則演算子以外の記号が入力された場合,エラーメッセージを出力する. (ポイント) ? シェルコマンドにするには,スクリプトの最初に(#!で始まる)おまじないを書く. ? 標準入力から文字列を入力するには $< を用いる. ? コマンドラインに引数を指定した場合は,その引数は変数$argvに格納されている.その各要素を参照するには,$argv[1],$argv[2](または$1,$2)などとする. ? 四則演算には @ コマンドが使用できる.(ただし,整数しか扱えない.) 誰かわかるひとお願いします
872 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/02/08(月) 11:54:10 ] あぁ、マルチか。 つられちゃったw てへっ?☆
873 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/02/08(月) 21:58:41 ] csh って事はネタ振りかな?
874 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/02/08(月) 22:06:01 ] pc11.2ch.net/test/read.cgi/linux/1265164112/159 pc11.2ch.net/test/read.cgi/linux/1238764663/552 pc12.2ch.net/test/read.cgi/unix/1246408968/928 pc12.2ch.net/test/read.cgi/unix/1127388574/871 pc12.2ch.net/test/read.cgi/unix/1246408968/928
875 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/03/19(金) 18:45:39 ] >>873 日本は義務教育で基礎法学を教えないからわかってない人が多いみたいだけど、権利と義務は表裏一体、つまりワンセットなんだよ 例えば「生きる」という権利には「働く」という義務が伴なう。これは習っていなくたって誰でも常識で分かると思うけど 社会の中のあらゆる権利にはそれと対になる義務が存在するということ 戦後の日本人はこの表裏一体を勘違いして、自分の権利は相手の側から見ると義務なんだ、等と意味不明な屁理屈を捏ねて 相手(多くの場合国家)に対して一方的に権利を主張、すなわち義務の履行を求める者が多い いわゆるプロ市民と呼ばれる物共だ 日本人が彼らのような人間(一方的に権利を主張するだけの個体がそもそも人間の定義を満たすのかどうかは疑問だが)に違和感を覚えないのは もちろんマスコミの罪でもあるけど元を糾せば教育にも決して原因が無い訳ではない
876 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/03/20(土) 09:06:17 ] なにがおもしろくてこんなバカ丸出しのコピペをするんだろ。
877 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/03/20(土) 11:37:21 ] >>875 了解 漏れも基礎方角を学んで起きたかった
878 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/03/20(土) 11:39:49 ] >>873 は俺なんだが。