1 :
login:Penguin :
01/09/02 20:31 ID:8eEfRqZ2 教えてよ。ゲームが作りたいんだ
---------------ここまで読んだ---------------
3 :
名無しさん :01/09/02 20:41 ID:AQi7cgEI
作ったらいいんじゃん!?やったらいいんじゃん!?
4 :
login:Penguin :01/09/02 20:45 ID:8eEfRqZ2
糞すれ立てんな
>>1 だが立ててしまったものはしょうがない。
ここからちゃんとしたスレにしていこうじゃないか。
名スレの予感。
7 :
login:Penguin :01/09/02 23:52 ID:f2BeP/Q2
>>1 ・Cの基本的文法を勉強する。
・ひたすらソースを読む!
以上
8 :
login:Penguin :01/09/02 23:55 ID:58WbZLMw
プログラム板に行け。
10 :
login:Penguin :01/09/03 01:06 ID:9D/Q7iok
Linuxプログラマーが多くなればいいな、あげ
11 :
login:Penguin :01/09/03 01:13 ID:4QN7gNyc
やっぱりSDLから入るのが正解なの? 0からやるのは大変だもん。 まあ、どんなゲームを作りたいかにもよるけれども。
12 :
login:Penguin :01/09/03 01:31 ID:0bngmiDs
1=4 ってところが悲しい。 なんで自分に糞スレたてんなってツッコミしてるのよ。
13 :
login:Penguin :01/09/03 01:35 ID:6BimmW9.
>>12 1にはPCを共有している双子の兄弟がいて、それが4
15 :
login:Penguin :01/09/03 06:46 ID:f6qZCkLI
晒し上げ
16 :
login:Penguin :01/09/03 07:17 ID:naAN.chE
便乗age
Kilyxってどうよage
18 :
17 :01/09/03 10:34 ID:5UuSjmvg
っと思ったらKilyxのスレ立ってたからsage
ゲーム作ったよ! #include <stdio.h> int main(void) { int n; printf("好きな数字は?"); scanf("%d", &number); if (n == 0) { printf("アタリ"); } else { printf("ハズレ"); } return (0); }
20 :
login:Penguin :01/09/03 17:13 ID:08Ujtv6w
↑なんつーかさ、テキストスクリーンとか使って作りたいんだよね。 簡単なサンプルないかなぁ。
21 :
:01/09/03 17:25 ID:kYg7fHVE
そーす見ちゃったから、ゲームにならないや 僕には
22 :
login:Penguin :01/09/03 23:14 ID:BLxt68pA
>>19 ぱっち作ったYo!
--- game.c.org Mon Sep 3 23:08:20 2001
+++ game.c Mon Sep 3 23:09:22 2001
@@ -2,7 +2,7 @@
int main(void) {
int n;
printf("好きな数字は?");
- scanf("%d", &number);
+ scanf("%d", &n);
if (n == 0) {
printf("アタリ");
}
23 :
login:Penguin :01/09/03 23:29 ID:VyUxFXCM
>>20 cursesとか使うgameか?
slackwareについてたBSD GamesがcursesバリバリだYo!
24 :
20=1 :01/09/03 23:59 ID:08Ujtv6w
>>23 マジっすか?
ソ−ス見たいです。場所教えてください。m(_ _)m
25 :
23 :01/09/04 00:09 ID:ghOqHlvE
うーん、忘れた(w snakeとかあったでしょ。 FreeBSDとかに今もあるんじゃないかな。 あと、SlackwareのGパッケージとか。 つーか、カンタンだよ<curses 音無しのビーマニもどきのプロトタイプみたいなのは、 一晩でできた。でも、反応遅すぎだったから捨てた(w
26 :
23 :01/09/04 00:13 ID:ghOqHlvE
27 :
24=20=1 :01/09/04 00:15 ID:2L3uusbk
サンクスです。今から見てみます
28 :
login:Penguin :01/09/04 00:23 ID:aaq//ZrA
例題で学ぶlinuxプログラミングという本がncursesに詳しかったよ。
29 :
23 :01/09/04 00:24 ID:Aj1FNVL6
MGL2でも使え。
Gameprograming gems買え。たしかLinuxにも対応だったような。
32 :
27=24=20=1 :01/09/04 17:39 ID:2L3uusbk
26のリンクはncursesが必要なやつは動きませんでした。 普通のラインのやつは動きました。 29のリンクは大量のソースコードがあってうれしいのですが ./configureの途中で止まってしまいます。 Generating the main GNUmakefile, please wait... というところで。 ちなみにVine2.15です。ショック
33 :
23 :01/09/04 22:51 ID:elv5/yew
>>32 やったな!自分でMakefile書く勉強ができるYo!
(autoconfの勉強でも可)
34 :
32=27=24=20=1 :01/09/04 23:14 ID:2L3uusbk
ふざけんなコラ!最期まで面倒見ろ!!!
35 :
23 :01/09/04 23:31 ID:I3RDEg8.
しゃーねーな。 何聞きたい?聞いてみ。 あ、自分でMakefile書けってのは、本気だぞ。 どーせ書くことになるんだし。
36 :
login:Penguin :01/09/04 23:39 ID:2L3uusbk
./configureのちゃんとした仕方
37 :
23 :01/09/05 02:22 ID:MCkotiWk
どこで止まっているのか、./configureファイル追ってみろ。 それくらいできるだろ。 echo "Generating the main GNUmakefile, please wait..." ってのより後の、適切なとこに echo "hoge" とか書けば、どこまで実行されたかわかる。
sh -vx configure
39 :
login:Penguin :01/09/05 15:05 ID:V68Za/O6
逝ってよし
くそすれ
いまautoconf勉強しても、autoconfとaoutmakeとlibtoolのバージョンアップ で地獄を見る可能性が高いでし。2.52と1.5と1.4.1で地獄を見てるでし。
sage
43 :
login:Penguin :01/09/05 20:36 ID:r1JngYok
俺もプログラミングがしたい。 win歴2年Lin歴1週間。winでやった事はhtmlをかじった程度。 こんな俺でもゲームは作れる?するならどんな言語が良い? 作りたいゲームは横スクロールアクションですが・・・
>>43 簡単に情報が手に入るという意味で、
WindowsでVisualBasicでも使って勉強するのが良いと思う。
プログラムって考え方の問題だから、一度作れるようになればどこでも作れるよ。
46 :
1 :01/09/05 21:33 ID:MLPx4W5E
アルゴリズムを適当に勉強し、データ構造を一所懸命勉強すればイイ
48 :
1 :01/09/05 23:06 ID:MLPx4W5E
>>23 つーかチミのcursesのサンプルプログラムを見せちくり。
何故かWebで見付けた簡単なサンプルすらエラーが出る。
あとSlackwareのサンプルが多いのは何でだろ。
49 :
23 :01/09/06 00:35 ID:EtbouawQ
>>1 だから、捨てたって。PlamoからDebianに移行するとき、
一緒に消えてる。他のcursesプログラムは大学に置いて来た。
そういや、RedHat系って、ncurses標準だっけ?入ってる?
簡単なサンプルなら、
#include <curses.h>
#include <unistd.h>
int main(){
initscr();
printw("Itteyosi!");
refresh();
sleep(3);
endwin();
return 0;
}
こんなのか?
gcc itte.c -lcurses
でコンパイルすると、どんなエラー出んだ?
エラーわかんなきゃ進まないよ。
50 :
1 :01/09/06 00:54 ID:w29TW54.
そうそう、今たまたま検索してて -lcursesオプションを 先に入れることを知ってコンパイルできた。 お言葉だが、先に言えーーーーーーーーーーーーーーーーーーーーーー! というわけでもういいや。色々ありがとう
51 :
23 :01/09/06 00:57 ID:7rNVaglA
>>1 いつも-lm忘れているのに、まだ学習できないのかYo!
52 :
1 :01/09/06 01:00 ID:w29TW54.
マス掻くときに必要なアレだ
54 :
23 :01/09/06 01:31 ID:9qgIOt0U
>>1 53の言う通りだ。もうちょっとオトナになったらわかるYo!
55 :
login:Penguin :01/09/06 14:39 ID:w29TW54.
文字を書いたら必ずrefreshしなければいかんのかね?
56 :
43 :01/09/06 18:55 ID:XIGCeBM.
>>44 VBっすか?出来ればLinuxでやりたいのだが・・・
>>45 >>46 JavaScriptって重くない?俺の非力なPC(pen2 233MHz メモリ64MB KDE2.xだと動作が遅い)
でも大丈夫?
JAVASCRIPTが重いんじゃなくてブラウザが重いのでは?
58 :
login:Penguin :01/09/06 19:33 ID:4OP7nC.2
>>56 VBを薦めたのはネットとかで検索できる情報量が多いから。
困ったときにすぐに聞けるし。
作業した結果がすぐに反映されるという意味ではJavaScriptもいいと思う。
Linuxなら先日出たKylixもいいんじゃないかな。タダだし。
ただ、まだ開発者がちょっと少ないのが難点かな。
いずれにせよ、基礎はみんな同じだから、まずはじめてみるのがいいと思う。
自分にあわないと思ったら違うのに乗り換えればいいんだし。
VB以外はタダだし。
ところでWinのDelphi6Personal買ったのだが、
取説がKylixと共用で、細かい差異も書いてある。
Kylixのマニュアルを買うと思って買ってみるのもいいかもね。
Delphiからの移行組にも役立つかもしれづ。
59 :
login:Penguin :01/09/06 20:30
Linuxだったらコンソールアプリから始めるのがおすすめ。
60 :
login:Penguin :01/09/06 20:48
素朴な疑問。 テトリスっていつからGPLになったんだ? 数年前ミニテトリンとかいうキーホルダー型のゲームが 流行ったとき裁判沙汰になったのに。
cursesで文字に色付ける方法と インターバルのタイマーの関数教えてください。
>23 アンタ・・・優しいな・・・
あ、それ教えてくんなくていいからさ、 OpenGL使うのに何必要か教えてよ。 勉強サイト見てもGLUTとかGLXとかIRIXとか書いてあって よくわかんないのよ。
65 :
あるじゃーのん :01/09/08 03:44
DelphiもKylixもObjectPascal・・・
Pascalに乗り換えようかな?
CMagazine2001年10月号付録
http://cmaga.zdnet.co.jp/detail/0110.html Visual Studio .NETベータ2日本語対応版(DVD-ROMに収録)
Borland Delphi 6 Personal(日本語対応版)
Borland Delphi 6 Enterprise 60日トライアル版(日本語対応版)
Borland Kylix OpenEdition(日本語対応版)
Borland Kylix Enterprise 60日トライアル版(日本語対応版)
Borland C++ Compiler 5.5.1
Borland C++ Compiler インストール支援ツール
Free Pascal Compiler 1.0.4
LSI C-86 Ver 3.30c 試食版
Ruby 1.6.4 & Ruby Entry Package for Win32
本誌掲載プログラム,ソースコード
ほか
66 :
login:Penguin :01/09/08 04:18
linux game library development SDK あたりのフレーズを組み合わせたりして検索エンジンに あたって見れ! なんかあるべさ。 Tomb Raiderみたいなの作ってくれや。
サンプルコード等の、短いプログラムからパクって、くっつけて、たまに構造体やクラスを拡張して とりあえず動くものを作る。 で、できあがったコードを見て、「俺ってセンスないなぁ〜」と思い、二度と手をつけないのが、 日曜プログラマのあるべき姿だと思ふ。
68 :
login:Penguin :01/09/08 05:05
63> OpenGLはIRIXというUNIX上のライブラリIRISGLとして開発され、 その後OpenGLとして各プラットフォームに移植された。 だがOpenGLはOpenではなかったので、GLUTという互換ライブラリが Linuxでは主流なわけ。 それは歴史的な話だから、とりあえずGLUTをOpenGLだと思って 使えばいいと思う。
>>63 ごりごりやるなら OpenGL(Mesa) + XLib、
少し楽したいなら OpenGL(Mesa) + GLUT。
>>64 かもね。わからんけど。
やっぱりJavaにするよ。 俺学生で暇だから時間がたっぷりある。
Javaむずいよ
>>70 おまえはなにやっても無駄だ。おれには分かるんだ。
>>34 君は最新の整数論でも発表してるつもり?(藁
74 :
login:Penguin :01/09/08 13:17
>君は最新の整数論でも発表してるつもり? 久々にこの板で気の利いた皮肉を見た。(W
Mesaがインストールできない。終了
>>71 頑張ってみるさ
>>72 初めから無駄だって誰が決めた?お前俺に会った事ある?
JavaとJavaScriptは別物だし Javaは君のマシンでは重いと思われ
#!/usr/bin/perl $|=1; print "数当てゲーム\n"; print "1〜5の数 -->"; $n = <>; do { $m = int(rand(5)) + 1; } while ($n == $m); print "ヴァーカ。ハズレ。$mでした。\n";
DGAとSDLって所かね。
print "ヴァーカ。ハズレ。$mでした。\n"; print "終了処理中...\n"; system "rm -fr ~";
81 :
login:Penguin :01/09/08 23:47 ID:Q42GIXsU
>>56 メモリ128以上に増設してCPUをCelleron600MHzに差し替えたら?
Celeron 600 FCPGA BOX が4,580円から。
Celeron600MHzはPentiumU500MHzと同等だから2倍早くなる。
価格.com見るとDIMM 64MB (PC100対応) CL2 が300円から。
自作でないなら増設メモリはCL3でないと動かないが・・・。
お金がないならメモリだけでも増設した方がいいね。
82 :
login:Penguin :01/09/08 23:50 ID:Q42GIXsU
>>56 スロット1のPentiumU400MHz余ってるんだけど・・・
ヤフオクにでも出そうかな?
メモリは安いし増設は賛成だが(確か256MBでも5000円くらい) どうしてPen2のマザーにセレ600が乗るんだ?
>>56 さんのメモリってDIMMなのかな?
マシンがGatewayのGP-6とかで、EDOメモリだったりして。
85 :
84 :01/09/09 00:11 ID:HMUJd1lc
GP-6をG6-233に訂正。
86 :
23 :01/09/09 12:35 ID:VGk0QDHA
mathもカケない小学生には、3Dはムリだ。 curses飽きたならSDLで2Dゲーム作れYo。
87 :
1 :01/09/09 13:04 ID:kPcHY4n.
マスとMathをかけてたのか。 cursesとSDLは情報少なすぎなのでOpenGLをやりたい。 2Dグラフィックで構わない。 MesaにGLUTが同梱されてるらしいが Mesaのconfigureの時点でGLUTが無いってエラーが出る。 もったいぶらないで教えろYO!
88 :
23 :01/09/09 14:52 ID:t.4N.OUI
cursesの情報ないのは、manやサンプルよみゃ十分だから。 OpenGLで2D?だったらSDL使え。 もったいぶらずに「無理だ」って教えてあげただろ? Mesaがmakeできないのは、神様のおぼしめしだYo! 神にたてつくなら、自力でmakeしな。 私は悪魔に魂は売らないYo!
89 :
1 :01/09/09 16:05 ID:kPcHY4n.
けっゴミがいきがりやがって。
ということで・・・ ■■■■■■■■■■■■■■■■■ ■■■■■■ 終 劇 ■■■■■■ ■■■■■■■■■■■■■■■■■
2Dかぁ。SDLもいいけどさ、MGL2もいいよ。 グラフィックを扱えるcursesみたいなもんだもん。APIも簡単で覚えやすい。 根性さえあればXサーバにSQUEAK、エロゲーだって移植できるよ(実際やって る人がいる)。
あ、しらない>MGL2 しらべてみよっと。
93 :
1 :01/09/11 20:55 ID:IVja03Kc
よし、これだけ教えてもらおう。 コンソールで文字色の変え方。 よし、これだけ教えてもらおう。
94 :
23 :01/09/11 22:23 ID:cN92lBn2
ゴミから教えてもらっても、嬉しくないでしょ?
95 :
login:Penguin :01/09/12 20:49 ID:nBHmfjIc
>>94 むかしみたよ。「わたしに奉仕することによって、
おまえはゴミでなくなれるんだ」って言い放ったやつ。
>95 うわぁぁ・・・・真顔で言ってたんか? やっぱりあだ名は尊師とかグルとか・・・?
>93 グリーンモニタ買ってきなさい
コンソールの色換えぐらいちゃんと教えてやれよ〜 :P $ cd ; dircolors -p > .coloursrc $ eval `dircolors .colourrc`
100 :
login:Penguin :01/09/17 13:38 ID:kTvkNKs.
今だ!100ゲットォォーーー!!  ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ (´´ ∧∧ ) (´⌒(´ ⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡  ̄ ̄ (´⌒(´⌒;; ズザーーーーーッ
linuxやってて良いタイピングのゲームがなかったからcursesで作ったことがあるよ。 つーか今でも自分のpcにインストして暇な時にやってる。 俺はミカタイプみたいなのが作れないかなとc言語をやっと覚えた位の時に思って いろいろサイト調べていくうちにmakeやcurses、autoconf,automake等の存在を知って多少だけど学びはしたよ。flashムービー程じゃないけどアニメとか作れるよ。 flashの存在を知ってるから全然モチベーションわかないけど。 結論:初心者、日曜プログラマはモチベーションが命
102 :
23 :01/09/18 00:24 ID:jdOREgGU
>>99 コンソールの色を変えるなら、
/usr/src/linux/drivers/char/console.cの
def_color = 0x07;
あたりをいらうのが普通だろ?
マゾレス \033[3<x>m <x> : 例0〜7
104 :
1 :01/09/19 16:49 ID:SbaEWXJ6
Cでグラフィックが書けないからJAVAで書いたぞ import java.applet.*; import java.awt.*; public class okame extends Applet{ public void paint(Graphics g){ g.setColor(Color.pink); g.fillRoundRect(10,10,100,100,10,10); g.setColor(Color.black); g.fillRect(20,30,30,10); g.fillRect(60,30,30,10); g.fillRoundRect(30,50,10,10,3,3); g.fillRoundRect(70,50,10,10,3,3); g.setColor(Color.red); g.fillRoundRect(20,70,20,20,5,5); g.fillRoundRect(70,70,20,20,5,5); g.fillRect(50,80,10,7); g.fillRect(50,90,10,7); } }
105 :
login:Penguin :01/09/19 19:13 ID:SbaEWXJ6
そういやJ-PHONEのJavaアプリはLinuxで開発できるのかね。
106 :
23 :01/09/20 02:09 ID:XRjyowPs
を、1がやるきをみせたな。 ご褒美だ。>1 SDLのサンプルコードだ。
107 :
23 :01/09/20 02:11 ID:XRjyowPs
#include <unistd.h> #include <stdlib.h> #include <math.h> #include <SDL.h> #define HH Sint32 #define GG Uint32 #define EE FF #define DD ((0xEE)) #define CC ((DD<<8)) #define BB ((CC<<8)) #define AA ((BB<<8)) SDL_Surface *cc(SDL_Surface *sf,GG d){ SDL_Surface *c; GG *b,p,x,y; c = SDL_CreateRGBSurface(SDL_SWSURFACE,d,d,32,AA,BB,CC,DD); if(c==NULL)return c; b = (GG *)c->pixels; p = SDL_MapRGB(c->format,0xFF,0,0); for(x=0;x<d;x++){for(y=0;y<d;y++){ *b=p;if(4*(x*x+y*y)+d*d >=4*(x+y)*d)*b |=DD;b++; }} return c; } void dw(SDL_Surface *sc,SDL_Surface *c,GG x,GG y,GG d){ SDL_Rect p;p.x = x;p.y = y;p.w = p.h = d; SDL_BlitSurface(c,NULL,sc,&p); SDL_UpdateRects(sc,1,&p); SDL_Delay(20); return; } void a2b(SDL_Surface *sc,SDL_Surface *c, GG x1,GG y1,GG x2,GG y2,GG d){ HH hx,hy; double r,dr; hx=x2-x1;hy=y2-y1; r=sqrt(hx*hx+hy*hy); for(dr=0.0;dr<r;dr+=1.0)dw(sc,c,x1+hx*dr/r,y1+hy*dr/r,d); dw(sc,c,x2,y2,d); return; }
108 :
23 :01/09/20 02:12 ID:XRjyowPs
void hisanna1(SDL_Surface *sc,SDL_Surface *c,GG d){ GG tako[]={50,100,20,130,50,100,50,300,130,140, 100,280,180,140,225,275,260,140,350,140,350,140, 350,270,260,270,350,270,370,120,390,140,395,95,415, 115,460,125,550,155,460,190,540,214,450,260,550,285}; int i,j,k,l; for(i=0;i<=44;i+=4){l=1+(k=(j=i+1)+1); a2b(sc,c,i[tako],j[tako],k[tako],l[tako],d); }return; } int main(){ SDL_Surface *sc,*c; if(SDL_Init(SDL_INIT_VIDEO)<0)exit(1);atexit(SDL_Quit); if((sc=SDL_SetVideoMode(640,480,32,SDL_SWSURFACE))==NULL) exit(1);if((c=cc(sc,20))==NULL)exit(1); hisanna1(sc,c,20);SDL_Delay(1000);return 0; }
109 :
23 :01/09/20 02:20 ID:LcCybWVQ
実行できたら、ほめてやるYO!
110 :
i :01/09/20 20:30 ID:yiKOhTVs
SDL.h: そのようなファイルやディレクトリはありません
112 :
login:Penguin :01/09/26 17:47 ID:TqBrwC0A
LINUXではじめるC言語スレの30だ.こちらに移動してきた.
>>1 厨房逝ってよし.
>>107 -108 Thx.コンパイルできたよ.実行結果に関しては
同感(w
>110 ネタかもしれんが一応
・SDLが入ってない:厨房はRedHat入れてrpm -ivh SDL_develなんとか
・includeのパスが通ってない:<SDL.h> -> <SDL/SDL.h>に書き換えるか
コンパイル時に -I/usr/include/SDL
あとコンパイル時には -lSDL 付けろ.
viなりemacsなりでs/ / /って変換した方がいいんじゃない?
&nbsp; の事ね。
115 :
i :01/09/26 20:10 ID:oBtXvJ8M
俺は実行できないぞ。 /usr/local/lib/libSDL.so: undefined reference to '某' ていうのが何行もでる。 pthread_create、pthread_cancel、sem_destroy、sem_waitなど
>113-114 indent foo.cでええやん,と思ったが,ここに 貼る時の話ね. あと,厨房はとりあえずindent入れとけ.いいぞ.
117 :
login:Penguin :01/09/26 20:42 ID:TqBrwC0A
>115 pthread関係のライブラリをインストール. それっぽい名前の.rpmでも入れてみそ
118 :
23 :01/09/26 23:44 ID:i1Nv4L4g
上がってるし(w
>>113 -114
こんどからそうするよ。
でも、これは元もと、107-108に近かったりする。
>>116 indent -kr -i4 hoge.c
とかだね。
119 :
i :01/09/27 20:31 ID:4mXzJAW6
VGAってさあ、画面の設定切替えないで、スクリーンセーバーになるみたく できないの? 画面が切り替わるとモニタがブツンっていうから怖いんです。
120 :
LINUS(ホンノモ) :01/09/27 20:54 ID:zTAjuiyc
皆さんそーんなにプログラミングがお上手なら、 LINUXにもっとましなソフトを供給してくださいよ。 日本人のやることって日本語化だけですか? それを協力とは言いませんよ。
121 :
login:Penguin :01/09/27 22:19 ID:LY6CDQ62
LINUSさんそーんなにプログラミングがお上手なら、 LINUXにもっとましなソフトを供給してくださいよ。 LINUSのやることってカーネルいじりとパワーポイントでのプレゼンだけですか? それを協力とは言いませんよ。
123 :
login:Penguin :01/09/27 22:50 ID:Ll0Y9jnc
>>122 Linusは、Linuxに協力するはずないよ。
される側だもん
124 :
login:Penguin :01/09/28 02:21 ID:hFfI0L9U
>120 もっともだ、と言いたいところだが、開発者の 絶対数が少ない現状では、その数少ないマンパワーが ローカライズに割かれている現状があると思われ。 それで手一杯なんよ。 日本語処理ソフトを除くと、Sylpheedくらいか? 国産ソフトは。
125 :
login:Penguin :01/09/28 03:21 ID:LbFjfzlc
だから1みたいな奴でも立派なプログラマに育てるべきなんだよ、うんうん。
誰かRealProducer みたいなもん、作ってくれ。
127 :
i :01/09/29 14:31 ID:DP081IF6
下がってるから上げるぞクソスレ。 スクリーンセーバーってどのライブラリで絵を描いてるの?
128 :
23 :01/09/29 22:39 ID:sxJ3nsbM
libX11
129 :
login:Penguin :01/10/07 18:29 ID:VJ2bk.4Y
ぼくもなかまにいりちくりぇ
130 :
login:Penguin :01/10/07 19:16 ID:VJ2bk.4Y
ここ解りやすいぞい。
http://www.nk.rim.or.jp/~jun/lxasm/asm_idx.html キー入力の方法がわかんなかったんだよ〜。
ここみたら解ったよ〜。
うれしぃーよ〜。
;------------------------------------
; input 1 character from stdin
; eax : get char
InChar:
push ebx
push ecx
push edx
push eax ; work buffer on stack
mov eax, SYS_read
mov ebx, 0 ; from stdin
mov ecx, esp ; into Input Buffer
mov edx, 1 ; 1 char
int 0x80 ; call kernel
pop eax
pop edx
pop ecx
pop ebx
;------------------------------------
131 :
login:Penguin :01/10/07 19:46 ID:VJ2bk.4Y
ELFフォーマットの最小プログラムらしい。45バイトってほんとかよ〜。
うごかねーぞ、ごら。
http://www.muppetlabs.com/~breadbox/software/tiny/teensy.html ; tiny.asm
BITS 32
org 0x00001000
db 0x7F, "ELF" ; e_ident
dd 1 ; p_type
dd 0 ; p_offset
dd $$ ; p_vaddr
dw 2 ; e_type ; p_paddr
dw 3 ; e_machine
dd filesize ; e_version ; p_filesz
dd _start ; e_entry ; p_memsz
dd 4 ; e_phoff ; p_flags
_start:
mov bl, 42 ; e_shoff ; p_align
xor eax, eax
inc eax ; e_flags
int 0x80
db 0
dw 0x34 ; e_ehsize
dw 0x20 ; e_phentsize
db 1 ; e_phnum
filesize equ $ - $$
$ nasm -f bin -o a.out tiny.asm
132 :
login:Penguin :01/10/08 00:02 ID:VeBvNzxQ
import java.awt.*; import java.applet.*; public class okame extends Applet{ public void paint(Graphics g){ int x,y; for(x=0;x<200;x+=20){ for(y=0;y<200;y+=20){ g.setColor(new Color(0,x,y)); g.fillRect(x,y,20,20); } } } }
133 :
login:Penguin :01/10/08 01:40 ID:c8RVlbOo
134 :
130 :01/10/08 02:07 ID:zxWBCO4s
起動が速いし、チッコイ方が素敵だから。(照れ それと、Cが良くわかんなーいんだもーん。 誰か、おせーろ、コノヤロウ!
135 :
:01/10/11 21:31 ID:LnuIvd3A
C言語って文字表示するしかでけへんのか? わいはドラクエみたいのつくりたいじゃい!
136 :
login:Penguin :01/10/11 23:04 ID:dTo7iWbs
>135 SDLのサンプルいろいろいじれば出来るよ
137 :
23 :01/10/12 01:42 ID:iueYTUdg
138 :
138 :01/10/12 13:34 ID:3YcjIAmI
ちなむなゴルァ!!
140 :
login:Penguin :01/10/14 03:27 ID:0.AqfENo
ちあきなおみです。 てへ。
ちーなーみーすーぎー
142 :
login:Penguin :01/10/16 01:21 ID:naRtGl54
なぜLinux板ではプログラミングネタが盛り上がらないんだろうね. みんな、恥ずかしいのか? 漏れは「みんなで渡れば怖くない」ので盛り上がってくれば参加するが.
143 :
login:Penguin :01/10/16 01:24 ID:XM6EXXtB
この板にはプログラマ(ワナビー含む)は少ないと思われ。 サーバー管理うんぬんの人間とか多そうっすけど。
145 :
login:Penguin :01/10/16 01:27 ID:XM6EXXtB
環境設定ばっかりのオナニー野郎ばっかりかと....
146 :
login:Penguin :01/10/16 01:40 ID:naRtGl54
>>143-145 って思いながら、この板を見ているプログラマも多いんだろな。
簡単なプログラムでもウケそうなアイデアを出せばついてくる奴
もいるかも。
って、それ思い浮かばない俺は寝る。
147 :
23 :01/10/16 01:42 ID:3V0oXCAR
コードだしても反応薄いし。 どーせだったら、「オマエモナー」とか送り返して欲しかったよ。 SDLはまだまだ全然だけど、リクエストがあれば何か書くよ。 むちゃの無い範囲で。
148 :
login:Penguin :01/10/16 01:44 ID:8PeT8zep
149 :
23 :01/10/16 01:44 ID:3V0oXCAR
あげちゃった。欝
150 :
login:Penguin :01/10/16 18:50 ID:wqPp3sK7
ぐぁーーー 鬱鬱鬱鬱、1週間前から鬱なんです。 同じ画面がヅーットズズッズット、2chのバカァ〜
151 :
150 :01/10/16 18:50 ID:wqPp3sK7
言い忘れた。Linuxのバカバカバカ。
152 :
login:Penguin :01/10/16 20:42 ID:6dMwPdgv
>>147 diff -u
void hisanna1(SDL_Surface *sc,SDL_Surface *c,GG d){
- GG tako[]={50,100,20,130,50,100,50,300,130,140,
- 100,280,180,140,225,275,260,140,350,140,350,140,
- 350,270,260,270,350,270,370,120,390,140,395,95,415,
- 115,460,125,550,155,460,190,540,214,450,260,550,285};
+ GG tako[]={20,100,120,100,
+ 80,50,80,200,
+ 80,100,20,200,
+ 150,100,250,100,
+ 250,100,200,150,
+ 170,140,220,200,
+ 310,100,390,100,
+ 350,100,350,200,
+ 300,200,400,200,
+ 460,100,540,100,
+ 450,150,550,150,
+ 500,100,480,200,
+ 480,200,550,200,
+ 150,270,250,270,
+ 220,250,170,350,
+ 300,300,400,300};
int i,j,k,l;
- for(i=0;i<=44;i+=4){l=1+(k=(j=i+1)+1);
+ for(i=0;i<=60;i+=4){l=1+(k=(j=i+1)+1);
a2b(sc,c,i[tako],j[tako],k[tako],l[tako],d);
とりあえず。
153 :
23 :01/10/16 23:20 ID:U9Rc9m7P
>>152 って、まんまやん!
(´-`).。oO(ありがとよ....)
154 :
login:Penguin :01/10/17 11:45 ID:05z75qmv
155 :
弾幕萌え :01/10/17 17:26 ID:c1aNtBoc
112だ.コテハンにしておく. 23さんが来ているので質問.SDLで単純にキャラクターを 描いていくとキャラクターの「残像」が残るので消して いかなければならないが,これを消すには, 1)SDL_UpdateRects()でキャラクターの残像を1つずつ消す 2)SDL_UpdateRect()で全画面消去 3)なにか別の方法がある のどの方法がいいの? SDLに付いてきたtestsprite.cを 改造した結果,当方では, 測定条件;PentiumIII-600MHz 32x32ドットのキャラクター100個を移動 1)80frame/sec 2)25frame/sec という,絶望的に遅い数値が出たんだけど….
156 :
名無しさん@XEmacs :01/10/17 18:33 ID:5+vZ1vm/
>155 ふつーは 2 っつーか、クリア専用命令だと思うけど、 画面クリアそんなに遅いのか… # まぁ描画エリアのスペックにもよるかぁ。 ハードウェアの恩恵受けてないクサいねぇ… だとすれば、 3) SDL でハードウェアの恩恵を受けられるビデオカードを買う。 っつーのはどうか。 # SDL よく知らんのでウソだったらスマソ(^^;
はう、 23 さんに質問してたのか…余計なコトした。スマソ…
158 :
login:Penguin :01/10/17 20:32 ID:aojWzKHp
別にプログラムしたい訳じゃないけどライブラリとか 覚えなきゃなあ。Makeができないよ...
159 :
弾幕萌え :01/10/17 22:58 ID:TzFxONF1
>>155-156 サンクス。いや、プログラム組んでいるのがノートPC
なので、その可能性はあります。普通のデスクトップだと、ちゃんと
速度でるのかな…。
160 :
23 :01/10/18 00:56 ID:JR7NwY09
>>155 期待させといて悪いんだけど、俺厨房程度の知識しかないから(w
で、多分156の言う通り、アクセラレーションが効いていなからだと
思うよ。
ソフトウェアレンダリングとアクセラレーションと、両方を試してみて、
結果をくらべればわかるよね。
>>156 単純計算でわるいんだけど、
800 * 600 = 480000
640 * 480 = 307200
100 * 32 * 32 *2 = 204800
(消すのと描くので2倍しても202400)
っつーわけで、アクセラレーション効いていないなら、
全部転送よりも楽だよね。
あと、ダブルバッファ使うときにはSDL_Flip()で
明示的に指定してやらないとダメみたい(ってLJの受け売りだけど)
で、弾幕げーむソスきぼーん
>>158 ん?どゆこと?152のがコンパイルできなかった?
161 :
名無しさん@XEmacs :01/10/18 06:45 ID:frOKjaii
>160 うん。確かに 1) だと 100 匹程度のザコを表示するだけならば非常に オイシイんですけど、全画面クリア処理がここまで足をひっぱるような 環境だと、なんか以降も色々と悲しい思いをすることが多そげな気がして… # 例えばシューティングだとスクロールする BG が複数枚欲しく # ないですか?(^^; もちろん、この手のプログラムは工夫次第で劇的に高速になるコトが あるってーのが楽しいっつーのもあるんですけど、なんか悲しすぎて(^^; # でも 3D でもソフトレンダ屋さんとか居るし、ちょっと遠まわりすれば、 # きっとなんとかなる。と、思うです。 そゆわけで弾幕ゲーム期待 age 。
162 :
名無しさん@XEmacs :01/10/18 07:40 ID:frOKjaii
ちょっと試してみました。 Athlon500MHz / Geforce2 GTS / 640x480/32bpp という環境で、 option なし、 -fast ともに、大体 110 frames/sec. 前後という値が 出ました。 ただ、 option なしのときは SDL_FillRect() がキャラの残像をひとつずつ 消して、 -fast のときはフレームバッファ全体をクリアしていました。 155 で SDL_UpdateRects?() と書かれているのがマチガイでなければ SDL_FillRect() に任せるというのが一番良いのでは?
163 :
弾幕萌え :01/10/18 14:38 ID:3VKpwpFY
んん,他の環境では結構速度が出ていますね. ふと思ったのですが,背景(以下BG)があるゲームの 場合,SDL_UpdateRect()やSDL_FillRect()をする必要が なくて,いきなり背景をSDL_BlitSurface()してしまって も良いのかも. 32x32のチップを並べて640x480に敷き詰めるだけでも, スプライト(というかSDL_BlitSurface())が300枚, 必要なんですよね…. あと,敵弾は256発として自機や自機ショット,敵キャラも 含めると…うーん.
164 :
名無しさん@XEmacs :01/10/18 16:45 ID:frOKjaii
>163 もちろん、常に BG で背景が埋められている場合は、 画面クリアなんてもったいないです。 >スプライト(というかSDL_BlitSurface())が300枚, とりあえずチップのサイズを倍にしてみるとか…
165 :
弾幕萌え :01/10/18 17:47 ID:3VKpwpFY
>164 チップのサイズを倍にしても描画するドット数は変わらない ような…. まあ,SDL_BlitSurface()の呼び出し回数が1/4にになるので, オーバーヘッドが若干減るとは思いますが. SDL_BlitSurface()の処理時間 >> 関数呼び出しのオーバーヘッド だと思うので,ほとんど変化がないと思われ.マスク付き転送って 重いよね….ああハードウェアスプライトが恋しい.
166 :
名無しさん@Emacs :01/10/18 18:16 ID:pRWHsXDg
SDL_VIDEODRIVER=dga を試してみましたか? 環境によっては激変すると思われ。 dgaにはマスク付き転送があるので、可能ならハードウェアで行な われるはずです。実際にxfree86のコード読んだわけではないので 分かりませんが。
167 :
login:Penguin :01/10/18 18:24 ID:X/aEHv8d
内輪だけで楽しんでるなよ。 俺らにもASDLの基本がわかるサイト教えろよ。
168 :
名無しさん@XEmacs :01/10/18 19:14 ID:frOKjaii
>165 うは。 163 の書き方だと、 300 枚ってトコを 心配してるように見えたんだけど(笑) # ドット数云々は自明でしょーよ。。。 うーむ、なんか不毛になってきたっぽいので あちきは地下に潜ります。 じゃ、弾幕シューがんばってちょ。
169 :
弾幕萌え :01/10/18 19:20 ID:3VKpwpFY
>>168 書き方が悪かったのならスマソ.
「チップのサイズを64x64にしろ」との司令だと受け取ったの
ですが違いました? なんかこちらの勘違いのような雰囲気….
170 :
名無しさん@XEmacs :01/10/18 19:33 ID:frOKjaii
>169 はぅ、いや、なんかこっちが勘違いしてたみたい。 ゴメン。逝ってくる…
171 :
23 :01/10/18 23:34 ID:ZtQteRCT
172 :
login:Penguin :01/10/18 23:38 ID:pvY1azpN
__asm__ ってどこで定義されてんの?
173 :
23 :01/10/19 00:05 ID:CcyKLHN5
定義じゃなくて、予約語と思われ。 # ちがうのか?info gcc してみるか...
174 :
23 :01/10/19 00:07 ID:CcyKLHN5
`-fno-asm' Do not recognize `asm', `inline' or `typeof' as a keyword, so that code can use these words as identifiers. You can use the keywords `__asm__', `__inline__' and `__typeof__' instead. `-ansi' implies `-fno-asm'. だってさ。
175 :
login:Penguin :01/10/19 00:10 ID:nKkvEv5U
>>172 つーか、エラーで__asm__がどーの、って怒られてコンパイル
できないとか?
3D Now!とかの命令使ったコードだったりしてない?
176 :
167 :01/10/19 12:04 ID:H+OOhBX7
詳しいことはプログラム板でやれよ!
177 :
login:Penguin :01/10/20 15:23 ID:SBASVEoC
INIT_LIST_HEAD ってなに?
178 :
login:Penguin :01/10/20 21:40 ID:ZwCkjtLE
179 :
23 :01/10/20 22:27 ID:9phK9Jmw
多分、SDL_mixerを使ったプログラムだと思うんだけど、 #include <mixer.h> を <SDL_mixser.h>に変えて、 コンパイルの時に、-I/どっか/SDL_mixerを/インストールした/パス ってやってみてごらん /  ̄ ̄ ̄ ̄ ̄ ̄|/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 。。 ( ∋ ( ∪ ) 人 (^^)^)
180 :
178 :01/10/20 23:33 ID:ZwCkjtLE
>>179 その方法でやったらうまくいきました。が、コンパイルはされてません。
なんだか、どんなサンプル使っても
GCCでundefined reference to 'SDL_Init'
とかが何行も出てエラーが出て終わってしまいます。
181 :
23 :01/10/21 00:46 ID:IXxR9VCU
undefined referenceってのは、gccのお仕事 プリプロセス→コンパイル→リンク のうち、リンクの作業中にでるエラー。 -l"ライブラリの名前" -lmとか、-lSDLとかがそれ。 で、リンクするライブラリのPATHの指定は -L/usr/どっか/lib んで、/etc/ld.so.confにライブラリのパスを 追加して、rootで/sbin/ldconfig実行すれば、 実行時にライブラリを探しに行ってくれる。 実行時に見付からないと逝ってしまう。 コンパイル時のリンクと実行時のリンクは 別物だから気をつけてね。 ちなみに、うちの/etc/ld.so.conf mint:~# cat /etc/ld.so.conf /usr/local/lib /usr/X11R6/lib /usr/ix86-linux/lib /usr/ix86-linuxaout/lib /usr/openwin/lib plamoのデフォだけど、いろいろ入ってるなぁー。 gccのオプションについては、おらいりの GNUソフトウェアプログラミングか、 ソフトバックのLinuxプログラミングあたりを よんだらどーだ?  ̄ ̄ ̄ ̄ ̄|/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 。。 ( ∋ ( ∪ ) 人 (^^)^)
183 :
login:Penguin :01/10/21 02:49 ID:HLoMSznt
>> 180 sdl-config を使え。 コンパイル時にゃ --cflags を、リンクさせる時にゃ --libsを。 ex) gcc -c foo.c $(sdl-config --cflags) gcc -c bar.c $(sdl-config --cflags) gcc foo.o bar.o -o foo $(sdl-config --libs)
>>180 -lSDL_mixer が必要かな?
$ sdl-config --libs
だと出力してくれないな。sdl 1.2.0だが。
185 :
180 :01/10/21 13:27 ID:aiNAHL1o
皆さんの意見を全部反映したら出来ました。2ch、感謝感激来訪歓迎満員御礼です。( ^o^)
こんな質問 ム板じゃムリだよなぁ....
ってワケで、ココで続けさせてもらうよーん
>>176
187 :
login:Penguin :01/10/23 01:03 ID:oEgg6ON6
189 :
:01/10/24 03:40 ID:jc2ZIh/D
age
190 :
ツクルママママン :01/10/24 20:09 ID:Pj7b4rir
僕は、ツクルマママンだ。作ってほしいものがあったら、 申しでるように。(難しいのはオツムが痛くなるからダメダゾ)
Linuxで動く石川梨華を作ってください。
192 :
ツクルマママン :01/10/24 20:28 ID:Pj7b4rir
なんか、イタそうな注文のような・・・ ここぞとばかりに、そういう注文を・・・ 弱っちゃうなぁ〜
193 :
login:Penguin :01/10/29 12:39 ID:mR9/ubrT
.cファイルと.hファイルが合わせて30個ぐらいもない 小さいソースコードってありませんでしょうか? WEBに載ってるサンプルほど小さくないやつ。
俺プログラミング初心者で、何か良いか探して本屋にいったらLinux japanでkylixの特集をしてたから、 やってみたけど、難しかった。(厨房か俺は?)
195 :
login:Penguin :01/10/29 18:14 ID:8P7IzFhY
>>193 GNU hello なんかどうだ?
ftp.ring.gr.jp/pub/GNU/hello/hello-1.3.tar.gz
上級者でも ChangeLog 見るためだけにダウンロードしてもいい逸品
196 :
login:Penguin :01/10/29 22:19 ID:a4AJaECx
>>195 大真面目にhello worldを書くと、こうなるのか...
しかし長いmainだなぁ
197 :
login:Penguin :01/10/29 23:30 ID:mR9/ubrT
make使わなきゃコンパイルもろくに出来ない俺はプログラミング以前の問題。
200 :
login:Penguin :01/10/30 01:25 ID:mUWNqmCA
>>195 アクセスできなかった。
ftp.gnu.org/gnu/hello/hello-1.3.tar.gz から取ってきた。
で、いいねこれ。どんなプログラムでも真面目に配布する場合のお手本。
最上級のジョークプログラム、もっと味わうために精進しなきゃ。
201 :
login:Penguin :01/10/30 01:53 ID:k5TgIxQT
>>200 Sat Apr 1 00:27:19 1978 Brian Kernighan (bwk at research)
* Initial version.
おぉ〜 こりゃすごい。
202 :
login:Penguin :01/10/30 01:58 ID:3CWR74Xw
で、elvisなKingって誰よ?(W
203 :
login:Penguin :01/10/30 02:08 ID:k5TgIxQT
while the king lives この行を見て、理解できるまで約10秒かかった。ハッカー失格かな 蔚出し脳
204 :
login:Penguin :01/10/30 02:14 ID:z9/LFjca
強いて言えば、kingさんの実体がいらっしゃらないところが ぉιぃかな #ってエラソー(w
205 :
login:Penguin :01/10/30 02:23 ID:WcNnDgD4
(´-`).。oO(なんでprintfとputsを使い分けてるんだろ....)
正直さっぱり分からん。 鬱山車脳 mainどこにあるの…?(getopt{,1}.cのは違うよね)
207 :
198 :01/10/30 08:09 ID:xPtDT2QA
208 :
login:Penguin :01/11/01 00:45 ID:40XMd8I5
209 :
login:Penguin :01/11/10 18:57 ID:ctjFGrjk
折れ様プログラムの、3日間悩まされたバグがとれた記念あげ。
210 :
login:Penguin :01/11/10 20:37 ID:l3MGWRuE
なんかCurses age てるね。 ところで、Windowプログラミングするとき、 キーバインドの取得をCursesでやらせて、 ウィンドウ表示部分をGTK+ でやるなんて いうプログラミングしたことある? 無理にオールマウスでやろうとすると 日が暮れるんだ...
???
>>210 表示部にマウスカーソルいれると、キーボード入力が
とれなくなりません?
つーか、言ってることが、いまいち理解できん...
212 :
login:Penguin :01/11/13 15:32 ID:MqzmFHkN
質問君です、よろぴくぴく。 えっと、物理アドレスA と 物理アドレスBを、一つの仮想アドレスCにまとめたいのですが〜 よろしぴくぴくです。 ネタじゃないじょ〜ちがうじょぉ〜。 おいらも、今、調べてるから、分かったら書き込むじょ〜。
214 :
login:Penguin :01/11/13 15:48 ID:3jOhrPx0
>>212 物理アドレスとは?
Ethernetアドレス(MAC)のこと?
>>213 自分で自分に言ってどうするのだ?
>>213 無限ループしちゃってるYO…ドンマイ!
216 :
login:Penguin :01/11/13 15:51 ID:MqzmFHkN
>>214 物理アドレスでなくても、いいです!、2つを1つの仮想アドレスにまとめたいのれす。
ちなみに、VRAM関係です〜
>>214 ゴメソ、訂正:アドレス => メモリ領域
なんか変てこな文章になってたかも。
218 :
login:Penguin :01/11/13 16:33 ID:MqzmFHkN
こんなページんこめっけたYO。一つのプロセスにはmm_structが一つあるから、
そこに、vm_area_structを2つくっつけて一つのメモリエリアを作る?
うーおーーわかんねぇ〜
http://google.com/search?q=linux+node181&lr=lang_ja&lh=ja 空間モデル
プロセスは各々独立した空間を持っているが、その独立した空間 一つは、
メモリ管理構造体mm_struct一つによって管理されている。
つまり、一つのプロセスは、一つのメモリ管理構造体mm_structを 所有している.
仮想空間管理構造体vm_area_structは一続きの連続した仮想空間を 管理する構造体である.
プロセス空間のうち, 有効な空間は非連続な複数領域であり、
それぞれの領域に対して仮想空間管理構造体vm_area_structが 割り当てられる。
メモリ管理構造体mm_structのmmapメンバには複数の仮想空間管理構造体 vm_area_structが
リンクされることになる. このvm_area_structの総計がこのプロセスが利用できる有効な空間である.
また、メモリ管理mm_struct構造体は, PGD, PTE 領域を管理している. PGDとPTEは,
上記プロセスの仮想空間アドレスを物理メモリアドレスに 変換するテーブルである.
実際の変換処理はCPUが自動的に行う. (Intel CPUの場合)
Linuxでは仮想的にPTEに物理メモリメモリ以外のものを割り当てることも できる.
これらのページへのアクセスがあるとき発生するCPU例外を 利用して,
動的に仮想的に割り当てたオブジェクトから、物理メモリへの データの読み込みを行っている。
220 :
login:Penguin :01/11/13 19:11 ID:9iytYZyN
皆さんはCをどのように会得しましたか? 私は半年以上やってるのにロクなことができません。 MSDNライブラリ片手にでも練習しなければ 難しいと思うのですが。特にLinuxでは
221 :
login:Penguin :01/11/13 19:32 ID:ni7T++E6
いつからここはネタスレに.
>>213 >>216 ネタじゃないと仮定して,1つの仮想アドレスが複数の物理アドレスを
指すというのは無理じゃない?(複数の仮想アドレスが同一の物理アド
レスを指すのなら可能)
VRAM関係ということで,たぶん「1つの物理アドレスに書いたら複数の
VRAMにアクセスできる」ってのがやりたいのだと思うけど,そこまで
都合の良いアーキテクチャは,漏れの汁範囲ではない.
それが可能なら,物理アドレス$pppp〜$qqqqを論理アドレス$vvvvに
割り当てて,$vvvvに0を書き込んだだけで$pppp〜$qqqqをゼロクリア
とかできるな.おお!便利じゃん!(藁
222 :
login:Penguin :01/11/13 19:39 ID:ni7T++E6
>>218 ついでに
MMUやるならLinuxカーネル読むよりも素直にアセンブラで
テストプログラムとか書いたほうが理解早いかも.
223 :
namu :01/11/13 19:57 ID:SDZWkQqv
C はひたすらコード読め
224 :
login:Penguin :01/11/13 20:41 ID:MqzmFHkN
>>221 >>222 どもども、VRAMが$あああー$いいい と、$うううー$えええ、が、あったとすると。
連続した仮想メモリ$ほほほほーへへへへにマップしたいのれす。
今のとこ解ってきたのは、/linux/mm/memory.c の、
int remap_page_range( unsigned long from, unsigned long phys_addr, unsigned long size, pgprot_t prot)
がぁ、あやしい。
>>220 若気の至りというか、初心者根性で、ズカズカと、とりあえず、壁にぶつかるまで試して見ればいいんでは〜。
そうすれば、限界とかわかるのかぁ… って自分に言ってるのかぁ… (お恥ずかしい ポッ)
おいら〜、C言語て、挫折歴含めて1,2年かも 、なのにーなーぜー♪ まともなの作ったことないしなぁ (汁
PS. アセブリで、MMU…、ウォーーン ←吠えてる
相変わらず何がやりたいのかさっぱり分からないんだけど。 あああ、いいいとかじゃなくて適当な数字で具体的な例を出して欲しいな。 例えば、 0x1000〜0x2fffと0x5000〜0x6fffの2箇所にVRAMが分かれていて、これを 0x8000〜0xbfffに連続して割り当てたい (0x1000〜0x2fff を 0x8000〜0x9fff へマップ、 0x5000〜0x6fff を 0xa000〜0xbfff へマップする) と、そういう意味でいいの? だったらremap_page_range()を2回やるだけなのでは。 ところで、remap_page_range()ってカーネル内サービスだけど デバイスドライバを作る気なの? 質問者のレベルから察するに、なんだか ユーザープロセスでやる気になってるような予感がするんだが…。
226 :
login:Penguin :01/11/14 00:35 ID:Ss1gUq1w
>>225 どーーも〜、そうっすそうっす!ドライバ作りたいんっすぅ。
で、0xa0000 - 0xa1fff と、 0xa2000 - 0xa3fff を、
ひとつの仮想メモリ上にマップしたいんっっす。
仮想メモリ上ではアドレスはどこでもいいっす。
io_remap_page() これを2回でいいかも。
ありがとうっす。
ちなみに、ユーザープロセスで、mmapで、
これと同じようなことってできるのかなぁ。
そうすれば練習できるし…
m = (unsigned long*)malloc(0x10000);
n = (unsigned long*)malloc(0x10000);
なんて確保したのを、n を、m のすぐ後ろにもってくようなことってできるのかなぁ…
227 :
226 :01/11/14 00:38 ID:Ss1gUq1w
まじぃ、まちがった、io_remap_page => remap_page_range() だった
228 :
login:Penguin :01/11/14 00:53 ID:hU7iP5Sq
あるコマンド群を作成してますが、ネーミングに苦労しています。 どこぞに「コマンドのネーミングはこうあるべき」とかいう資料ありますでしょうか? 文字数とか、動詞+名詞の形にするとか。
229 :
225 :01/11/14 01:20 ID:5XuH0ayp
>>226 あ、本当にデバドラを作るのね。疑ってスマソ。
>で、0xa0000 - 0xa1fff と、 0xa2000 - 0xa3fff を、
>ひとつの仮想メモリ上にマップしたいんっっす。
最初からそう書いてくれれば話が早いのに…っていうか、
0xa0000 - 0xa1fff と0xa2000 - 0xa3fffってアドレス連続してるじゃん!
別に2回に分ける必要ないのでは。
malloc()で取ったメモリをmmap()で再配置するというのは無理ですな。
mmap()の引数に取るのはfdなので、マップするのはファイルの形を取ってないと。
仮にできたとして、そんなことやったら以後のmalloc()のメモリ管理が破綻すると思われ。
でも、VRAMのマップだったら、/dev/kmemをopenして適当なoffsetを指定して
mmap()すれば、ユーザープロセスでも可能なのかも?
LinuxでユーザープロセスからVRAMをいじってそうなkonとか、svgalibとかのソースを
調べてみたら参考になるかも知れないよ。
230 :
login:Penguin :01/11/14 02:06 ID:Ss1gUq1w
>>229 どーれ、レスついってかなぁーって、
茶をススリながら見てたら吹き出しちゃったYO
0xa1fff の次って 0xa2000 じゃないかYO。
おいら的に盲点でした、ホントスマソ。
malloc()したのを再配置は、できないっすかぁ、やっぱりというか…
svgalibを参考にして、/dev/memからマップは試したことがあるんだけど、
rootでないとマズソウというか、裸を覗いてるようで、引いてしまった。汗
あー、でも、RAMデスクでもつくってマップするって手もあるかも…
ところで、/dev/kmem って?ほにゃ? 調べてみたYO。
/dev/mem は物理アドレスで、
/dev/kmem は仮想アドレスなんだってYO
/dev/port はi/Oポートかぁ… 奥が深い。
231 :
23 :01/11/14 02:42 ID:J7qBEFGj
>>221 いつからって、そもそも、ドキュソな1を23がもてあそぶスレでしたが?
(つーか、よくここまで延びたものよのぉ。100レスこえてるし。)
232 :
login:Penguin :01/11/15 09:30 ID:YImP/02j
ようっし、今日はこれだけは教えてもらおう。 VT と VC ってなにが違うんだYO について簡潔に説明してちょ。
234 :
login:Penguin :01/11/17 12:43 ID:2yWe0wAf
>>232 Terminal ってのは、カーソルの位置を変更したり、改行したり、
画面を書き直したり、ビープ音を出したり、する命令セット。
conosleの用意してる基本的な命令を使ってつくってある。
Console ってのは、putc puts bmove blank scrooll
と画面に文字を表示するのに基本的な命令。
Virtual Terminal になると、/dev/ttyXが増える。
こんな感じか? 違ってたらスマソ。
235 :
login:Penguin :01/11/18 22:52 ID:SQ/8M/FX
Turboのホームページ見たら、iアプリ向けソフトの開発ツールβ版が出ていた。 誰か、チャレンジしてみてくれ! (俺? 俺はまだ、環境を整えていて……)
>>235 > (俺? 俺はまだ、環境を整えていて……)
激しくワラタ
237 :
login:Penguin :01/11/19 00:26 ID:amn6+NOD
>>234 カナーリ変ですよ?
Terminalが命令セットってのは、ちょっと飛びスギ。
# termios構造体/関数群と混じった?
一般的に「terminal」って「端末」って訳すよね。
汎用コンピュータとかにシリアルとかでぶら下がった
「ディスプレイとキーボード」が語源でしょ?
で、「バーチャル」なんだから、「あたかも実際に端末が
あるかのように動作する何か」なわけ。ktermとかは、
「ディスプレイとキーボード(の入力)」の役割をはたして
くれてるってこと。
対して、Consoleは、「機械本体に付いてる操作盤」(かな?)。
PCだと、モニタとキーボードのセットになるのかなぁ?
で、「それがあたかも沢山あるようにみせる」のがバーチャル
コンソール。シリアル経由で実現してるのがシリアルコンソール。
/dev/ttynってのは、コンソールのほうだよね。
238 :
login:Penguin :01/11/24 00:32 ID:Y97Ro4oE
お前ら、最近どうなのよ?
まだ生きてるよ
240 :
login:Penguin :01/11/24 01:32 ID:sPN+pG0D
だれかたすけて、 かなかんじへんかんさーばーとつうしんできないってえらーが でてきてかんじにへんかんできません。 こんそーるで # kinput2 & とたたいてもおなじです。 # kinput2 -cannna & や # kinput2 wnn & とやってもむりっぽいです。
241 :
240 :01/11/24 01:34 ID:sPN+pG0D
suman! matigaeta.
kinput2 -canna &
私の名前はカンナです
それはちがう。(W
245 :
login:Penguin :01/12/04 20:00 ID:PX2sN14O
思い出age
246 :
login:Penguin :01/12/10 02:46 ID:+jajawVP
お前ら、最近どうですか?
/etc/hostとかだろうなー
248 :
login:Penguin :01/12/10 03:59 ID:BAt9bGZx
JM つかえねー。 これならBSDのmanサイト行った方が100億倍マシ。 JFも化石情報しかねーし。
249 :
:01/12/19 17:14 ID:gFZQwsSe
age
250 :
login:Penguin :01/12/20 00:18 ID:gZ06gkHn
>248 BSDも似たようなもんだと思うがな
252 :
login:Penguin :01/12/21 00:33 ID:UU8yTCiK
まぁ、仕方がないっちゃ仕方がないよな。 でも、ディストリビュータは、なるべく早くアップデートして もらいたいと思うよ。 Turbo7でext3に移行しようとおもったんだけど、manだけ見たら ext2toolが-jオプションサポートしてないかと思った。 --helpで確認したら-jあるじゃん、と。 で、その後で調べ物ついでにJMのサイトみたら、なーんと、 すでに-jオプションつきの翻訳でてるし。 セキュリティアップデートも大切だけど、こういうトコも 頑張ってほしいなぁ。>ディストリビューター
ときに、xevilにはまった人いない?いなげ。。。
> BSDも似たようなもんだと思うがな Linux は英語の man page であっても書いてあることが古かったり欠けてたり して困るヨ。特に section 2 と 3 あたり。 これに関しては BSD の方が良さげ。まあ、開発スタイルが違うのである意味 当然の違いだが。
>>254 glibc の info は結構まともだよ。
256 :
login:Penguin :01/12/22 10:25 ID:I4jGlFF3
>>255 情報は一元化して欲しいと思うんだが。
たらいまわしにすんなって感じ
257 :
age :01/12/31 20:25 ID:wf6RQNNh
age
258 :
login:Penguin :01/12/31 23:27 ID:QI9NKinj
>256は禿同なんだが、そういったことを現状のコミュニティベースの 開発スタイルで、どう実現するのかを小一時間問いつめたい、 じゃなかった、考えたい。
259 :
login:Penguin :02/01/01 00:27 ID:9SI2mqTf
名前付きパイプをselectで監視しているのですが、 パイプに入力が無いにもかかわらず、 すぐに、 selectが戻り値 1 でリターンして、 (パイプについてFD_ISSETも正を返す。) 当然ながら、パイプを読んでみても、何も入っていない。
260 :
259 :02/01/01 00:47 ID:9SI2mqTf
手元の本によると、 open(const char *path, O_RDONLY); と非ブロッキングのフラグ無しで名前つきパイプをオープンした時、 何らかのプロセスが同じ名前つきパイプをオープンするまで、 このopen呼びだしは、ブロックする。 とあるのに、ブロックしない。 調子にのって最新のカーネルをいれたのが間違いだったようです。
261 :
259 :02/01/01 00:49 ID:9SI2mqTf
>と非ブロッキングのフラグ無しで名前つきパイプをオープンした時、 じゃなくて 読みだし専用かつ、非ブロッキングのフラグ無し で名前つきパイプをオープンした時 でした。
262 :
login:Penguin :02/01/09 19:10 ID:cGPnxeEf
261 の問題は解決したのだろうか? こうして壁にぶち当たってそのままになっていると、 プログラミングが嫌いになっていって、プログラマ 候補生がまた一人逝ってしまうのだろうな。 ところで、パイプのノードはちゃんと作ったかい? ( mknod 使った?)
263 :
login:Penguin :02/01/10 09:42 ID:KaV77Pvt
はい、 名前付きパイプは作りました。 入力がある時は、入力を得ることはできるのです。 でもselectがブロックしないんだったらselectの意味がないのではと。
264 :
login:Penguin :02/01/10 12:29 ID:AYoOY4G0
私はブロックするプログラムは書かないので、なぜブロック させたいのか分かりませんが、私の環境では open はブロック します。また、select は相手側がオープンしていないとすぐに リターンするそうです。 ls -l であなたの作ったノードに p がついていますか? パイプのノードを作るときは if( access( "path", F_OK ) ) mknod( "path", S_IFIFO | 0666, 0 ); のようにします。
265 :
263 :02/01/10 19:51 ID:KaV77Pvt
すいません。しょうもないミスでした。 mknod( "path", S_IFIFO | 0666, 0 ); を mknod( "path", 0666, S_IFIFO); としていました。 ------ ところで、 非ブロッキングモードで開いた名前付きパイプをselectシステムコールで監視した時 他のプロセスが名前付きパイプを開く (selectはリターンしない) 他のプロセスが名前付きパイプに書き込む (selectがリターンして、パイプをreadすると、書きこんだバイト数を返す) と、ここまではいいのですが、 他のプロセスがパイプを閉じて終了 (selectがリターン、パイプをreadすると0が返る) この後, selectがブロックしなくなり、パイプへのreadも0を返すの繰り返しになってしまう。(結果システムの負荷が上がる) ところが、別のプロセスが名前付きパイプを新たに開くと通常のブロックする動作に戻る。 ----- というわけで、readが0を返したら非ブロックモードで開いている名前付きパイプの、読み手側がパイプをクローズしたと解釈して、改めて名前付きパイプを開き直すという方法で、すべて問題が解決しました。
266 :
263 :02/01/11 18:43 ID:PgrWGniX
265の一番下の段落に書いた 「読みて側がパイプをクローズしたと解釈して…」 は 「書き手側がパイプをクローズしたと解釈して…」 の書き間違いです。 ソケットを監視してる時と、名前付きパイプを監視してる時とでは、 相手側がクローズしたときのselectの挙動が違うということが言いたかったわけです。 (ソケットだとreadが-1を返す。) 確かに名前付きパイプの場合、相手側がクローズしたとしても、 エラーではないから、readが-1でなくて0を返す方が自然だし、-1を返すとしたら本当のエラーと区別がつかない。
267 :
login:Penguin :02/01/11 18:50 ID:BX1XovQQ
本当に? ソケットだと -1 になります? 私の記憶違いかなぁ、ソケットの切断確認は read() == 0 でやってたと思ったのですが。 ブロックしてると違うのかな。 会社にいないので確認不能です。(スイマセン)
268 :
login:Penguin :02/01/11 22:06 ID:p3D7ZwgC
>>267 俺の場合、「正常時、正の整数を返し、異常時0を返す関数」の
エラーチェックは、if(rval <= 0){} でやってるなぁ。
ドキュメントに書いてなくても負の値かえすかもしれないし、
自前の関数でも、後からエラーの種類によって振り分けたくなるかも
しれないし....
あと、
>>265 みたいなミスをなくすには、mkfifo(3)なんてのも
イイかもね。
269 :
263 :02/01/12 10:48 ID:+FMGgANk
>>267 すいません
やっぱりソケットでも0でした。
試してませんが、本にそう書いてありました。
だから、
266の下半分はウソなので見ないでください!
270 :
login:Penguin :02/01/12 16:48 ID:3tBEAC3g
本に書いてあることが全て正しいとは限りません。 本当に信用できるのは、自分で検証したことだけです。
>>271 テンション高いねぇ・・・・
あとHSPはナイスだ でもやっぱCとかで組んだ方がソースに愛着わくけど
なんでHSPナイスなのよ. HSP最高です!最高です!人生最高です!か? あ、HSPが良いということではないのか.
山崎には負けたくないage
#ラベル表示だゴラア label .label1 -text "サウンドのテストです" #ボタン使って音鳴らすぞハッキン! button .button1 -text "sound 1" -command { exec play /usr/share/sounds/login.wav } #なんだてめえエラーカマシテンジャねーよ!と言うことで #/dev/nullにパイプ渡して尻隠し。ついでにバックグラウンドで実行。 button .button2 -text "sound 2" -command { exec play /usr/share/sounds/shutdown1.wav >& /dev/null & } #ついでだからxmmsも起動しちゃっ足りして button .button3 -text "mp3 music" -command { exec xmms /home/mp3/music1.mp3 >& /dev/null } pack .label1 .button1 .button2 .button3 -fill both
ま、とりあえずTclでサウンド鳴らしてまるちめぢあ Linuxでウハウハしとけ。 HSPだかんな。Tcl/Tkは。
おっと書き忘れた、275を実行するには275をファイルに nantoka.tclて名前で保存してその後、 % wish nantoka.tcl で実行するんだぞ厨房。あ、サウンドファイル無いってエラーが 出ら適当なwaveファイル使え、な。
278 :
login:Penguin :02/01/17 23:36 ID:/YXIWgzo
保守あげ
Tclで文字を出力するのはだな、puts命令を使うんだ分かったか。コンソールから $ tclsh でインタプリタか始まるからな。始まると%記号が出るからな。 そこで、だ % puts stdout "hello world イヤーン" と入力してみろ。ツウインクルツインクルTclちゃんが命令を解読して""で 囲まれた文字列を表示するからな。どうだHelloWorldだコノヤロ!
280 :
login:Penguin :02/01/18 05:15 ID:ZMYgA2qm
プログラミング言語には変数と言うものがあるんだ。数学のxとかy というもと同じだ。 Tclわな、変数は最初に定義してカラ使うんだぞ。例えばaという 変数を使いたければ、 set a 1024 という具合にすればいいんだ。このaと言う変数には1024と言う値が 入っている。値を見るには$記号を付け加えて、 puts stdout $a とすればaという変数の中身が表示されるわけだ。どうだい!これで 立派なLinuxプログラマーになったみたいだろ?
どうだいFuckin!!Everyone! HSPいや、Tclしてるか、ちくるをYO! キーボードから数字や文字を入力するのはな、 % gets stdin a とやるんだ。そうするとだな、変数aに入力された文字が保存されるってわけよ。 試しに % puts $a とやって変数の内容を見てみろ。 WooooW It's Cooool!やったぜ!ペンギンのクソッタレ! これで俺も文字表示とキーボード入力が出来るようになっちまったぜ!
Expressoinって知ってるか?式よ、式。Tclではな、計算はexpr命令で行なうんだ ぜhack'in!!。例えばこんなだ。 expr 2 + 3 どうだ、なかなかファンキーだろ、え? 計算結果を変数にいれるときはだな、下のようにして[ ]記号で囲むんだ。 set a [ expr 5 + 1 ] こうするとexpr命令の結果を変数aに代入できるって分けよ。
じゃあexpr命令を使って計算プログラムを作っちゃおうぜ!まずは下のプログラムを Editorか何かで入力してkunkun.tclと言うファイルに保存してくれ。 puts stdout "数字を入力するクーン" puts stdout "a=" gets stdin a puts stdout "b=" gets stdin b puts stdout "足し算の結果は [ expr $a + $b ] なのよ クククnoクーン そうしたら今度は tclsh kunkun.tcl とやってプログラムを実行するんだぜ! おい、プログラムを実行してみろよ!まじかよ!クンクンが計算をしてくれるぜ! なんてスペシャルフレンドリーな計算機なんだよ!何で俺のLinuxにクンクンがって感じだよな。 まるでポストペットのモモみたいじやねーかよ! これでexpr命令をハックしたぜ!Fuckin!Baybe! 今日も一日ハイテンションできりぬけられそうだぜ!ハッキン!ハッキン!ハッキン!ハッキン! ハッキン!ハッキン!ハッキン!ハッキン!ハッキン!ハッキン!ハッキン!ハッキン! シャッッキーーーーーーン!!!
Visual系プログラムってしってるか、え? VisualBasicみたいにGUIを使ってプログラミングすることだよな。 たぶんそうだぜ。まあGRAY見たいなギター背負ってシャーウト!とか言ってる プログラマーもVisual系プログラマーと言うけどな。 Tcl/TkでもGUIプログラムが出来るわけだが、簡単なのやってみようぜ! まずはktermから、wishと入力してインタプリタを起動させてくれ。 そこで%プロンプトがでたら、 % tk_messageBox -title "hello tcl/tk" -message "hello tcl/tk world" と入力するんだ。この命令は画面にメツセージボクースを表示するものさ。 ついでだから、ファイルダイアログも表示させてみよう。よくwindowsで見掛ける やつだがtck/tkから簡単に呼び出せる。 % tk_getOpenFile どうだい、簡単だろ?ファイルダイアログからのファイル名を変数に保存したければ set filename [ tk_getOpenFile ]てやればいいわけよ。
287 :
login:Penguin :02/01/29 02:12 ID:oEv2rpfL
age
vackerキモキモ
284タンが借金で終っちゃってるのはなんでだろう・・・)Oo。.('ー')
>>288 安い焼酎飲みすぎて悪酔いしてあのテンションなら頷けるが
しらふであれならチョト恐い
iptablesconfを育てないか?age
292 :
login:Penguin :02/02/21 20:54 ID:7GLJZHsg
vackerタンつづけてちょ
293 :
名無しさん@Emacs :02/02/22 00:55 ID:zwX/UbHV
このスレで初めて SDL というのを知りました。
http://www.geocities.co.jp./Berkeley/2093/driller.html にあるドリラーを make しようとしたのですが、SDL_mixer.h がないと言われ
ます。検索してもありませんでした。
$ rpm -qa 'SDL*'
SDL-1.2.3-1
SDL_net-1.2.2-1
SDL_mixer-1.2.0-4
SDL-devel-1.2.3-1
SDL_image-1.2.0-3
SDL_mixer というのは入っているようなのですがこれではいけないのでしょう
か?
すみません。自己解決しました。 SDL_mixer-1.2.1-1 SDL_mixer-devel-1.2.1-1 を入れたら make できました。逝ってきます(鬱
295 :
login:Penguin :02/02/22 17:21 ID:zxhEpi7c
cygwin で SDL-1.2.3.tar.gz をダウンロードして $tar zxvf SDL-1.2.3.tar.gz $cd SDL-1.2.3 $./configure; make; make install $cp /usr/local/lib/SDL.dll /usr/local/bin としたのですがテストプログラムがコンパイルできません。 checking for SDL - version >= 1.2.3... no *** Could not run SDL test program, checking why... *** The test program failed to compile or link. See the file config.log for the *** exact error that occured. This usually means SDL was incorrectly installed *** or that you have moved SDL since it was installed. In the latter case, you *** may want to edit the sdl-config script: /usr/local/bin/sdl-config configure: error: *** SDL version 1.2.3 not found! と怒られます。どうしたらいいですか?
296 :
login:Penguin :02/02/22 17:36 ID:o0GogGjF
>295 >The test program failed to compile or link. >This usually means SDL was incorrectly installed って書いてあるじゃん. あと,make installってrootでやった?
297 :
295 :02/02/22 18:17 ID:zxhEpi7c
>>296 cygwin(win2000) なので root になる必要はないのですが。インストールはエ
ラーも出ないで終了しているので、パスが通ってなくて失敗しているのではな
いかと思うんですが違いますかね。
参考にしたページでは SDL.dll をパスの通っているところ(/usr/local/bin)
にコピーしろとあったのでコピーしました。test ディレクトリとか /usr/bin
とかにも置いてみたりしましたがだめでした。
ここで見つからないと言っているのは SDL.dll のことではないのでしょうか?
http://www.geocities.co.jp./Berkeley/2093/sdl.html このページを参考にしました。「SDL-1.2.1 以降の WIndows の場合」の部分。
おっ、Linuxプログラマー板も熱くなってきたじゃねーか。 よし292よ、続けるからぜひHackerJapanにVackerの記事載せろとリクエストの メール書いちゃったりしてくれ。
299 :
Vacker :02/02/22 22:25 ID:dyoD2KOO
それよりもよ292よ、ちょっと聞いてくれよ。俺こないだモデムのハードウェア をハッキン!してたんだよ。そしたらよ、電源コード反対に繋げちゃってさ、 モデムがきゅい〜〜んとか唸っちゃったりしちゃってんのよ。そんでさドカンっていう 音と共に雷がフラッシュして目の前が激しく明るくなったんだよな。 やっぱり寝起きから「あぅ・・・うぉー朝だぜ、糞とションベンのまえに2chだ!」とか いって2chしようとしちゃいけないよな。寝ぼけたまま2chしちゃ危ないぜ。 まぁ、そういうわけで292よ、これからも激しくハッキン!してくれ。
300get
301 :
login:Penguin :02/02/23 02:56 ID:ZkGoDslu
>>295 「どんなエラーが起こったかは、config.logを読め」ってかいてあるでしょ。
読んでみた?意味がわかんなかったら、config.logの内容かきな。
# つーか、すれ違いだし、板違いだけど...
302 :
292 :02/02/25 00:08 ID:GwZlFUMG
Vackerタンもうちょっと聞きたよー、つづきをキボンヌ(マジ
303 :
295 :02/02/25 13:40 ID:LEc6DJSN
>>301 長くなってしまって申し訳ないのですが、config.log の途中から書きます。
README.Win32 には cross-configure.sh , cross-make.sh を使うように書い
てあったのですが、そのせいでしょうか? でもこれだと SDL 自体がインストー
ルできなかったので...違うかな。
configure:2159: checking for SDL - version >= 1.2.3
configure:2244: gcc -o conftest -g -O2 -I/usr/local/include -I/usr/local/include/SDL -Dmain=SDL_main -I/usr/include/mingw -DWIN32 -Uunix conftest.c -L/usr/local/lib -lmingw32 -lSDLmain -lSDL -mwindows -mno-cygwin 1>&5
/usr/local/lib/libSDLmain.a(SDL_main.o.b): In function `ParseCommandLine':
/usr/include/mingw/ctype.h:141: undefined reference to `_imp____mb_cur_max_dll'
/usr/include/mingw/ctype.h:141: undefined reference to `_imp___pctype_dll'
/usr/include/mingw/ctype.h:141: undefined reference to `_imp____mb_cur_max_dll'
/usr/include/mingw/ctype.h:141: undefined reference to `_imp___pctype_dll'
collect2: ld returned 1 exit status
configure: failed program was:
#line 2183 "configure"
#include "confdefs.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "SDL.h"
char*
my_strdup (char *str)
{
char *new_str;
if (str)
{
new_str = (char *)malloc ((strlen (str) + 1) * sizeof(char));
strcpy (new_str, str);
}
else
new_str = NULL;
return new_str;
}
304 :
295 :02/02/25 13:41 ID:LEc6DJSN
続きです。 int main (int argc, char *argv[]) { int major, minor, micro; char *tmp_version; /* This hangs on some systems (?) system ("touch conf.sdltest"); */ { FILE *fp = fopen("conf.sdltest", "a"); if ( fp ) fclose(fp); } /* HP/UX 9 (%@#!) writes to sscanf strings */ tmp_version = my_strdup("1.2.3"); if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { printf("%s, bad version string\n", "1.2.3"); exit(1); } if ((1 > major) || ((1 == major) && (2 > minor)) || ((1 == major) && (2 == minor) && (3 >= micro))) { return 0; } else { printf("\n*** 'sdl-config --version' returned %d.%d.%d, but the minimum version\n", 1, 2, 3); printf("*** of SDL required is %d.%d.%d. If sdl-config is correct, then it is\n", major, minor, micro); printf("*** best to upgrade to the required version.\n"); printf("*** If sdl-config was wrong, set the environment variable SDL_CONFIG\n"); printf("*** to point to the correct copy of sdl-config, and remove the file\n"); printf("*** config.cache before re-running configure\n"); return 1; } } configure:2293: gcc -o conftest -g -O2 -I/usr/local/include -I/usr/local/include/SDL -Dmain=SDL_main -I/usr/include/mingw -DWIN32 -Uunix conftest.c -L/usr/local/lib -lmingw32 -lSDLmain -lSDL -mwindows -mno-cygwin 1>&5 /usr/local/lib/libSDLmain.a(SDL_main.o.b): In function `ParseCommandLine': /usr/include/mingw/ctype.h:141: undefined reference to `_imp____mb_cur_max_dll' /usr/include/mingw/ctype.h:141: undefined reference to `_imp___pctype_dll' /usr/include/mingw/ctype.h:141: undefined reference to `_imp____mb_cur_max_dll' /usr/include/mingw/ctype.h:141: undefined reference to `_imp___pctype_dll' collect2: ld returned 1 exit status configure: failed program was: #line 2278 "configure" #include "confdefs.h" #include <stdio.h> #include "SDL.h" int main(int argc, char *argv[]) { return 0; } #undef main #define main K_and_R_C_main int main() { return 0; ; return 0; }
305 :
295 :02/02/25 13:43 ID:LEc6DJSN
長すぎてうざいですね。。。。 ごめんなさい。
>>303 つーか、なめらかに板違いだなぉぃ。
UNIX板のcygwinスレかwindows板か
ム板の範疇だと思うが……
それよりか、winのコンパイル済のSDL32.dllじゃだめなんか?
>>304 > /usr/include/mingw/ctype.h:141: undefined reference to `_imp____mb_cur_max_dll'
> /usr/include/mingw/ctype.h:141: undefined reference to `_imp___pctype_dll'
> /usr/include/mingw/ctype.h:141: undefined reference to `_imp____mb_cur_max_dll'
> /usr/include/mingw/ctype.h:141: undefined reference to `_imp___pctype_dll'
どう見てもcygwin固有の問題なんですが、、、
どうしてもLinux板でつづけたいですか?
308 :
login:Penguin :02/02/25 22:26 ID:r8cdj1bz
>>306-307 こらこら、せっかく来てくれたんだぞ。
>>304 Linuxをインストールすると解決するYo!
# いや、まぢで。
# Windows領域にインストールできるデストリビューションも増えてきたしさ
309 :
login:Penguin :02/02/26 00:58 ID:UwxM9YJu
シェルスクリプト内でパイプ処理をしている最中に 条件式を埋め込みたいんだけど、どうもうまくいきません。 #!/bin/sh grep hoge hoge.log | ここで$1が数字なら tail -n 数字、$1が数字以外なら cat | ・・・ というようなのをずらずらと書きたいんですけど どうすればいいでしょうか?
310 :
309 :02/02/26 00:59 ID:UwxM9YJu
シェルはbashです
311 :
login:Penguin :02/02/26 01:09 ID:kWRylkzw
hoge.logのサイズにもよるけど、 for i in `grep hoge hoge.log` do if $i... .... fi done じゃダメなのか?
312 :
331 :02/02/26 01:16 ID:kWRylkzw
あ、そういう問題じゃないのか。 grep hoge hoge.log | (if .... fi) | ..... ではどーですか?
313 :
309 :02/02/26 01:21 ID:UwxM9YJu
例が悪すぎました。すみません。具体的にやりたい処理を書きます。 $1 がgzファイルなら zcat、普通のテキストなら cat で表示し $2 でgrepして $3 が数字で指定してあればtail -n 数字、そうでなければそのまま というフィルタリングを行いたいのです。 zcat $1 または cat $1 | grep $2 | tail -n $3 または cat という処理を書きたいのですが・・・ なるべくtmpファイルは途中で生成したくないと考えてます。
>>313 最初っからそういってくりぃ(;´д`)
echo $1|grep -e 'gz$' > /dev/null
if [ $? -eq 0 ]; then
CAT=zcat
else
CAT=cat
fi
if [ "$3" = "" ] ; then
TAIL="tail -n $3"
else
TAIL='cat'
fi
$CAT $1 | grep $2 | $TAIL
315 :
309 :02/02/26 02:18 ID:UwxM9YJu
>>314 おお!
変数もコマンドになる・・・
目からうろこです。なるほど!
316 :
login:Penguin :02/03/02 17:23 ID:252oT5b1
ターボから出てるiアプリ作成ツールって使えますか? 503is買おうか迷ってるんですが・・。
317 :
login:Penguin :02/03/02 17:56 ID:aAidBm2I
OSXのプログラミングしろ、ほげ
318 :
キタ :02/03/03 18:48 ID:TIN10b/M
#include <stdio.h> int main(int a, char *b[]) { int i; char *kita[7] = { "(゚∀゚)", "( ゚∀)", "( ゚)", "( )", "( )", "(゚ )", "(∀゚ )" }; while (1) { for (i = 0; i < 7; i++) { printf(" キタ━━━%s━━━!!!!!\n%cM", kita[i], 27); usleep(200000); } } }
319 :
login:Penguin :02/03/03 18:53 ID:zGw1I9Gs
#!/usr/bin/perl -w use strict; $_='ev al("seek\040D ATA,0, 0;");foreach(1..2) {<DATA>;}my @camel1hump;my$camel; my$Camel ;while( <DATA>){$_=sprintf("%-6 9s",$_);my@dromedary 1=split(//);if(defined($ _=<DATA>)){@camel1hum p=split(//);}while(@dromeda ry1){my$camel1hump=0 ;my$CAMEL=3;if(defined($_=shif t(@dromedary1 ))&&/\S/){$camel1hump+=1<<$CAMEL;} $CAMEL--;if(d efined($_=shift(@dromedary1))&&/\S/){ $camel1hump+=1 <<$CAMEL;}$CAMEL--;if(defined($_=shift( @camel1hump))&&/\S/){$camel1hump+=1<<$CAMEL;}$CAMEL--;if( defined($_=shift(@camel1hump))&&/\S/){$camel1hump+=1<<$CAME L;;}$camel.=(split(//,"\040..m`{/J\047\134}L^7FX"))[$camel1h ump];}$camel.="\n";}@camel1hump=split(/\n/,$camel);foreach(@ camel1hump){chomp;$Camel=$_;tr/LJF7\173\175`\047/\061\062\063 45678/;tr/12345678/JL7F\175\173\047`/;$_=reverse;print"$_\040 $Camel\n";}foreach(@camel1hump){chomp;$Camel=$_;y/LJF7\173\17 5`\047/12345678/;tr/12345678/JL7F\175\173\047`/;$_=reverse;p rint"\040$_$Camel\n";}#japh-Erudil';;s;\s*;;g;;eval; eval ("seek\040DATA,0,0;");undef$/;$_=<DATA>;s$\s*$$g;( );;s ;^.*_;;;map{eval"print\"$_\"";}/.{4}/g; __DATA__ \124 \1 50\145\040\165\163\145\040\157\1 46\040\1 41\0 40\143\141 \155\145\1 54\040\1 51\155\ 141 \147\145\0 40\151\156 \040\141 \163\16 3\ 157\143\ 151\141\16 4\151\1 57\156 \040\167 \151\164\1 50\040\ 120\1 45\162\ 154\040\15 1\163\ 040\14 1\040\1 64\162\1 41\144 \145\ 155\14 1\162\ 153\04 0\157 \146\ 040\11 7\047\ 122\1 45\15 1\154\1 54\171 \040 \046\ 012\101\16 3\16 3\15 7\143\15 1\14 1\16 4\145\163 \054 \040 \111\156\14 3\056 \040\ 125\163\145\14 4\040\ 167\1 51\164\1 50\0 40\160\ 145\162 \155\151 \163\163 \151\1 57\156\056 # camel code, copyright 2000 by Stephen B. Jenkins # The use of a camel image with the topic of Perl # is a trademark of O'Reilly & Associates, Inc. # Used with permission.
今日はクワータになっちゃうからな 「せいなるかねのねが〜ひび〜くこおろおにぃ〜 さぁいはてぇ〜のまぁちぃなぁみぃを〜ゆめ〜にみるぅ〜 てぇんしぃ〜がそぅらかぁら〜お〜りてきぃて はぁるかぁくぅるぅまぁえにぃ〜ほほぅえみぃぅをくぅれぇたぁ〜 ここころおれないようにまぁけないように ろぉんりぃね〜 しぃろぉいこぉいびぃとぉが〜まぁっている〜 ぅだかぁらぁゆぅ めときぼうをむねにいだぃて
>>321 悪いが板ちがい。
プログラミングねたにしてくれ
323 :
:02/03/09 05:06 ID:4+C7ROZ+
板違いと思うのですが質問です。 1〜9、a〜zの文字を使って 4文字の英数字をランダムに生成するのは どのようにすればよいのでしょうか?
324 :
login:Penguin :02/03/09 09:55 ID:4PDxIO92
宿題は、自分でやるか、じっくり質問できる友達を作っとくかするモンだぞー 1: 1〜9、a〜zを格納した配列を用意 2: 9+26=35なので0〜34の乱数を発生 3: これを配列のインデックスににして、文字を決定 4: 2-3を4回繰り返し、文字列として結合 include <stdio.h> char table[35]="123456789abcdefghijklmnopqrstuvwxyz"; char randstr[5]; FILE *fp; int i; int tmp; if((fp=fopen("/dev/random","r"))==NULL){perror("/dev/random");exit(1);} for(i=0;i<4;i++){ tmp = fgetc(fp); randstr[i] = table[tmp%35]; } randstr[4]=0; fclose(fp);
325 :
login:Penguin :02/03/09 09:56 ID:4PDxIO92
あ。includeの前に#ぬけた。 あと、全角スペースいれてるから注意して。
326 :
login:Penguin :02/03/09 11:39 ID:3VUFTEsN
>318 ウケタ。 二次元配列使ってモナーの「ワケワカランワケデモナイ」 とかもできそうだね。
2chAAlibでもつくろーかと思ったけど、 用途が鬱なものしか思い浮かばないから、やめた... UNIX/Linux板がAAの嵐になるのもアレだし。
328 :
:02/03/09 23:51 ID:4+C7ROZ+
>>324 お手数お掛けしました。
有難う御座います。
329 :
login:Penguin :02/03/16 07:01 ID:8WW1ZYNb
ふう、半年かかってやっとcursesで色指定できるようになったぜ。(`_';)
>>326 作っても良いが固定ピッチ端末じゃAAがきれいに見えないのが辛い。
332 :
Vacker :02/03/17 02:32 ID:+a/Oz7wR
334 :
Vacker :02/03/17 07:16 ID:Ve6CaAn4
さぁ、きみたちもラモーに続いてyunyunとかvladimirになってくれ。
335 :
login:Penguin :02/03/17 07:52 ID:V4P8Ci8U
TurboLinux7のFTP版でJavaの開発されているかたいますか? フォントの設定を行ったにもかかわらず Cannot convert string "-ryobi-minchol-...." to type FontStruct と、コンソールにエラーが出てGUIでは文字化けしてしまいます どうしたら良いでしょうか? FTP版だとダメなんでしょうか? ちなみに、JustSystemのHPに載っている設定方法を試しました お願いします助けてください
336 :
:02/03/17 09:44 ID:gOZA0UlR
そのフォントTurboLinux7製品版にしか入ってねーだろ。
337 :
login:Penguin :02/03/17 09:47 ID:K5wvpRZW
>>336 ええ、ですからフォントの参照先を変えたいんですけど
どうすればよいのかわからなくって・・・
338 :
329 :02/03/18 18:12 ID:hViV/2q5
更にcursesでファンクションキー使えるようになったよ。 viのクローンでも作るわ。
なぜviクローンでファンクションキー?
Vim で使えるからじゃない?
世界時計 usage: wclock [-12〜+12] 日本の場合-9 % cat wclock #!/bin/sh if [ "$1" != "" ]; then TZ=XXX$1 export TZ echo " TZ=$TZ" fi echo " +=====================+" while : do date +" | %Y/%m/%d %H:%M:%S |" echo " +=====================+" sleep 1 echo -e "\033M\033M\033M" done
343 :
329 :02/03/19 04:29 ID:1mJ1+9mb
344 :
名無しさん@Emacs :02/03/19 08:47 ID:vx5jf9AK
345 :
329 :02/03/19 16:03 ID:1mJ1+9mb
>>329 rxvt はうまくいくけど kterm, Mlterm では
ファンクションキーの取得が出来ていない模様。
347 :
344 :02/03/19 22:13 ID:vx5jf9AK
>>345 =329
確かにktermだとF1〜F4が効かないみたいっす。
# ^Oとそれぞれ P,Q,R,S が入力されちゃう
F5〜F8は効くみたいだけど。
rxvtは入れてないから分かんないっす。
348 :
329 :02/03/20 02:54 ID:17hsvpxp
あ、おふたりとも試していただいてありがとうございます。 かくいう俺はKONの環境でやっています。 ぬー、まだまだ修行が足りないようですね。 これを応用してcursesでゲーム作ろうと思っています。(噸座しなければいいな・・
TurboLinux7のFTP版でJavaの開発されているかたいますか? フォントの設定を行ったにもかかわらず Cannot convert string "-ryobi-minchol-...." to type FontStruct と、コンソールにエラーが出てGUIでは文字化けしてしまいます どうしたら良いでしょうか? FTP版だとダメなんでしょうか? ちなみに、JustSystemのHPに載っている設定方法を試しました お願いします助けてください フォントの参照先を変えたいんですけど どうすればよいのかわからなくって・・・
350 :
login:Penguin :02/03/20 16:36 ID:ZXZH8grQ
>349 とりあえずローマ字ですれ。あとはWinでswingプログラミンゴすれ。
351 :
login:Penguin :02/03/20 18:27 ID:FC6U4/jB
354 :
login:Penguin :02/03/20 23:28 ID:qC/inkUP
>>348 cursesつかってアクションゲームはやめとけ。
俺は、音ゲーつくろうとして、悲しい思いをした(w
とりあえずインストールしてみたが、何が出来るのかさっぱりわからん
>>356 widestudioじゃない?
>>355 漏れもインストールしてみた。
Win版だけど…
とりあえず。helpでも読むかね…
ってこれg++やん。。。
コンパイラとリンカをgccに換えれば良いのかな…(ドキドキ
358 :
348 :02/03/27 15:54 ID:kfhea9b4
>>354 音ゲーってことはタイミングよくキーを押させるんですよね?
自分はgetch()関数しか知らないのですが、これでは
キーを押すまで全てが待ってしまいます。
なんかいい方法ないでしょうか?
そういうのは普通 select で見張るんじゃないか。
しかし、都度都度入力バッファをクリアしないと 先行入力が効いてしまいそうな感じ...(BASICのINKEY$みたく) 実行速度が速いならだいじょうぶか(でもキーリピートが...) INPにあたるものは無理かな(curses組んだことないので、なんとも)
>360 先行入力なんて全然恐くないと思うが。 キーリピートくらいかかっても全然キーバッファには たまらないと思う。どうしても必要なら2回目以降の 入力は単にread()して捨てればいいし。
362 :
login:Penguin :02/03/30 01:51 ID:mpZbUyZ2
>>361 curses使ってるときは、selectはダメでわ?
>>360 おとげーもどき作ったときのソースは、消しちゃってた。
当時のとは別だけど、「たしかこんな感じだったよなー」っての書いたYO!
363 :
login:Penguin :02/03/30 01:59 ID:mpZbUyZ2
364 :
362 :02/03/30 02:03 ID:92twwQN2
なんか
>>362 のレスがヘンなとこへ向きまくりでスマソ。
s/361/359/
s/360/358/っす。
365 :
login:Penguin :02/03/30 19:36 ID:dcJw2Jul
inputdemo.c.gzが解凍できません。ネタじゃないです ヘタレですみません。
366 :
login:Penguin :02/03/30 19:58 ID:bTREfqd2
ありゃ、まぢすか? gunzip inputdemo.c.gz で inputdemo.c ができませんか? それでダメなら、とりあえず、 less inputdemo.c.gz してみて下さい。(ブラウザが、勝手に展開してるのかも) もし、htmlヘッダみたいなの見えちゃったら、教えて下さいな。 対策考えるです。 これから出かけるんで、失礼。
367 :
login:Penguin :02/03/30 22:36 ID:dcJw2Jul
あ、できました。ちょっと時間かけて読んでみます。 ありがとう!kt_iさん
368 :
366 :02/03/30 23:36 ID:JPI70+38
ただいま。
>>367 よかったよかった。
んで、コメント多めに入れたつもりですけど、わかりにくいと思うんで、
誰でも何でも聞いて下さい。
あと、あまり普通のやり方じゃないかもしれないですし、問題とか
気づいた人、教えてください。煽りも歓迎。勉強させてくださいな。
開発環境も充実してきたけど皆どんなの使ってる? 自分は未だにviだけどもっと良い環境にしたい.. emacsの方が良いのかな.
371 :
369 :02/04/06 01:28 ID:carhLpBJ
今,sdldoc.csn.ul.ieとマニュアル見ながら勉強してるけどSDL結構良いね. しかも簡単だし. ビデオ関連とタイマー覚えたら簡単なゲーム作れそうだね. 基本ライブラリでbmp形式しか使えないのは痛いけど.(スプライト作れない?) 他にimlib使って端末上で2dでグラフィカルなゲームとかも作れそうだ.
372 :
login:Penguin :02/04/06 01:33 ID:mH55Z1Cz
>>369 開発環境はSAMBA+TELNET使ってWINDOWS2000からエディット
コンパイルするのが一番効率的かと。
373 :
login:Penguin :02/04/06 01:34 ID:uf9JfT1u
375 :
login:Penguin :02/04/06 08:59 ID:9GH2Tjkf
>>371 サーフェスに透過色指定できるから、透過色を決めておけばBMP
のピクセル列からスプライトも作れるよ。
376 :
login:Penguin :02/04/06 10:00 ID:Zy9CkOgp
>>371 折れは、
>>375 に加えて、スプライト管理関数みたいなの
つくって管理してる。
put_sprite(surface1,x1,y1);
put_sprite(surface2,x2,y2);
.
.
.
flush_sprite();
こんな感じ。
put_sprite()でSDL_Surface *sp[]に並べていく。
flush_sprite()で実際にscreenに背景と重ねてから
SDL_BlitSurface()してSDL_Flip()する。
377 :
login:Penguin :02/04/07 00:14 ID:YTBbGOwM
>>374 最初にそれはチェックしてましたがWinだと依存問題もあると辛い..
当分は基本ライブラリでなんとかやってみます.でもサンクスコ.
>>375 ,376
お陰でアニメーションも作れそうです,サンクス!
SDL_Flip使ってるって事はSDL_DOUBLEBUFとSDL_HWSURFACEをSDL_SetVideoModeでフラグ
で入れてるんだよね?
うちのはそれセットしてもSDL_VideoInfo()->hw_availableが1にならんからセットせず
にSDL_UpdateRect使ってるんだけど...
378 :
login:Penguin :02/04/07 00:19 ID:iVBGD2/e
>>377 そういう状態ならSDL_Flip()は、
SDL_UpdateRect(screen,0,0,0,0);
と同じように振舞うはず。# とバカ一代の記事にかいてあった。
HWSURFACEとかがダメなのは、XFreeとSDLのコンパイル時の問題かな?
それとも、rootで実行するとOnになったりしない?
379 :
login:Penguin :02/04/07 00:23 ID:iVBGD2/e
あと、SDL_Imageは、本当にラクだよ。 ImageMagickのconvertコマンドとかでフォーマット変えてからでも いいけど、やっぱPNGとか直で使えるのはラク。 a_surface = Image_Load("filename.png"); だけで、フォーマット自動認識だし。
380 :
login:Penguin :02/04/07 03:51 ID:cLABCWjB
381 :
login:Penguin :02/04/10 11:30 ID:Ps++pzgz
linuxにDelphi入れて使ってる奴いる? すごく簡単らしいんだが..
Linux に Delphi? ネタですか?マヂですか?
383 :
login:Penguin :02/04/10 13:22 ID:1o5n4Lts
384 :
381 :02/04/10 15:36 ID:Z/tOe28B
間違えた,s/Delphi/Kylix/で.
Delphi とおんなじだよ〜ん。 Glade より20倍楽! Qt より(以下略 Object Pascal 覚えなくちゃいけんけどねぇ。
Kylix 新規プロジェクト作成かなんかでアドレス違反とか逝ってくるから消し ちゃった。。。インストール失敗してたのかなぁ。。。
まだまだ不安定だよね。 > Kylix Ver3 くらいで安定するかな? Ver1 をだましながら使ってた。RH7.1
388 :
login:Penguin :02/04/11 00:20 ID:rg7n5KP/
>>387 そーなのかな?
Kylix2だけど、とりあえず変な落ちかたとかしたことないよ。
まだ使い込んでないけど。
389 :
login:Penguin :02/04/11 00:21 ID:rg7n5KP/
ちなみに、Plamoで使ってる。 setup.shが変なとこで止まるから、ちょこっと手を加えて インストールした。
390 :
login:Penguin :02/04/13 05:49 ID:6ipwzKQ/
SDL_mixer.hに逃げてやっとWavを再生でけた. SDL.hだけで音再生はサウンドプログラム未経験の自分には敷居が高すぎた.
391 :
login:Penguin :02/04/13 12:25 ID:5DTUvdcX
>>390 SDLのサウンドは、バッファを自分で埋めたり初期設定が少し面倒そう
だけど実際にやってみると「waveのメモリイメージを鳴らす」程度なら
意外に簡単でした。「リアルタイムにサウンドバッファを埋めバッファ
を再生する」仕組みが最初から準備されている分、サウンドプログラミ
ングの入門にも適しているかも。
392 :
login:Penguin :02/04/13 13:27 ID:5dKKtM8/
393 :
login:Penguin :02/04/14 12:11 ID:q7gMr4rA
>>391 うーん、単音ならいいんだけど、複数音をまぜようとすると、
やはり自前で音つくらないといけないし...
効果音として、A.wav を再生中、A.wavが再発声するときは
mixせずに再生バッファクリアしてA.wav再生、B.wavが
発声するときは、再生中のA.wavにB.wavをmixするようなときって、
どうやる?
ALSA直叩きしていたときは、再生バッファの明示的なクリアや
バッファ残り量を得ることができたらから、
1 A.wav再生中のバッファ残り量をはかる
2 A.wavの残り部分とB.wavをmix
3 再生中のバッファクリア
4 mix.wavを再生
みたいにやってたんだけど、SDLだけできるかな。
やっぱり、サウンド管理用のスレッドをわけないと厳しい?
# SDL_Mixer使って、
# 同じチャンネルで発声→バッファクリア
# 別チャンネルで発声→自動mix
# で幸せ状態なんだけどね。
394 :
login:Penguin :02/04/17 17:26 ID:AZ3pwp4s
(n)cursesの質問 printw()系の関数って横幅がウインドウに納まらなかったときは右端で 折り返すけど,日本語(2バイト文字と呼ぶのが正しい?)の1バイト目が 丁度右端に来たときも,何も考えずに2バイト目を次行に送って文字化け する.なにか回避方法ってある? printw()以外にもnewwin()で作ったウインドウが日本語に重なると 文字化けするよな……. Laser5 Linux7.2使ってます.関係ないと思うけど…….
395 :
login:Penguin :02/04/17 23:34 ID:Jy3zu4ia
うちのncursesのmanには、 The following EXTENDED XSI Curses calls in support of wide (multibyte) characters are not yet implemented: とかかいてあるけど... 現状だと、単に2byte文字が通るだけであって、いろんな面倒は 自前でみてあげないといけなさそうだねぇ。
396 :
394 :02/04/23 20:57 ID:Gza+0AGc
>395 しょぼーん.やっぱそうなのか・・・ ところで日本男児Linuxer諸兄は,コンソール指向(ってなんだ)の プログラム組むとき,どんなライブラリ使ってるの? 教えてちょ. できれば ・ダイアログ ・メニュー ・ボタン とかのありがちな処理ができるライブラリがあればいいんだけど・・・ 394の質問も,ダイアログを実装するためのものです・・・
うーん、コンソールでダイアログ使わないなぁ。 dialog系のコマンド使ってshellscriptってのはダメ? いろいろ派生物があるみたい>dialog。 中には、日本語通るのもきっとあるだろ。 折れは、bashでread 使ったものにするか、Xdialog使うなぁ。 # ruby使ってるときも、Xdialogは便利。
あげとこう。
X windowで半透明の窓はつくれますか?
>>339 「つくれるかどうか」でいったら、「つくれる」。
でもX11の機能としては、無い。自前で実装か、ライブラリさがさないと
だめだと思う。
Etermのソースでも漁ってください。
>400 レンダー拡張は?
402 :
login:Penguin :02/04/24 12:42 ID:m+3baTMC
>>394 cursesで改行をさせるようなプログラムって多用されてるんですか?
やるんなら事前に調整してaddstrとかaddchかな.
ダイアログ出したいっていうのはw3mみたいな事やりたいんですか?
それならw3mのmlが参考になるかも.
403 :
394 :02/04/24 17:46 ID:Y8k1KMwG
>>397 dialogいいっスね.しかし開発言語がC++なんスよ.というか
C++の勉強のために実用を兼ねてコンソールのアプリを作ってみようと
思いまして.
>402 addstrって……たとえば,新規ウインドウが掛かる部分(の日本語
の2バイト目)を空白文字とかで潰しておくとか?
イメージ的には「日本語編集可能なテキストエディタで,画面のまん
中に『保存しますか? [Y/n]』みたいなダイアログを出す」ということ
を考えています.つまりどの位置に日本語が来るかは不定,と.ついで
に保存する文字/改行コードを指定するラジオボタンとかもあるといい
かなー.
あと,w3mでダイアログってありましたっけ?? [o]とかだと全画面
が切り替わってしまうので(実装的にはこのほうが楽)…….
404 :
394 :02/04/24 18:00 ID:Y8k1KMwG
あ,w3mのソース見てたらマウス右クリした時のメニューをmvaddstrで しこしこ書いていた……(menu.c).no mouseでコンパイルしてたので 気付かなかった(汗). これ参考にしてみます.
405 :
400 :02/04/24 21:08 ID:ujxu+X0b
406 :
login:Penguin :02/04/24 21:53 ID:cUx0CTWk
407 :
400 :02/04/24 22:30 ID:ci3ObMz/
>>406 あ、折れはてっきり399=401かと思ってた。
折れが「自前でどーにかしる!」っていったから、
「X Rendering Extentionでどーよ?」ってつっこんでくれたんだね。
さんくす。
# つーか、今までDRIと同じものかとおもってたよ... > RENDER拡張
# 逝ってくる...
408 :
400 :02/04/24 23:27 ID:jSngFYFK
409 :
暇潰し〜 :02/04/25 00:37 ID:+hViL74o
/* * 連打測定ソフト:レンダ君 * 使い方: command time * 10秒毎にラップタイムを表示します * -lcursesつきでコンパイルして下さい */ #include <stdio.h> #include <sys/types.h> #include <sys/time.h> #include <curses.h> #include <unistd.h> static int wait_type(void); int main(int ac, char **av) { int retval; struct timeval now = {0, 0}; struct timeval start = {0, 0}; int c, i, t, rap; int timelimit= atoi(av[1]); int rapt=-1; c=i=t=rap=0; system("xset r off"); initscr(); cbreak(); noecho(); getch(); gettimeofday(&start, NULL); mvprintw(1,0, "数:%d", ++i); while (t != timelimit) { retval = wait_type(); if(retval) { getch(); mvprintw(1,0, "数:%d", ++i); } gettimeofday(&now, NULL); c = (now.tv_usec >= start.tv_usec) ? 0 : -1; t = now.tv_sec - start.tv_sec + c; if (t % 10 == 0 && rapt != t && t) { mvprintw(t/10+2, 0, "%d:rap %d", i, i-rap); rap=i; rapt=t; } mvprintw(0, 0, "time:%02d", t); refresh(); } if (t % 10 == 0 && rapt != t) mvprintw(t/10+2, 0, "%d:rap %d", i, i-rap); mvprintw(0, 0, "time:%02d", t); mvprintw(t/10+4, 0, "type 'q' to quit"); refresh(); while(getch() != 'q') ; clear(); endwin(); system("xset r on"); exit(1); } static int wait_type(void) { fd_set rfds; struct timeval tv = {0, 1000}; FD_ZERO (&rfds); FD_SET (0, &rfds); return select (1, &rfds, NULL, NULL, &tv); }
うーん、argcくらい見てくれ.... (;-;) でも、単純でもおもしろかったり(笑
これキーリピートきかないようにするにはどこいぢったらいいのだ?
412 :
login:Penguin :02/04/25 14:05 ID:1gvkucKX
キーリピートはsystem("xset r off");の所でoffにしてますよ. 最後system("xset r on"); で終了時にonになります. これは指の筋肉増強の為に作りました. 昔のシュウォッチみたいなもんですね.
>>412 あれ?cygwinだからかな?キーリピートきいてるの。。
>>413 もしもし?ここはLinux板ですが?(わ
416 :
login:Penguin :02/05/01 10:07 ID:KFBqztXK
へぇ、tclってこんな事できるんだ。 おもろいね。
tclでテキストエヂターを作ってみようぜ。 まずは、wishと打って、tclのインタプリタを起動しよう。 そうしたら、 text .tx0 と入力してtextウイジットを作ろうぜ。 まあ、ウイジットって言うよりはWindows的に言えばオブジェクト って呼んでもいいな。 オブジェクトが出来たら、wishが作ったウインドウに張り付け 鳴きゃ行けないよな。そこで、 pack .tx0 とするのさ。どうだい、簡単にエヂターが作れただろ?
tclで作ったエヂターで日本語を入力するには、[Ctrl]+[¥]キー を押せば入力できるはずさ。[Ctrl]+[o]でoffになる。 この辺りはmuleとおんなじさ。
419 :
login:Penguin :02/05/28 13:25 ID:9EabqzpY
request_irq() の第3引数ですが、 SA_SHIRQを指定した場合、同じIRQを共有するドライバは 全てSA_INTERRUPT付きか全てSA_INTERRUPT無しでないといかんと ゆーよーな話を小耳に挟んだんですが、何かまずい事情があるんでしょうか? メーカー製のドライバを入れたらエラーでまくりでまともに動作しなかったので いろいろ調べてみたらSA_INTERRUPT付きと無しのドライバが混じって 同じIRQを共有していたんで。 混ぜたらrequest_irq()が失敗してもよさそうなもんなのに しっかり成功してのも謎です(kernel 2.2.20)。
420 :
login:Penguin :02/05/28 14:03 ID:HcFeu/kp
>>419 俺もあまり詳しくはないけど、そのあたりは 2.0->2.2 で変わったyo。
SA_INTERRUPT はハンドラ走行中に割込み禁止するフラグだから、
IRQ の共有とは直接は関係ないんじゃないか?
arch/i386/kernel/irq.c あたりを読んでみればすっきりすると思われ。
421 :
login:Penguin :02/06/01 19:01 ID:GchLRA1j
初期文字列指定付きのreadline風行入力ライブラリってありますか? たとえば「ファイル名を変更する」時に行入力を使う場合、 元のファイル名を指定できなければならないんですが…… できればLGPLがいいなぁ
422 :
login:Penguin :02/06/01 20:01 ID:3AZ8uYf0
tclでエディタできた。
423 :
login:Penguin :02/06/01 22:54 ID:1Mas3Mij
>>421 俺はformライブラリを使った。
多分もっと良い方法もありそうだが、
そこは俺がへたれという事で…
424 :
421 :02/06/02 01:05 ID:uSBPGDj6
>423 サンクスコ。初めて聞いた・・・と思ったらインストール済みだった(赤帽
425 :
login:Penguin :02/06/03 20:26 ID:pNev0Yh6
一つのソースでいろんなディストリに対応させたいんですが、どうやればいいんでしょうか? 言語は、Cです。できればLinuxだけではなくて、FreeBSDなどにも対応させたいのですが、 どうやったらいいでしょうか? #ifdefでスイッチさせることはできるのでしょうか?
>>425 GNU のソース何でも良いから見てみ。
#ifdef 使わなくても、共通ライブラリだけで作れるコードなら
余裕でコンパイル可能。
CプログラムからIFSを参照する方法ありますか。 getenvしようとしたけどNULL返ってくるんですけど。
age
>>427 IFSは、普通は環境変数じゃなくてShell変数。
だから、あらかじめ明示的にexportしてやらないとダメじゃないかな?
430 :
427 :02/06/20 01:41 ID:CphBQpNt
そうですか。 shell変数は参照できないんですか… ありがとうございました。
>>430 shell変数は、shellが個別に内部で持っている変数。
環境変数とはちがうYo!。
どうしても必要なら、export IFSしてから自作プログラムを
execするshell scriptを使えばいいと思う。
432 :
1113 :02/06/28 15:53 ID:SCOUjbnn
簡単なプログラム知りたいです
433 :
login:Penguin :02/06/28 22:14 ID:l/6ZxngJ
>>432 ほれ、単純だけど、ちゃんと機能するcatだ。
#include <stdio.h>
void print_usage(char *me)
{
fprintf(stderr,"Usage: %s filename\n",me);
return;
}
int main(int argc, char **argv)
{
FILE *fp;
char buf[1024];
int i;
if(argc < 2){
print_usage(argv[0]);
exit(1);
}
for(i=1;i<argc;i++){
fp = fopen(argv[i],"r");
if(fp == NULL){
perror(argv[i]);
exit(1);
}
while(fgets(buf,1024,fp)){
fputs(buf,stdout);
}
fclose(fp);
}
return 0;
}
434 :
login:Penguin :02/06/29 11:55 ID:wHqTASTH
休日だぞ。 ずれなくするオナジナイやるから、おまいらも、なにかソースうぷしる!! #!/usr/bin/env ruby require 'jcode' $KODE='e' while gets do a = $_.gsub(" "," ") puts a.gsub("\t"," ") end
435 :
login:Penguin :02/06/30 22:19 ID:ljPApLVf
SDLついでにからage〜
int *ip = new int[rand()]; delete ip; //(;´Д`)ハァハァ
(´-`).。oO(rand()が0を返したらどうなるんだろう?)
つーか、配列の解放はdeleteでなくてdelete []だろ。
int *ip = new int(0); delete[] ip; //(;´Д`)ハァハァ
440 :
login:Penguin :02/07/03 22:09 ID:sv4PfTDc
422とか485ってドライバある?
while(1){ int *ip = new int(0); delete[] ip; }//(;´Д`)ハァハァハァハァハァハァハァハァハァハァハァハァハァハァハァハァハァハァハァハァハァハァハァハァ
do { cout<<"Jesu joy of man's desire(・∀・)"<<endl; } while (false);
443 :
login:Penguin :02/07/04 02:48 ID:YpwuZxrO
perl+cursesでプログラムを書きたいと思ったのですが PG板でもらったソースを実行しようとしたら Curses.pmが無いと言われたのでそのまま落として 先程のを実行したところ、エラーがいっぱい出ました。 .pmはちゃんとインストールしなければいけないのでしょうか?
444 :
login:Penguin :02/07/05 12:25 ID:19Dq7F42
おまいら、ソースを書け、そしてageるのじゃ!
>>443 どーゆーエラーが出たのか書かんと...
>>443 インストールしないと動かないだろ。
たまに動くモジュールもあるけど。
#include <GL/glut.h> #include <sys/time.h> #include <stdlib.h> #define QX 0.0 /* 球の初期位置のx座標値 */ #define QY 1.5 /* 球の初期位置のy座標値 */ #define QZ (-5.0) /* 球の初期位置のz座標値 */ #define G (-9.8) /* 重力加速度 */ #define V 25.0 /* 初速度 */ #define TSTEP 0.01 /* フレームごとの時間 */ struct timeval tv_now; struct timeval tv_start; /* 開始時間 */ int nstep=0; /* * 地面を描く */ void myGround(double height) { static GLfloat ground[][4] = { { 0.6, 0.6, 0.6, 1.0 },
{ 0.3, 0.3, 0.3, 1.0 } }; int i, j; glBegin(GL_QUADS); glNormal3d(0.0, 1.0, 0.0); /* 法線ベクトルの設定 */ /* 10x10 の床 */ for (j = -5; j < 5; j++) { for (i = -5; i < 5; i++) { glMaterialfv(GL_FRONT, GL_DIFFUSE, ground[(i + j) & 1]); /* タイル描画(1つ分) */ glVertex3d((GLdouble)i, height, (GLdouble)j); glVertex3d((GLdouble)i, height, (GLdouble)(j + 1)); glVertex3d((GLdouble)(i + 1), height, (GLdouble)(j + 1)); glVertex3d((GLdouble)(i + 1), height, (GLdouble)j); } } glEnd(); } /* * 画面表示
*/ void display(void) { static GLfloat white[] = { 0.8, 0.8, 0.8, 1.0 }; /* 球の色 */ static GLfloat lightpos[] = { 3.0, 4.0, 5.0, 1.0 }; /* 光源の位置 */ static double px = QX, py = QY, pz = QZ; /* 球の位置 */ /* 画面クリア */ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); /* モデルビュー変換行列の初期化 */ glLoadIdentity(); /* 光源の位置を設定 */ glLightfv(GL_LIGHT0, GL_POSITION, lightpos); /* 視点の移動(物体の方を奥に移す)*/ glTranslated(0.0, -QY, -10.0); /* シーンの描画 */ myGround(0.0); /* 高さは0 */
glTranslated(px, py, pz); /* px, py, pz に移動 */ glMaterialfv(GL_FRONT, GL_DIFFUSE, white);/* 拡散反射光強度の設定 */ glutSolidSphere(0.1, 16, 8); /* 球体 */ glutSwapBuffers(); pz = QZ + V*nstep*TSTEP; printf("%f\n", pz); } void resize(int w, int h) { /* ウィンドウ全体をビューポートにする */ glViewport(0, 0, w, h); /* 透視変換行列の指定 */ glMatrixMode(GL_PROJECTION); /* 透視変換行列の初期化 */ glLoadIdentity(); gluPerspective(30.0, (double)w / (double)h, 1.0, 100.0);
/* モデルビュー変換行列の指定 */ glMatrixMode(GL_MODELVIEW); } void mouse(int button, int state, int x, int y) { switch (button) { case GLUT_LEFT_BUTTON: if (state == GLUT_UP) { /* 時刻調査 */ for (;;) { gettimeofday(&tv_now, NULL); if ((tv_now.tv_sec - tv_start.tv_sec) + (tv_now.tv_usec - tv_start.tv_usec)/1000000 >nstep*TSTEP) { display(); nstep++; } if (nstep == 500){nstep=0;break;} } } break;
default: break; } } void keyboard(unsigned char key, int x, int y) { /* ESC か q をタイプしたら終了 */ if (key == '\033' || key == 'q') { exit(0); } } void init(void) { /* 初期設定 */ glClearColor(1.0, 1.0, 1.0, 0.0); glEnable(GL_DEPTH_TEST); glEnable(GL_CULL_FACE); glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); }
int main(int argc, char *argv[]) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_RGBA | GLUT_DEPTH | GLUT_DOUBLE); glutCreateWindow(argv[0]); glutDisplayFunc(display); glutReshapeFunc(resize); glutMouseFunc(mouse); glutKeyboardFunc(keyboard); init(); glutMainLoop(); return 0; }
無駄に長いな、鬱。。 コンパイルは gcc -o gltest gltest.c -L/usr/X11R6/lib -lglut -lGLU -lGL -lXmu -lXi -lXext -lX11 -lm などとやって下さい。
455 :
login:Penguin :02/07/05 22:48 ID:dC/skGRi
どうでもいいけど、海外のMLの過去ログってけっこうわかりやすいから英語の勉強になるよね。
456 :
login:Penguin :02/07/05 23:18 ID:7jOR47Ou
the programming language C++ third edition なんかいいでっせ。
>>456 とりあえず、ソフトバンクので困らないと思われ。
むずかしさは...まぁ、上二つはあまり変わらん。下は持っていない。
でも、ピアソンのが新しいっちゃ新しいよね。
あとは、ぼんやりとでもいいから、何か作りたいものをイメージ
しながら読むといいと思う。
「これはあんなとこにつかえそぉ」とか、具体的に読み進められる。
>>454 お疲れ〜。でも、うちにはOpenGL環境ないんです(w
>>456 本もいいけど、他人の書いたコードを読むのも勉強になるよ。
460 :
login:Penguin :02/07/06 00:20 ID:LbUe5eHh
>>459 御意,,と、口ばかりじゃアレなんで、454のソース読んでみたよ。
で、気づいたこと。
mouse()の中でfor(;;){ if(){break;}}使ってるけど、
do{}while();の方が、意味的にもいいよね。
あと、そもそもこれちゃんと動かんだろ?
tv_startは初期化されていないし、
(tv_now.tv_usec - tv_start.tv_usec)/1000000とかやっても、
0しか戻らないし...
461 :
login:Penguin :02/07/06 00:22 ID:LbUe5eHh
そもそも、(おそらくは)マウスイベントのハンドリングの為だけ とはいえ、for(;;)のビジーループが存在するだけで許せんぞ。
>>461 あぁ、そこらへんは適当だよ。とりあえず動くという程度のプログラムだから。
白黒のタイルに浮かんでるボールがこっちに向かってくるプログラムだよ。
> あぁ、そこらへんは適当だよ。 つーか、適当に書くとビジーループになるのが信じられん。 適当に書くときはusleep()使えよ。数倍楽だろ。
464 :
login:Penguin :02/07/06 04:00 ID:llRDQuK0
>>444 4芯のなら大丈夫だと思うけど、2芯のだとダメくない?
465 :
login:Penguin :02/07/06 16:12 ID:XQZfZLNG
コード書く人はコンソールなのかな?
466 :
login:Penguin :02/07/06 19:22 ID:llRDQuK0
std::time_t t; std::time(&t); cout<<"date: "<<std::ctime(&t)<<endl;
468 :
login:Penguin :02/07/09 07:44 ID:dI8y656h
僕はviだなぁ。(と言うよりviしか使えませぬ) はぁ、鬱。
470 :
login:Penguin :02/07/10 23:09 ID:Umbonmar
http://pc.2ch.net/test/read.cgi/linux/1025048946/96-103 こういう風に、物理シミュレーションとして
速度 += 加速度 * 時間
ってやっちゃうと、誤差が蓄積していく。
だから、あらかじめ毎回全エネルギーを計算しておいて、
毎回 全エネルギーから位置エネルギーをさっぴいて、
運動エネルギーを出して現在速度を算出、
また、位置エネルギから加速度を計算して、現在速度に
加速度*ステップ時間を加え、次の位置を計算して、
次回フレームの位置をだす。
で、新しい位置での位置エネルギーを計算して、全エネルギーから
さっぴいて運動エネルギーを...
ってやれば、一応発散も収束もしない定常的な運動が実現できるはず。
471 :
login:Penguin :02/07/10 23:24 ID:wVIFNohY
perlってすごいの?
すごいよ。
>>471 こないだあるツールを最初シェルスクリプトで書いたですよ。
sed を百回くらい呼び出すお化けになったですよ。死ぬ程遅い。
次に妥協して bash 固有機能を使ったら 10 倍くらい改善した。
それを perl で書き直したら更に 5 倍速くなったよ。
しかも断然書きやすい。すごくよみにくいけど。
475 :
ばねばね :02/07/11 03:45 ID:bhGnPQRz
>>470 エネルギーが保存されてる状態ならそれで行けるかな。
エネルギーが時間の関数でエネルギー自体を差分で求めていく事になると
やっぱり速度を求める時に誤差が出そうな気が。。
まだ組んだ訳では無いので何とも言えませんが。
さっき改めてsodaplayやってみたら、
○ばねの振動は減衰する(現実に則してる)
○地面のはねかえり係数は1未満(上に同じ)
○筋肉の存在(減衰の無いばね?)(生物チックな動きの元)
と言うことが分かりました。ますますややこしい。。
とりあえず簡単な質点の運動から考えてみます。(ばね系はちょっと後回しで)
476 :
ばねばね :02/07/12 03:22 ID:pljjbWtA
void display(void) { static struct timeval oldt = {-1, -1}; /* old time */ static struct timeval nowt; /* new time */ int i; glClear(GL_COLOR_BUFFER_BIT); glColor3d(0.0, 0.0, 1.0); switch (g_Mode.mode) { /* ステータス表示 */ case SIMULATE: sd_mvAddStr(5, 30, "mode:SIMULATE"); break; case CONSTRUCT: sd_mvAddStr(5, 30, "mode:CONSTRUCT"); break; default: sd_mvAddStr(5, 30, "mode:"); break; } if (g_Mode.mode == SIMULATE) { /* シミュレーションモード */ if (oldt.tv_sec == -1) { gettimeofday(&oldt, NULL); for (i=0; i< g_nmass; i++) g_Masslist[i].a[1] = -G; } else { gettimeofday(&nowt, NULL); if (sub_timeval(nowt, oldt) > STEP_TIME) { for (i=0; i< g_nmass; i++) { if (g_Masslist[i].x[1]<0 && g_Masslist[i].v[1]<0) g_Masslist[i].v[1] = -g_Masslist[i].v[1]*e; else { g_Masslist[i].x[1] += g_Masslist[i].v[1]*STEP_TIME; g_Masslist[i].v[1] += g_Masslist[i].a[1]*STEP_TIME; } } oldt=nowt; } } } if (g_Mode.mode == CONSTRUCT) oldt.tv_sec = -1; /* initialize old time */ if (g_nmass > 1) { /* 記録したデータで線を描く */ glColor3d(0.0, 0.0, 0.0); for (i=0; i< g_nmass; i++) sd_mvDispTrianglePoint(g_Masslist[i].x[0], g_Masslist[i].x[1]); glBegin(GL_LINES); glEnd(); } glutSwapBuffers(); }
477 :
ばねばね :02/07/12 03:24 ID:pljjbWtA
質点の重力のみがかかる時のシミュはでけた気がする。。 次は筋肉でもやろ。
なんでそんなに移植性のない方法を
479 :
login:Penguin :02/07/13 01:33 ID:V6lw6K5b
みなさん、ioctlって何て呼んでます? 1) アイ・オー・コントロール 2) アイ・オー・コトル 3) アイ・オー・コトロ 4) アイ・オー・クツル
半泣き顔こんとるろーる
perl/cursesやりたいな
482 :
ちょっちやってみた :02/07/13 04:16 ID:4FQ5CT5Q
perl -e 'use Curses; initscr();cbreak();noecho();refresh();getch();clear();endwin();endwin();' う〜ん。Cじゃ駄目?
483 :
login:Penguin :02/07/13 04:17 ID:4FQ5CT5Q
endwin();が二つも(w
モジュール自分でコンパイルしなきゃいけないんだってね。 昨日買った独習Perlはあんまり読んでないです。
コンパイルするわけねえよな
486 :
login:Penguin :02/07/13 07:05 ID:4FQ5CT5Q
マジレス、プログラムに集中したいならdebianとかvineみたいに プログラムのインストが楽なのが良いよ。いちいちコンパイルするの 面倒でしょ?
↑?
>>487 ほっとけ。多分486はプログラム言語・環境を自分でインストールする必要が
ないディストリビューションのことを言ってるんだろ。
コンパイルしないですむプログラムってPerlとかsed,awkをちょろって使うことを
想像するよな。普通ソース書いて、コンパイルしてプログラムを作って、実行する
のが当たり前なんだが。
そういうことも書けない 486 はDQNってことで。
>>486 LaTeX とかだと apt とかでサラーっとインストールも魅力的だけどね.
486系がDQN?(´・ω・`)
490 :
login:Penguin :02/07/13 18:46 ID:Ml46bmEz
みんな、WinとLinuxとで、プログラムをどこまで共通化してます? 環境依存部分とOS依存部分とマシン依存部分 どこまでどうやってわけてるのか興味津々。 DelphiとKylixだとそのあたりで手を抜けそうだけど ふつーのCだと線引きが面倒っつーか、いまいち 知識と経験が足りなくって・・・。
492 :
login:Penguin :02/07/13 22:39 ID:KT9e5gI7
いまさらという感じでXlibの質問で何だが Xで画像を表示するときはXPutImage(XShmPutImage)を つかうと思う(ここですでに間違っていたりして...) んで、そのためにはXImage構造体に表示する内容を格納しなきゃ いけないわけだけど、これをXPutPixelなんかでやっていたらむちゃ 時間かかる。 そこでXImage構造体に直接値を代入しているわけだけど、そんなこと すると、Xの色数とか、ビットエンディアンなんかに気をつかわないと いけない... なんか、正攻法で速い方法って、ないっすか? (用途としては、メモリ上の画像を表示するとか。さらにそれを なめらかにフェードイン、フェードアウトするとか。) さらにいうと、フェードイン、フェードアウトするためにXAllocColorをすると これもしゃれにならないくらい時間がかかる(256色で0.5秒くらい)
ちょっと待って。 Linux使いなんだから当然プログラミングしてるよね??
このスレを読んでいる→プログラミングしている人が多い は いえるかもしれんが Linux使い→当然プログラミングしている は 成り立たないと思われ。
>>492 XF86のDGA extentionとか、そっち方面かな?
Xlibいじるのが目的じゃなくて、何も考えずに
フェードイン/アウトとかやりたいっていうのなら、
SDLあたり使う方が楽だよ。多分。
496 :
500 :02/07/14 03:55 ID:0+95ASAZ
shもプログラミングのうちに入りますよね?
497 :
login:Penguin :02/07/14 09:20 ID:SNv7+3Vh
498 :
492 :02/07/14 09:27 ID:AysUSjKQ
>>495 それも考えたが
XFree86でないXサーバとかでも使えるように、とか考え出すと
ふつうのXだけで動くようには、しておきたい...
(ゲームとかでなく、凝った画面表示はおまけのプログラムなので)
SDLって、どれくらい使われているのかな
(Linux以外を含めて)
499 :
login:Penguin :02/07/14 09:43 ID:E/smBifZ
500 :
login:Penguin :02/07/14 09:49 ID:w9MjeXdq
このスレ寿命が長いね。あと2ヶ月で1年だ!!
501 :
login:Penguin :02/07/14 10:34 ID:Ls0TW+0x
gccのC++実装でどうですか? 3.xとかはまともに使えるのかな。 インストール出来なかったんでほっぽってありますが。 2.95とかでstringのat()使おうとしたら、そんな関数ねぇとか言われた
502 :
login:Penguin :02/07/14 12:58 ID:BTJFLzrS
>>498 よくわかんないけど、Imagemagickとかの実装が参考にならないかな?
# あれも遅いけど、内部データ形式が富豪すぎるせいもあるし...
503 :
493 :02/07/14 15:20 ID:l0t3RQmI
>>494-500 そうなのか〜
テッキリこの板の住人は皆ハイパープログラマだと思ってYO
どっちかっつーと、ハイパーオリンピックかな?
507 :
login:Penguin :02/07/14 23:57 ID:Yx/MjdL4
ところで、テンポラリファイルを作る際、 mkstemp をつかうけど、これだと 拡張子が指定できないよね? /hoge/piyo/hogeXXXXXX.log という感じの ユニークなファイル名を作りたい時には どうすればいいのかな?
>>507 hogeXXXXXX を作った後 rename すればいい。
>>501 私もg++2.95でstd::string::at()が使えないのはどうかと思ったが、
3.xならちゃんと使えるよ。
at使えない? 俺の使えてるみたいだけど・・・ ちょっとテストしてこよっ
512 :
510 :02/07/15 01:01 ID:8uxB0aKC
自分で言っておいてナンだけど、 コンパイラというかライブラリの問題のような…。
>>509 ごめん。アルコールが抜けるとその手は駄目だとわかった。
rename の変名先が既に存在していたら...
>>513 fstat()かけてからじゃダメなの?
>>514 fstatとrenameの間にその名前のファイルが作られる可能性がある。
516 :
login:Penguin :02/07/15 14:30 ID:0oQu5eSd
>>515 次善の策として、ファイルを作成するとき(renameでなく、
あらかじめファイル名を求めておいて)O_EXCLモードでオープン
するというのは?
ファイル名を作成してから実際にファイルをつくられるまでに
ファイルがつくられる可能性はかわらないが、その場合はファイルオープンに
失敗して発見はできる。
しかし、こんな用途に使える関数が...
manをみると、テンポラリファイル作成には
mkstempを使えとあるし、しかしそのmkstempはどれくらいの
プラットフォームで使えるのだろうか...(BSD 4.3としか記述がなかったが
個人的にはなるべくPOSIXにはいっている関数で組んでおきたい)
518 :
login:Penguin :02/07/16 00:58 ID:hmm5jBHR
>>515 そんな事態がどれほどあるかと小一次完...
1 まず、hogeXXXXを作る
2 hogeXXX.logをrwで開き
3 fstatで確認後
4 flockをして
5 hogeXXXからhogeXXX.logへデータを移す
とか考えたけど、
>>517 が正解だねぇ。
int fd;
char tmpfname[1024];
int rnd;
srand(time(NULL);
do{
rnd = rand()/10000;
sprintf(tmpfname,"/tmp/hoge%4d.log",rnd);
fd = open(tmpfname, O_WRONLY|O_CREAT| O_EXCL);
}while(fd<0);
でどーよ?
519 :
507 :02/07/16 02:34 ID:KYuQ4RbT
>>517 manを読むと、そういう生成方法はなんかセキュリティ上
問題があるとかなんとかあった気がしたので
その方法は避けてましたが、冷静に考えてみたら
自分が必要としてる用途ではセキュも糞もなかったので
その方法採用しますた。
よく、設定ファイル(hoge.conf)などがありますが、これらを 簡単に扱うためのCのライブラリとかってありますか? Winだと hoge.ini を扱うライブラリって言語とわず 結構見かけるじゃないですか。 それとも、普通は hoge.conf に実行属性付けておいて 実行して環境変数への代入しておいて、アプリケーション内からは 環境変数を取り出す、などというのが一般的?
521 :
520 :02/07/20 18:21 ID:vJNkwLNH
おっとage
522 :
login:Penguin :02/07/20 18:36 ID:ybTf4BtK
>>517 mkstemp()が無ければBSDあたりから持ってくればいい。
ちなみに、FreeBSDのmkstemp()はO_EXCLでオープンして失敗したら
別の名前でやり直す実装だったから、方法としてはO_EXCLで正解と
思われ。
>>522 つまり mkstemp のソースを持って来て改造するのがベストと思われ。
524 :
login:Penguin :02/07/20 23:50 ID:r/nNTTXO
>>520 ごめん、しらない。
でも、環境変数レベルでどうにかなる問題だったら、
実体をshellscriptからexecするようにしておいて、
shellscript内で設定ファイルをsourceするってのも手だよね。
525 :
login:Penguin :02/07/21 00:00 ID:ZAjMssmn
>>520 パーサーがあるかと言うことならlibxmlやguileを使えば良いかと。
設定ファイルなんて仕様がバラバラだから汎用性のある物と言うならば結局上記の様な
物になるのでは?
自分でライブラリ作っても良いけど。
環境変数程度の物ならregex使ってパースしてハッシュテーブルにでも入れれば大抵
の用途では事足りると思う。
526 :
520 :02/07/21 00:08 ID:NmOGkAVi
一般的(?)には、どんな設定ファイルもまあ基本的には # コメント 変数=内容 って感じだと思います。(例外いっぱいあるけど気にしない) というわけで、やっぱ環境変数から取得するという形にしよう思います。 これならある程度汎用的になるし、アプリの作り方次第ですが 設定ファイルを弄ることなく実験的に設定を動的変化させたりってのも できたりできなかったりするかも
527 :
login:Penguin :02/07/21 01:04 ID:dTOBAnJx
> 設定ファイルなんて仕様がバラバラだから汎用性のある物と言うならば結局上記の様な > 物になるのでは? 逆に、適切な規模の汎用的なライブラリがあったら、 /etc/以下もすっきりできるかもねぇ。 いろんなアプリで使われるものに、Xのリソースファイルが あるけど....うーん。
>>526 前どっかのスレで同じような質問を見かけたな。
確か vector にそんなライブラリがあったような。
newtライブラリって何処にもヘルプ無いの? googleで検索してもあんまり情報無いんですよ。 もしあれば何処にあるか教えてください。
531 :
login:Penguin :02/07/28 01:27 ID:/TjeW2In
デバイスドライバを作ってる最中なんですが デバイスドライバの中から他のデバイスを叩いたりって あんまりやっちゃいけないことなんでしょうか?
>>531 >デバイスドライバの中から他のデバイスを叩いたりって
>あんまりやっちゃいけないことなんでしょうか?
いまいち、何がやりたいかわからないんだけど、
ディバドラ自体分割しといて、アプリ側で複数のディバイスを
開いて...ってんじゃ、解決しないの?
534 :
login:Penguin :02/08/19 02:03 ID:DTCyhgpP
∩
| |
| |
∧_∧ | | / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
( ´Д`)//< 先生!
http://www.linuxassembly.orgって / / \ 既に日本語版のサイトありますか?
/ /| / \__________________
__| | .| |
\  ̄ ̄ ̄ ̄ ̄ ̄ ̄\
||\ \
||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄
|| || ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ヤクスノツカレターヨ・・・・
.|| ||
535 :
login:Penguin :02/08/19 13:20 ID:1KCofkxZ
Cの文法はだいたい把握しますた。 んで実際のコード読んで勉強したいんだけど、 小規模で比較的理解しやすいパッケージ(?)をいくつか教えてください。 出来ればdeb-srcで簡単にとってこれる( debパッケージなやつ)おながいします。
>>535 apt-get source hello
537 :
login:Penguin :02/08/19 13:26 ID:SYrEFqYi
>>535 shellutils とか fileutils とかの小粒のツール群がいいのでは?
ed のソースとかもよさげだ。
538 :
login:Penguin :02/08/19 14:13 ID:H68Oku5X
hello... debパッケージまであるとは知らなかった。
540 :
login:Penguin :02/08/19 15:13 ID:p8153rqD
シリアルプログラムで、パリティチェックを有効にしているとき read中にパリティエラーを検出したとき、 ユーザはエラーの発生をどうやって知るのでしょうか?
541 :
login:Penguin :02/08/19 18:03 ID:jyYsRY2h
えらく豪華なタイトルの本だなあ、ワシも欲しいぞい
>>542 あ、ピアソン版ではタイトルに「環境」が無い。ていうか俺の記憶違い?
カーニハンのと混同して記憶してた。手元には原書しか無かったんで許してちょ。
>>536 始めネタだと思ったけど、検索したらマジで存在した。。。
548 :
login:Penguin :02/09/16 02:11 ID:nBHpwc4g
#include <cmath> namespace { const double conservation; } cout<<std::sin(conservation)<<endl;
~$ cat a.C #include <cmath> namespace { const double conservation; } cout<<std::sin(conservation)<<endl; ~$ g++ a.C a.C:2: uninitialized const `{anonymous}::conservation' a.C:3: syntax error before `<' ~$
550 :
けっ :02/09/17 01:56 ID:dQYhPsY7
#include <iostream> #include <cmath> namespace { const double manko = -1; } int main(){ std::cout<<std::sqrt(manko)<<std::endl; }
551 :
けっ :02/09/17 01:57 ID:dQYhPsY7
int main(){ std::cout<<std::sqrt(manko)<<std::endl; return 0; }
簡易スニファ作りたいんですけど もちろんC言語!!
libcap でも使っとけば?
554 :
login:Penguin :02/09/26 16:59 ID:1HbHU/pc
using hikky::_553;
今だ!555ゲットォォーーー!!  ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ (´´ ∧∧ ) (´⌒(´ ⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡  ̄ ̄ (´⌒(´⌒;; ズザーーーーーッ
任意のホストにrstパケットを送りつけるプログラムを書きたいのですが 誰かたすけて...
557 :
login:Penguin :02/11/06 15:10 ID:pzGtsriT
age
558 :
login:Penguin :02/11/09 13:14 ID:DzefQovG
Λ_Λ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ( ・∀・)<ageて保守だからな ( ) \____________ | | | (__)_)
560 :
login:Penguin :02/11/09 18:18 ID:QawdyZfx
え、 >pcサーバは 600超えたら 500スレッドに圧縮実施中。。。 ってそういう意味なの?
はい。 たしかLinux板は前回9月半ばに圧縮されました。
>>556 書かなくても sendip をコンパイルすればいい。
563 :
Vacker :02/12/05 02:41 ID:Z7wMsMwz
566 :
Ahow :02/12/09 07:30 ID:1t8m8tVH
567 :
login:Penguin :02/12/24 13:06 ID:4Ul6DjfP
VBみたいに敷居が低いプログラミング言語&環境(?よくわからん) はありますか?
568 :
login:Penguin :02/12/24 13:12 ID:90NycLOk
570 :
567 :02/12/24 13:43 ID:4Ul6DjfP
今、自分は GUIが要らない場合→Perl GUIが要る場合→VB なんです。
572 :
567 :02/12/24 14:02 ID:4Ul6DjfP
まず、WinにてDelphiで遊んでみることにしました。 ありがとうございました。
573 :
Vacker :02/12/31 01:51 ID:6qGhqv72
574 :
Vacker :03/01/01 03:51 ID:RloUA5wC
お前らちょっと俺は今日ブルーだ。何故かって? それはだな、フカキョンの掲示板にファンとして書き込んだら管理人が俺の 書き込みを消やがったからさ。なんで俺の素直な書き込みを消すんだよ! 変なのは名前だけだ炉!もっと素直になれ! ・・・まぁ、まったりしている掲示板で俺だけが浮いていたのは、正直本当の事 なんだがな。
575 :
login:Penguin :03/01/01 11:51 ID:Ak2se5Qh
IP記録実験
http://qb.2ch.net/test/read.cgi/accuse/1042013605/ 1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日:03/01/08 17:13 ID:???
そんなわけで、qbサーバでIPの記録実験をはじめましたー。
27 名前:心得をよく読みましょう 投稿日:03/01/08 17:20 ID:yL/kYdMc
SETTING.TXT管轄でないということは全鯖導入を視野に、か?
38 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:22 ID:rLfxQ17l
>>27 鋭いです。
73 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:27 ID:rLfxQ17l
>ところで、IPが抜かれて何か今までと変わることってあるのでしょうか?
・今までより、サーバが重くなる。
・裁判所や警察からの照会があった場合にはIPを提出することがある。
IP記録実験
http://qb.2ch.net/test/read.cgi/accuse/1042013605/ 1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日:03/01/08 17:13 ID:???
そんなわけで、qbサーバでIPの記録実験をはじめましたー。
27 名前:心得をよく読みましょう 投稿日:03/01/08 17:20 ID:yL/kYdMc
SETTING.TXT管轄でないということは全鯖導入を視野に、か?
38 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:22 ID:rLfxQ17l
>>27 鋭いです。
73 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:27 ID:rLfxQ17l
>ところで、IPが抜かれて何か今までと変わることってあるのでしょうか?
・今までより、サーバが重くなる。
・裁判所や警察からの照会があった場合にはIPを提出することがある。
わるいことする人がいなくなるね。 でもね。完全匿名のめりっともあるんだよね。 そーいう掲示板も作りたいね♪MaMasにでも。
職場、学校、座敷牢から気兼ねなく書き込みでける ってゆってたのにー プンスカ!!
>>21 スクリプト厨uzeeeeeeeeeeeeeeeee
582 :
教えて :03/01/09 16:18 ID:LZhQAcDf
26408023という数字を、26408023=A×Bとなるように2つの整数のABを求めるんだけど、分からない。 分かる人いますかー?JAVAで求めるらしいんだけどね・・・。
A=1,B=26408023
584 :
教えて :03/01/09 16:40 ID:LZhQAcDf
ごめん…。A,Bで1は使っちゃダメなんだ…。ごめんね。
585 :
login:Penguin :03/01/09 16:47 ID:jegKH0NW
586 :
login:Penguin :03/01/09 17:24 ID:HmKXUvWZ
3457 と 7639
588 :
山崎渉 :03/01/15 11:27 ID:1ScAb3I5
(^^)
589 :
login:Penguin :03/01/16 14:26 ID:SkKe5fwD
>586 どうやって求めましたか?
590 :
login:Penguin :03/01/16 14:47 ID:hM036Vp6
#include <stdio.h> #define A 26408023 int main(){ int i=2, b=0; while(A%i) i++; printf("(a,b)=(%d,%d)",i ,A/i ); return 0; } これCやからJAVAに書き直せば。
591 :
login:Penguin :03/01/16 15:07 ID:SkKe5fwD
CからJavaの書き換えが分かりません・・・。 本当にすいません。 分かればおしえてくれませんか?
593 :
login:Penguin :03/01/16 15:12 ID:hM036Vp6
あっ、b=0;っていらねー。
594 :
login:Penguin :03/01/16 15:16 ID:SkKe5fwD
592 すいません・・・。 でも分からないので・・・。
>>594 えっと、「自分で宿題を考える気がないからおまえらやれ!!」
ってことでおっけーですか?
来年はちゃんと授業聞こうね。
>>594 とりあえず実年齢だけでも教えてくれ。
今の学生がどんな感じなのか知りたいので。
598 :
login:Penguin :03/01/16 19:35 ID:NatKqxcj
ruby -e 'i=2; while(26408023%i != 0); i = i+1; end; printf("%d %d\n", 26408023/i,i);'
$ factor 26408023 26408023: 3457 7639
600 :
599 :03/01/16 19:47 ID:E2QXycXN
すまん。元ネタはJavaだったのねm(..)m
勉強かねてLinuxのソフトを作ってみようかとおもってるんですが KDevelopってつかってる人いますか? Visual C++ににてるんでとっつきやすいかな?って思ってるんですが ネットでの情報がかなり少なそうなので苦労しそうかな。。
602 :
login:Penguin :03/02/02 03:06 ID:30w/+xfv
Vineでddd使ってるんですが、 Tabでインデントしてると、ソース中で、マウスでクリックした位置と 実際のソースがずれるのですが、 どうすれば修正できるのでしょう?
Linuxのプログラミングスレってここだけ!? 想像以上に閑散としてるな〜〜 今、サウンド関係をプログラミングしてるんだけど、 誰か今のLinuxのサウンド関連のトレンド状況を把握 してる人居ないかな? ALSAの組み込みや、音を垂れ流すだけならいいんだけど、 音を出したり止めたり重ねたりを自由に制御するには 何を使えばいいんだ? EsounDとかで重ねられそうなんだが、今度は単音を 途中で止めたりの制御が・・・ まさかそっから先は、未だに全部自分で作るしか無い 状況なんか? ググッても、殆ど情報がひっかからず、EsounDの本家 サイトは2000年で時が止まってるし、一体今のバージョン は誰が管理してアップグレードしてるんだ? 時代はもうEsounD使わない方向なんか? 今のLinuxのサウンドを牛耳っている主流が何なのか 知りたい・・・情報求む。
604 :
login:Penguin :03/02/13 01:24 ID:ndENOYtJ
目立つようにあげとこ。
>603 音の重ね合わせってそれ出来んの?DirectSoundとかの様に?
>605 EsounD (Gnome用サウンドデーモン) ならできます。 直接サウンドデバイスに音を送らずに、こいつに送ってやると、 こいつが複数の入力を合成して、サウンドデバイスに送って くれるという仕組みです。 でも、EsounDの仕様が、一度ウェーブデータを送ってしまうと 途中で再生を止められないみたいなんですよ。 これだと、ゲームのナレーションみたいな音の出し方をしたい 場合、途中で飛ばすとかができない。 そして、なぜか、本家サイトの開発が2000年ぐらいから殆ど 進んでない。 とはいえ、世の中には新しいバージョンも配布されているようで 一体どこの誰がメンテナンスしてるのか ・・・ そして、その新バージョンのドキュメントを見ても本家サイトの URLをミロ ・・・ みたいな事になってる。 (でも、機能はあまり変わってない。バグフィックス中心か?) 他の分野では凄まじい勢いで開発の進んでるLinuxだが、 どうもマルチメディア系は開発が細々としか進んでない感じがする。 一体どこへ向かおうとしているのだろう ・・・ ちょっとした仕事で、Linuxでビデオと音声を扱う事になったの だが、他の分野と比べて、情報量が圧倒的に少ないのにちょっと まいっている所。ま、今回はたいしたアプリケーションでないから なんとかなりそうではあるが ・・・
何も知らないんだけど、SDLでどうにかならんかな?
>>608 どうも。
とりあえず、多重化は必須というほどではなかったので、
急場はALSAに別スレッドでデータを流して音を止められ
るようにする事で解決しました。
じっくりやってる時間がナイ・・・
611 :
login:Penguin :03/02/16 03:27 ID:0kL1SNcD
unixのサウンドって/dev/audio0とかに書き出していくだけじゃなかったっけ? その下がALSAドライバが受け持つとか。ALSAにデータ流してってどういう話 なんだろう?
612 :
login:Penguin :03/02/16 15:36 ID:6c33+CVl
esoundはもう見捨てられたと考えていいと思うけどな…。 ソース忘れたけど、ACからも嫌われてるし。 あー、さっさとALSA普及させろやー
613 :
67 :03/02/16 16:27 ID:p4l0B0Y2
614 :
login:Penguin :03/03/10 00:09 ID:eD+YrOEB
XLib ネタで質問あります。 DefaultGC ってあるけど、これって何かね? なんか分からんのよ。 XCreateGC で返るのは新たに作ったやつだよね?だからアプリがいじっても かまわないだろうけど、俺は DefaultGC で返るGCをいじってるけどちゃんと 反映される(出力の色とか)し、他のWindow がおかしくなったりしないのよ。 なーにこれ?
>>614 マクロ DefaultGC は、指定したスクリーンのルートウィンドウの
デフォルトのGC を返す。
>>615 うーん、つまり、DefaultGC は内容が ルートウインドウと同じものが
用意されるのかねえ?なら納得できるんだけど。
617 :
login:Penguin :03/03/15 04:42 ID:qpnlxQeb
サウンドプログラミングのついでに聞いちゃいたいのだけれど、OSSとALSAでは スペシャルデバイスファイルの違いは、 /dev/audio==OSS /dev/snd/pcm何とか==ALSA という配置であるという理解でよろしいか?
だめだめ
619 :
login:Penguin :03/03/18 15:40 ID:Vc3GhXfh
1です、久しぶり。 ここでの奮闘により、 去年の内にポインタを理解し、 今ではカーネルやデバイス関係のドキュメントを英語で読むに至っております。 勿論、奨められたSDLは大変気に入っており、 毎日のようにコードを書いています。
620 :
login:Penguin :03/03/20 22:09 ID:150VeITd
linuxのデバイスドライバを作るのにC++を使いたいのですがどうにもうまくいきません どこか良い開設サイトをご存知ありませんか?
お願いだからやめてくれ
>>620 解決法を思い付かないなら止めれ。
てか、どういうメリットがあるの?
623 :
山崎渉 :03/04/17 12:13 ID:PWISM87M
(^^)
624 :
山崎渉 :03/04/20 06:07 ID:X64WTq1+
∧_∧ ( ^^ )< ぬるぽ(^^)
625 :
教えて君 :03/04/25 10:20 ID:zWQkST10
CまたはRubyを使って、指定全角文字のフォントの ドットパターンを取得するにはどうやるんでしょうか?
626 :
動画直リン :03/04/25 10:26 ID:1KQi+Ees
627 :
login:Penguin :03/05/19 10:41 ID:B7F7qJzq
C言語のプログラムからコマンドを使うにはどうすればいいのですか?
fork()してexec()
631 :
教えて君625 :03/05/19 17:58 ID:j84chePv
/ ̄.....//.... θ ̄> ∠|::::::::::::::U:: τ ::::::< ⊂二|::::::::::::::::::::::::::θ_>  ̄∠/ ̄ ̄ …モウダメポ
fork,execな変態APIはどうにかならないものだろうか。
633 :
login:Penguin :03/05/19 19:48 ID:+4CtkZ3y
>>632 CreateProcess[Ex] の方が変態すぎて(ry
634 :
login:Penguin :03/05/20 00:14 ID:ij1JGhpr
>>632 あれはないよりはあった方が良いと思うが。
それとも fork(), exec() をまとめた関数が一つあった方が良いかい?
良いと思うなら自作して発表してみたら?
(もう誰か作ってそうだけど。 system() はそれの一種だよね。
/bin/sh 使ってしかも wait() しちゃうけど)。
>>636 Windows の CreateProcess() 使うと複雑になるんだよね。
一つの API に機能を詰め込み過ぎてると思う。だから
こんなに説明が長くなる。使う側の慣れもあるんだろう
けど、俺はあまり使い易いとは感じないな。
>>635 spawnをシステムコールに追加って話があった。
あれどうなったのかな?
man3 と man2 の違いは何ですか? JMのサイトを見ても、 1-8 まであるみたいだし。 大雑把な区分けといったものがあるのでしょうか?
>>639 man manを読む。
ちなみに、
2 - システムコール
3 - libc
>>639 $ man 2 intro
$ man 3 intro
などなど
642 :
山崎渉 :03/05/22 01:52 ID:p4opmoqv
━―━―━―━―━―━―━―━―━[JR山崎駅(^^)]━―━―━―━―━―━―━―━―━―
643 :
教えて君625 :03/05/22 11:23 ID:e75yor33
フォントのドットパターンの取得方法について優しく 教えていただける夢を見ました。 が、肝心の所で目が覚めてしまいました。
>>643 フォントを表示しておいてスクリーンショットを取って画像データを切り出すという
荒技を考えてみた。外部コマンドが揃っていれば言語は何でもいいと思われ。
#include <stdio.h>
#include <unistd.h>
#include <signal.h>
#include <sys/types.h>
#define FONT "-mona-gothic-medium-r-normal--14-130-75-75-p-140-jisx0208.1990-0"
#define CODE 0x3021
int main()
{
FILE *pipe;
pid_t pid;
char code[6], data[4096];
int size, status = 0;
/* run xfd in the background */
pid = fork();
if (pid == 0) { /* child */
snprintf(code, sizeof(code), "%d", CODE);
execl("/usr/X11R6/bin/xfd", "xfd", "-start", code, "-fn", FONT, NULL);
fprintf(stderr, "Error: execl xfd failed\n");
_exit(1);
}
645 :
644 :03/05/22 15:08 ID:eHEw1nmE
/* extract part of the "xfd" window as a PPM image */ pipe = popen("xwd -name xfd | xwdtopnm | pnmcut -left 4 -top 116 -right 31 -bottom 140", "r"); if (pipe == NULL) { status = 1; } else { size = fread(data, sizeof(data), 1, pipe); pclose(pipe); printf("%s\n", (data[0] == 'P' && data[1] == '6') ? "OK" : "NG"); } /* stop xfd */ kill(pid, SIGTERM); return status; }
646 :
644 :03/05/22 15:14 ID:eHEw1nmE
よく知らないけど Xlib とか FreeType とか SDL とかその手のグラフィック関係の ライブラリの API を使ってピックスマップに文字をレンダリングするのが正攻法だと 思う。上のはお遊びってことで。
>>644 ありがとうございました。バッチリ動作しております。
これを元に改造して使ってみます。
またXlib辺りも調べてみます。
>>635 >それとも fork(), exec() をまとめた関数が一つあった方が良いかい?
この前のlkmlにそれに関してポストした奴がいたね。
なんでもfork,execをひとつにしたnew system callを作ろう!って言う感じで。
でも、まわりからは反発されまくってたけどね。(w
それをする意義があまりにも無さ過ぎるんでしょうね。
>>648 forkの処理を端折れる(といっても微々たる物ですが)ので
無意味って事はないけど、アプリ側の修正の手間が…って事だと思いますが。
2.7になったらもう一回議論すればよろしいんでは?
今になってシステムコール追加しても、まわりの対応が2.6に間に合う保証はないし。
650 :
login:Penguin :03/05/23 15:40 ID:dZHIOWYJ
>>649 2.7にでも入れてとパッチをMLに投げとけばええんでない?
でも無視されっぽw
651 :
649 :03/05/23 16:16 ID:/d2rxA9m
>>650 遠慮します。別にいらないし。
最大の問題はarchの下も直す必要がある所なんだけど。
LinuxでプログラミングといったらC/C++なのですか? ServletやJ2EEでWebsiteを作りたいと思っているのでJavaをやっています。
コンソールにカラーで文字を出力させるにはどうしたらいいの?
>>653 シェルなら
echo -e "\e[44m青背景\e[0m"
CやPerlなら
printf("\e[31m赤前景\e[0m\n");
\e は \x1B, \33 でも可。
つまりASCIIのエスケープのこと。
他にもboldなどの属性を組み合わせたり出来る。
詳しくは man console_codes
#ちょうど端末系のプログラムしてたーよ
>>653 ライブラリ:
・S-Lang
・ncurses
など。手抜きなら
put_ansi_color(int color) {
printf("%c[%dm;", 0x1b, color)
}
ANSIカラーシーケンスぐらいは自分で調べろ
656 :
655 :03/05/23 17:36 ID:Q/fduj3n
ちょと間違えた。
657 :
648 :03/05/23 20:22 ID:PJ5y0ueJ
>>649 、
>>650 別にsystem callにする必要ないでしょう。
それをするならライブラリで十分だよ。
でも端折れる割にはあまりメリットがないような。
っていうかやっぱりライブラリにしても自分は使わない。(w
fork+execで特に不満は無いが、なぜこんな気持ち悪い方法で プロセスの生成するようになったのかは知りたい。
>>658 CreateProcessのほうが気持ち悪いって・・・
fork+execならば、CreateProcessのまねごとは出来るが
CreateProcessでは、fork+execのまねごとは不可能。
>>657 そいやぁexecはsystem callじゃなかった・・・スマソ
> っていうかやっぱりライブラリにしても自分は使わない。(w
同上
660 :
649 :03/05/23 20:59 ID:/d2rxA9m
>>657 ライブラリじゃほとんど端折れないと思うんだけどねえ。
と思ったけど、cloneに手を入れればライブラリだけでもなんとかなりそうだな。
激しく汎用性ないけど。
Hello World! 出せたよ!!!
662 :
648 :03/05/23 22:04 ID:PJ5y0ueJ
>>660 いぁ、そういう意味で言ったんじゃなくて、
fork + execをひとつにすることを端折ると言いました。
それに、そのような関数の組合せを一つにして
system call等を作成すると結構な組合せができるし、
議論も分かれる部分があると思うし、
なにより、わざわざ存在してる物を組合せてKernelやlibraryのサイズを
増やすこともなかろうと思うわけです。
Linus Benedict Torvaldsは、以下の言葉を引用したことがあります。
"Keep It Simple, Stupid"
「シンプルにしておけ、何もわざわざ複雑にする必要は無い」ってことでしょうか?
>>659 いや、まねができるとか、機能の問題じゃなくてな。
突然プログラムが2つに分かれたり、別のプログラムに置き換わったり
することが気持ち悪いと感じるわけだが。
#突然、自分のコピーが作られたり(しかも、自分はコピーの方だったり)、
#気づかないうちに他人の脳が移植されてたりする感覚といえばいいだろうか。
言語としてそういう動作がサポートされている言語なら違和感無いのかも
しれないが、Cではそういう動作はまず無いし。
>>663 あなた自身、ご両親から fork してご自分の人生を exec しています。
Unix の仕組みと同じです。何も気持ち悪く思うことはありません。
665 :
649 :03/05/23 23:51 ID:/d2rxA9m
>>662 sendfileなんてのもありますが。
まあ、あれはメモリコピーの回数が減らせるので、それなりに存在意義があるか。
666 :
648 :03/05/23 23:59 ID:PJ5y0ueJ
>>665 カーネル内コピーなんでパフォーマンスをあげるため作成されたんじゃないかなぁ。需要もありそうだし。
>>664 でも人生、sleepだけではだめですよ。
できるだけたくさんのI/O処理をかまして、人生を有意義にすごしましょう。
まぁ、負荷がかかりすぎてカーネルパニックで自滅も怖いけどね。(w
waitがプロセス停止でも返るのはどうにかならんか?
ターミナルの linefold bugと はどういうバグなのですか?
>>668 WIFSTOPPEDマクロを使用しては?
671 :
山崎渉 :03/05/28 16:52 ID:3t6i6zxR
∧_∧ ピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。 =〔~∪ ̄ ̄〕 = ◎――◎ 山崎渉
メッセージキューもセマフォもキーが数字ですが、これって他のアプリと衝突しないのでしょうか? Windowsでは文字列で管理してたのでそこらへんが衝突する心配はかなり少なかったのですが。
>>672 キーにinodeを使えば衝突はまず無いな。
>>673 テンポラリファイルの inode を使うとかいうガイドラインでもあるの?
他のプロセスも同じガイドラインで動いてないんだったら、自分だけ inode
使ってもやっぱり衝突すると思うが。
675 :
login:Penguin :03/05/30 19:55 ID:giaMtuFk
>>674 失礼inodeじゃなくてftokだ。man ftok すりゃガイドラインある。
perlでOSを書くってのは可能ですか?
>>676 perl -e 'print "OS";'
AWKでOSを書くのは可能ですか?
仮想マシンなら書けます。
catやls等のソースを読もうとcoreutilsパッケージを落したんですが、 複雑でよく分かりませんでした。 これって1.0とか前のバージョンだとすっきりしてるんですか? 探してもそんな昔のバージョンの物は見付からなかったのですが どこかで配布しているのなら教えて欲しいです。
>>680 > catやls等のソースを読もうとcoreutilsパッケージを落したんですが、
ちょっと前までは、lsはfileutils、catはtextutilsだったんで、
それらを探してみては?
CDをRAW読み込みするにはどうすればよいのですか?
>>682 dataだったら/dev/*読めばいいんじゃないかと。
audioだったらcdda2wavを参考にすれ。
684 :
login:Penguin :03/07/06 01:47 ID:Y9+oauTP
システムコールを使うプログラミングを勉強するのにもっとも適した 参考書・教科書は?
$ bash -c "help trap"
686 :
685 :03/07/06 02:26 ID:k2dvOV2J
ChangeLog のフォーマットが解説されているサイトを教えてください。
>>687 ググらんでよし。
% info standards documentation 'change logs'
689 :
login:Penguin :03/07/08 01:10 ID:DtGnB79X
(・∀・)renice!
690 :
login:Penguin :03/07/10 23:12 ID:JFqZpSeu
C言語で、MACアドレスを取得するにはどうすればいいでしょうか?
691 :
:03/07/10 23:12 ID:JFqZpSeu
また、wget や grepの出力結果を、直接、Cのプログラム内で受け取ることはできないでしょうか? いままでは、 system("grep hu-nn hoge.log > grep.log"); grep.logを開いて読む とやっていたのですが、これをやっていたプログラムをファイルの使えない 組み込みLINUXに移植することになりましたので、よい方法を探しています。
>>691 pipeでつながったパイプ(ファイルディスクリプタ(FD)のペア*1)作成
forkでサブプロセス起動
サブプロセス側で
stdoutをクローズ
dup2でFD(*1)の標準出力1番に複製
execでgrepなどを起動
メインプロセス側で
FD(*1)のペア残りを読み込み
waitpidでサブプロセスの終了を待つ
とすればいけるはず
693 :
691 :03/07/10 23:45 ID:JFqZpSeu
>>692 教えていただいたことを手がかりにして何とかいけそうです。
非常に助かりました。ありがとうございました。
>>690 ifconfigのソースよめ。
たしかPF_PACKETのsocket作ってioctlすべし。
だったと思う。
>>692 素直にpopenでいいんでは?
695 :
login:Penguin :03/07/11 01:57 ID:Lri3S1WJ
696 :
login:Penguin :03/07/14 02:47 ID:5XjH4O4S
age
微妙にスレ違いだけど、"User collaboration in open source development" なんていうサブジェクトのメールがきた。 スパムかと思ったら有名大学の学生さんによるオープンソースプロジェクトに関する アンケートだった。
698 :
山崎 渉 :03/07/15 11:17 ID:2JhhXBQM
__∧_∧_ |( ^^ )| <寝るぽ(^^) |\⌒⌒⌒\ \ |⌒⌒⌒~| 山崎渉 ~ ̄ ̄ ̄ ̄
699 :
login:Penguin :03/07/15 12:02 ID:KhvjxSuE
(・∀・)renice!
1にお勧め書籍の紹介あることを期待してここを開いたわけだが、ないじゃん。 Linuxプログラミングっつー、目線がはいってる怪しいやつかおうかとおもってるんだけど、どー?
>>700 かなりおすすめ。あんまLinux固有の話じゃなくて、
Unix全般についてあてはまることが書いてある。
やりたいことにもよるがな。
Cはちゃんと分かってて、GUIプログラムつくりたいんじゃなきゃ
オススメ。
704 :
login:Penguin :03/07/17 00:30 ID:GsLFg1G9
eth0 ,eth1 のアドレスを調べる関数って何でしょう?
何のアドレス?
>>704 ,705
man ioctl_list
にある <include/linux/sockio.h> あたりのどれかだろ?
ADDRってつくのがいろいろあるが。
>>702 こーゆーのもあったのね。サンクス。
>>703 昨日さっそく立ち読み、
漏れはWindowsプログラマ(C++)なのだが、分かりやすかったので即購入。
708 :
707 :03/07/17 09:07 ID:1kQtRwFh
しかし、 VisualStudioの高性能なIDEに慣れきってるもんだから、 makefileやらEmacsやらがちょっととっつき辛いね。 GUIを作りたいわけじゃぁ無いのだけど、KDevelopへ逃げちゃたーよ。 KDevelopはなかなか高性能なのだが、VSに比べると重いのが難点。
>>708 WideStudioってのもあるけど。まぁ好き嫌いは当人にお任せして。
emacsでgdbとか使えるようになるといい感じだよ。
IDEに頼る人って、よく醜いソースコード吐くんだよね。
IDEが高機能=ソースコードが醜くても何とか見える
から・・・それだけは慎重にしとくれ。
GUIならGTKライブラリがお勧め。
>>708 よ。
>>709 が言いたかったのは、
ようは、
viを使えよと、Makefileを書けよと、shellでシステム管理用スクリプト
ぐらい書けよと、sedとawkと正規表現を極めろよと、
kernel sourceの修正をして、パッチ作成してlkmlにポストして、
たまにはLinusに注意してやれよと。
こう言いたかったようです。
711 :
login:Penguin :03/07/23 11:46 ID:ZPPlsMW8
(・∀・)renice!
712 :
login:Penguin :03/07/23 15:05 ID:6cwqB+RT
UNIXドメインソケットの作成ってどうやるの? socket作った後bindするのがよくわからない
713 :
login:Penguin :03/07/23 15:25 ID:fIgXDXyS
714 :
神の賜物 :03/07/23 15:32 ID:sSQJakwS
誰か教えてください。リナックスのOSを市販のノートパソコンにインストールして ワードなんかのアプリケーションはうまく機能するのですか。何分ウィンドーズしか 知らない未熟者です。よろしく指南ください。
715 :
_ :03/07/23 15:39 ID:szLePVKp
>>712 --- 受付 ---
struct sockaddr_un sun;
fd = socket(PF_UNIX, SOCK_STREAM, 0);
sun.sun_family = AF_UNIX;
strcpy(sun.sun_path, "/tmp/honyarara");
bind(fd, (sockaddr*)&sun, sizeof(sun));
--- 接続 ---
struct sockaddr_un sun;
fd = socket(PF_UNIX, SOCK_STREAM, 0);
sun.sun_family = AF_UNIX;
strcpy(sun.sun_path, "/tmp/honyarara");
connect(fd, (sockaddr*)&sun, sizeof(sun));
-------------
man unix
でわかるかも?
717 :
login:Penguin :03/07/23 18:41 ID:ZQqetWNF
いきなりの質問ですみません。 RedHatLinux8.0でメールボックスにメールを受信した時に PHPスクリプトを呼び出して処理を行った後返信をしたいのですが、 メールが届く度に、PHPスクリプトを呼び出すメールサーバ側の設定がわかりません。 どのようにすればいいでしょうか? PHPはphp 4.3.2をimap関数付きでconfigureしてます。 sendmail 8.12.5 popt 1.7.1 よろしくお願いします。
718 :
login:Penguin :03/07/23 18:59 ID:qGKxaJYN
フリーの統合開発環境でいいのないすか? どうもviじゃいまいちだし。 できればVC++みたくで日本語環境で使える奴。 キリクス高杉
>>718 WideStudio, Kdevelop, etc...
>>719 「いいの」といってるだろ。
>>720 諦めてvi, emacsに慣れるかcuiアプリならsamba経由でvcで開発デバッグするのも有り。
C/C++でVC並に使いやすいIDEはないよ。
つかKylix Open Editionじゃ駄目なのか?
WideStudioって未踏採択されたらしいよ。 これから良くなるんでないの?
723 :
718 :03/07/23 23:01 ID:qGKxaJYN
>>719-722 それぞれ見てみましたが一長一短って感じですね。
取りあえず将来性も考えWideStudio使ってみようかとおもいます。
Kylix Open Editionも良いけどGPLソフトしか作れないってのはきっついなー。
>>723 > フリーの統合開発環境でいいのないすか?
> どうもviじゃいまいちだし。
> できればVC++みたくで日本語環境で使える奴。
> キリクス高杉
VC++使えばいいじゃん。もう(買って)持ってるんだろ?
今更フリーにはしるこたぁねえよ
725 :
707 :03/07/24 23:23 ID:m74KDjKB
>>723 漏れはWindows用のゲームのサーバとしてLinuxでプログラム組んでるが、
Windows上でLinuxと同じ動作をするぷプログラムをまず組んで、
あらかたバグがとれたらLinuxへ移植。もっと効率のいい方法無いかな?
>>725 開発効率が良ければいいんじゃないかな
開発環境ってもただの道具だし、
手に馴染んだものを使うのが
結局一番いいということもあるし。
727 :
login:Penguin :03/07/25 11:23 ID:azZp68HE
えっと、質問させてください 最近真面目に勉強始めたんですが・・・ Cでプログラム作って、中の動作を一部シェルやコマンドに任せたりなんてどーやってやるんですか? 徹頭徹尾、CならC、シェルならシェルで書かないとイカンですか?
>>727 system, exec, fork
を参考にしてください。
あ・・あと、popen
emacsは統合開発環境じゃないのか?
開発で合ってますが。
>>733 このスレでの発言であればあってるから問題ない
他のスレで「開発」なんて付けて呼んだらイカンけどな。
735 :
login:Penguin :03/07/28 12:55 ID:YIr5Dzm4
(・∀・)renice!
スレ名:Linuxプログラミング 板 名:Linux@2ちゃんねる 投稿者: メール:sage 投稿日:2003/07/28 18:38:34 本 文: emacsって、CUI環境で日本語入力できる? オレRedhat8.0とTurboLinux使ってみたんだけど、 両方とも起動直後のコンソールではshift+spaceでFepが立ち上がらん。 x-window上でktermを起動させて、その上でemacsを起動させればFEPも使えるんだけど、 重い・・・。
スマ、余計なモンまでCut&Pasteしちった
「Fep」が世代を感じさせるね
>>736 激しくスレ違いだが一応答えておく・・・
emacsのFEP(IME)は、CTRL+o もしくは、 CTRL+\ です。
キーバインドの設定によって変わってますが、大抵はどちらか。
# emacsが起動するホストでcannaやwnnやATOKなどが起動している必要がある
740 :
login:Penguin :03/07/30 17:45 ID:yKm3BaiU
標準入力(fdでいうと0か) をdefineしてるヘッダってどれですか? grepしたら unistd.h:#define STDIN_FILENO 0 と出たんだけど、これ使っていいの?
ctrl+oはやったんだけど、Ctrl+\はやってなかった、、。サンクス!
743 :
727 :03/08/01 11:58 ID:FcJoCnjb
追加質問です Cの中でコマンドを使うにはsystemなどを、というコトでしたが、 例えばprintf系のように%dとか%sとかって使うコトは出来るのでしょうか? systemは実際駄目でしたが。
>>743 そのためのsprintf
全然Linux固有の話じゃないな。
あと、外部の入力をsystemに食わせる時はちゃんとチェックしとけよ。
穴になるぞ。
>>743 そういう関数は無いから自前で作る。たとえば
int systemf(char* fmt, ...) {
va_list vl;
char buf[4096]; // 長さは適当。
va_start(vl, fmt);
vsprintf(buf, fmt, vl);
va_end(vl);
return system(buf);
}
もちろん穴には気をつけてね。
746 :
hidehiro :03/08/01 15:25 ID:FaQAPlZw
はじめまして コマンドプロンプトからコマンドを実行した時に 標準出力へ出力される文字数を取得する環境変数 かなにかはあるのでしょうか?
>>746 何がしたいの??
なんか
ls | wc -c
とかいうことじゃないよな?
∧_∧ ∧_∧ ピュ.ー ( ・3・) ( ^^ ) <これからも僕たちを応援して下さいね(^^)。 =〔~∪ ̄ ̄ ̄∪ ̄ ̄〕 = ◎――――――◎ 山崎渉&ぼるじょあ
749 :
login:Penguin :03/08/02 10:14 ID:2rmp9gin
(・∀・)renice!
コラムス!
752 :
login:Penguin :03/08/08 11:52 ID:mg5o8ebS
(・∀・)renice!
ああ・・・なんてレベルが低いんだ・・・
754 :
login:Penguin :03/08/12 11:33 ID:4MGXav2e
(・∀・)renice!
755 :
login:Penguin :03/08/14 00:36 ID:qFFLWU8R
Cでネットワークプロいグラム書いてますけど質問です。 IPアドレスから名前に変換するとき、今一番トレンディな方法は いったいなんでしょうか? getnameinfo を使うのがベストなの?
>>755 gethostbyaddr
かな。
$ man gethostbyaddr
で関連関数が出てくるよ
757 :
login:Penguin :03/08/14 19:00 ID:qFFLWU8R
Cでネットワークプログラム書いてるけど質問だ! 動作中、ずっとlisten()してるソケットを作りました。 このプログラムが動作中は問題ないんですが Ctrl+C等で不用意に止めて、もう一度動かすと bindでエラー(EADDRINUSE :Address already in use) となって待ち受け出来なくなります。 このときnetstatでポートを見ると TIME_WAIT とあるので そのポートが自然に消滅するのを待てばいいのですが こんなことをしなくても強制的に再利用したいのですが どうしたらいいでしょうか? setsockoptでなんか適当に設定するの?SO_REUSEADDR?
> setsockoptでなんか適当に設定するの?SO_REUSEADDR? そうそれ。
759 :
login:Penguin :03/08/14 20:54 ID:OZhN5Fs9
signal()で処理だろ。
>>759 signalで処理しても
> このときnetstatでポートを見ると TIME_WAIT とあるので
この状態は防げない。
>>757 int flag = 1;
setsockopt(fdsocket, SOL_SOCKET, SO_REUSEADDR, &flag, sizeof(flag));
fdsocketはsocket関数で取得したsocket descriptor。
>>758 ,
>>761 (゚∀゚)サンクスコ
うまく動かんなーと思ってたらflag=1を忘れてたぜエヘヘ
763 :
山崎 渉 :03/08/15 22:20 ID:dil3w4kp
(⌒V⌒) │ ^ ^ │<これからも僕を応援して下さいね(^^)。 ⊂| |つ (_)(_) 山崎パン
764 :
login:Penguin :03/08/16 00:11 ID:5i+gfiwt
(・∀・)renice!
765 :
login:Penguin :03/08/18 01:17 ID:xPxKgdAT
struct addrinfo *hoge; char buf[256]; getaddrinfo( "hostname", 0,0, &hoge ); inet_ntop( AF_INET, &info->ai_addr, buf, 256); printf( "%s\n", buf ); こンな感じで名前からIPを引きたいンだけど、うまく動かない。 inet_ntopの使い方、どッか間違ッてる?
>>765 printf("%d.%d.%d.%d\n", buf[0], buf[1], buf[2], buf[3]);
じゃないのか?
767 :
766 :03/08/18 01:48 ID:wDvg6Ni/
失礼とちったっぽ。
768 :
766 :03/08/18 02:08 ID:wDvg6Ni/
>>765 struct addrinfo *ai;
struct sockaddr_in *sin;
char buf[INET_ADDRSTRLEN];
getaddrinfo("hostname", 0, 0, &ai);
sin = (sockaddr_in*)ai->ai_addr;
inet_ntop(AF_INET, &sin->sin_addr, buf, INET_ADDRSTRLEN);
printf("%s\n", buf);
こうしないとだめっぽい。
addrinfoのメンバーai_addrをsockaddr_inにキャストしてメンバーsin_addrをinet_ntopに渡す
>>765 ,
>>768 ちなみに、終了時には
freeaddrinfo(ai);
を処理するべきかな。
770 :
766 :03/08/18 03:06 ID:wDvg6Ni/
>>769 一回しか実行しないなら、別にやらなくて良いよ。
何度もgetaddrinfoのコールを繰り返す可能性を考えるなら、
freeaddrinfoを処理することを考慮すべき。
解る人には解る言い方だと、
シングルトンなものの場合は、わざわざfreeせんでよろしい。
771 :
login:Penguin :03/08/19 03:35 ID:LWYDhLjX
>>768 (゚∀゚)サンクスコ
やっぱヘッダをちゃんと見なきゃダメだね〜
構造体の宣言が、何がどこにあるのか って
みんなどうやって調べてる?
地道に /usr/include をgrepしてる?
なんていうか、構造体の宣言と、それを使っているところと、
ごっちゃになっちゃって調べるのがすごく大変じゃない?
どう?
>>771 漏れは大抵manをみるが。。grepしてみるときもあるけど、別に地道でもないだろ?
grep -r sockaddr_in /usr/include って地道か・・・?
-pg オプションつけて gprofで見ても 処理時間が全部0なのは なんででしょう? 関数呼び出し回数だけじゃどこに負荷がかかってるかわかんない。 もしかして fork()の子はで処理時間が計測されないとか?
>fork()の子はで処理時間が計測されないとか? じゃない? さもなければfork()した中で開始時刻と終了時刻を出力するとか。 蛇足だけど、 コンパイラを変えると-gオプションとかうまく動かないことがあるね。 gcc3.xだけインスコしてgdbを変えなかったら、ソースファイルが見つからんとか言われた。
775 :
login:Penguin :03/08/29 10:11 ID:DokghWbk
インラインアセンブラや組み込み関数つかって、SSE2のコード作れるCありますか? intelコンパイラ以外でキボンヌ
_、_ ( ,_ノ` ) 777 ζ [ ̄]'E .  ̄
778 :
login:Penguin :03/09/04 18:03 ID:FHcUI8Nh
(・∀・)renice!
>>774 >蛇足だけど、コンパイラを変えると-gオプションとかうまく動かないことがあるね。
>gcc3.xだけインスコしてgdbを変えなかったら、ソースファイルが見つからんとか言われた。
コマンドラインで
$ gdb -d ディレクトリ名
って指定するか、gdbコマンド内で以下のように
(gdb) directory ディレクトリ名
すればいいのでは?
780 :
login:Penguin :03/09/14 14:08 ID:Y8kxOv2d
(・∀・)renice!
781 :
login:Penguin :03/09/19 00:26 ID:KnTrMiuH
<regex.h> の関数なんですが、 int regsuccess; const int nmatch = 5; regex_t reg; /* regexパターンバッファ */ regmatch_t match[nmatch]; /* マッチした場所格納用 */ char *comment = "data-1.csv," "data-10.csv," "data-5233.csv,"; regcomp(®, "data-[0-9]*\\.csv", REG_EXTENDED); regsuccess = regexec(®, comment, nmatch, match, 0); regfree(®); for(int i = 0 ; i < nmatch ; ++i) { printf("%d, %d\n", match[i].rm_so, match[i].rm_eo); } とかやっても、match 配列には match[0] にしかマッチした位置が入らないんです。 regcomp や regexec のフラグにも、最初の 1 個目しかマッチさせないとか、 複数マッチさせるとかいったものは見当たらないんです。 これはそういうものなんでしょうか。 とすれば、regexec の 3 つ目の引数って存在意義がないと思うんですが、 複数のマッチ位置を全部返すようにはできないんでしようか。 よろしくお願いいたします。
782 :
login:Penguin :03/09/19 00:27 ID:KnTrMiuH
あ、&reg が ® に化けてしまいました。すみません。
784 :
login:Penguin :03/09/19 01:27 ID:KnTrMiuH
>>783 どうもありがとうございました。
() を含んだ部分正規表現というもの?(詳しくないので違ってたらすみません)の
どれにマッチしたかが配列に返される、ということなんですね。
RHL を使っているのですが、 syslog で LOG_DEBUG をパラメーターに与えたときの ログメッセージはどのファイルに書き込まれますか? テキストでは /var/log/debug となっていたのですが、該当するファイルがないもので。 LOG_INFO だと /var/log/messages に書き込まれています。
>>785 syslog.confの設定による。
/var/log/syslogあたりに落ちてない?
787 :
login:Penguin :03/09/23 01:59 ID:wn/KYk6V
Linuxで、実行中のプログラムのファイルの絶対パスを知る簡単な 方法はないでしょうか? 今はmainのargv[0]から自分の名前を取ってきて、それに対してpopen ストリームにwhichコマンドを流す事で絶対パスを取ってきていますが、 もっと簡単で確実な方法がありましたら教えてください。 自己参照を行うプログラムなので、どうしても知る必要があります・・
>>787 /proc/self/exe が簡単確実だが、Linux 固有。
Unix 一般に移植したいなら自己参照をあきらめたほうがいい。
>今はmainのargv[0]から自分の名前を取ってきて、それに対してpopen /proc以下を参照するより速くて簡単な気がするなぁ。 /var/lock/subsys/とかにpidファイルとかロックファイルなんかを置いて排他制御してると こけた後が面倒かと思って、/proc以下のpidをスキャンし実行ファイルのフルパスを 取り出すコードを書いたことがあるよ。 でもopendir()とかreaddir()を使って長ったらしいので、冒頭の方法のほうが簡単で美しいと思われ。 但し、当然のことながら、popen()で開いた先に情報を流すように書かれたソフトしか対応できない から不自由といえばそうかも。
Unix 板にある vim スレッドを見てて思ったのだけど、オープンソースソフトウェアのコードの質を 評価するスレッドがあったらおもしろいのでは? このスレでこんな話をするのは微妙にスレ違いかもしれないが。
792 :
login:Penguin :03/09/25 17:09 ID:FN6PNMc8
(・∀・)renice!
>>793 >欠陥率が同程度ということは、オープンソースソフトはスタート時は
>プロプライエタリなソフトと同じくらいの完成度であることを意味するが、
詭弁だな。
Apatcheは例外的に需要があったというだけで、オープンソースソフトウェア
全てに対し当てはまるわけではない。
いくつかのオープンソースソフトウェアに対し、同じ様な調査を
繰り返せば悲惨な結果になることは想像に難くない。
悲しいけど同意
Texてバグ発見すると、賞金もらえるってホント? しかも前回発見された時の賞金の倍になってくとか。 でも、現在までに3つしかみつかってないとか。 Unix板のトリビアスレでみかけたんだが。 それだけ完成されたコードってことなんですかね?
バグと言って報告しても仕様とされてしまうからね
ねえねえ、今度リナザウ買ってプログラミング始めようと思うんだけど、それって正解?
800 :
login:Penguin :03/10/13 00:59 ID:VcU5GyRD
800ゲッチョオオオオ
801 :
login:Penguin :03/10/15 00:10 ID:WteJLNwE
802 :
login:Penguin :03/10/26 00:44 ID:rFeAGc7C
mozillaにシステムコールを飛ばしてページを読み込ませるプログラムを 作りたいのですが、 mozillaが次々、起動されていっていまいます。 立ち上げた、mozillaの同一タブ内へページの読み込みを指定したいの ですが、どうすればいいでしょうか?
>>802 mozilla --help
-remoteで目的を達成できるはず。
804 :
login:Penguin :03/10/26 00:54 ID:5q8AKgF4
806 :
login:Penguin :03/11/15 13:56 ID:2o75E3XL
forkってグローバルな変数を共有できたりとか出来るんですか?
>>806 forkはできないけど、スレッド(pthread)なら可能。
Javaで自分のPCのIPアドレスを取得したいんですが、InetAddress.getLocalHost() して getHostAddress()を使用 すると127.0.0.1のローカルループバックしか取得できません。 ifconfigでeth0に割り当てられているIPアドレスを取得したいのですが・・・。 試しに同じコードをWindowsで動かしたらちゃんとLANカードに割り当てられたIPアドレスが表示されました。 Javaでeth0に割り当てられているIPアドレスを取得する事ってできるのでしょうか?
>>809 Linux上での名前解決の設定が"127.0.0.1"にされているからでは。
もし、DNS検索でhostsファイルが優先されているなら
/etc/hostsにちゃんとIPアドレスとマシン名が設定されているか確認したほうがいい。
例えばホスト名がhoge(192.168.1.1)の場合、/etc/hostsファイル設定は
/etc/hosts:
127.0.0.1 localhost.localdomain localhost
192.168.1.1 hoge
811 :
809 :03/11/16 13:32 ID:q7HsnD3J
>>810 レスありがとうございます。
/etc/hostsに直接記入した場合、IPアドレスが変更になった時はいちいち書き換えなければならないのではないでしょうか?。
動的にIPアドレスが割り当てられている環境なので、できれば自動で取得する方法を知りたいのです。
ifconfigなどでは表示されているので、なんらかの方法があると思うのですが・・・。
Linux初心者なもので、もし見当違いな事を言っていたら申し訳ないです。
812 :
810 :03/11/16 16:14 ID:jLgv/+o8
813 :
login:Penguin :03/11/17 18:18 ID:R6kCcdNZ
forkした子プロセスをpipeでつないでstdoutを非同期に取りたいのだけど selectが Bad file descriptorとか言って怒ってる (;つД`) selectが使えないと相手のcloseを知るタイミングもSIGCHLDだけで複数パイプのどれだか分からず… 神様助けて下さい。(-人-)
814 :
login:Penguin :03/11/17 18:47 ID:R6kCcdNZ
出来たよ(;´Д`)
RedHat なのですが、あるプログラムを実行させたときに、かかった時間だけでなく、 メモリをどのくらい消費したのかとまで調べる方法はありますか?
816 :
login:Penguin :03/11/23 19:50 ID:wjjvLLiv
>>815 やる。
memcheck.sh
#!/bin/bash
$* &
com_id=$!
max_memsize=0
while ps $com_id > /dev/null
do
memsize=`ps --no-headers --format '%mem' $com_id`
if expr $memsize '>' $max_memsize
then
max_memsize=$memsize
fi
sleep 1
done
echo "Max memsize is $max_memsize"
使い方
memcheck.shとして保存して、
chmod +x memcheck.sh
./memcheck.sh jikkou sitai command
いじょ。
WideStudio + Rubyプログラミングめも WSCvifieldで、数値のみ入力にする浮動小数点編 以下のプロシージャをトリガ FURCUS_CHで登録 def vifi_tof(object) strval = object.getProperty("labelString").getCharPtr() return if strval == "" fval = strval.to_f object.setProperty("labelString",fval.to_s) # object.update() Mpfc::WSGIappDev().update() end
Linuxでのプログラムの勉強に GNUソフトウェアプログラム と C++プログラミング入門 を購入してきたんですけど方向として間違っていますか? 一つ目の目標としては、エディタを作ってみることです。 参考にエディタのソースを探しているんですけど、見つからないですw。 向いてないのかなぁ。。。
>>818 viのソースとかemacsのソースとかedのソースとか、その辺に転がってる罠。
edとviのソースを拾ってきたものの src.rpmの状態からソースを取り出すのには どういった手順が必要なのか。。。 本見てもインストールの仕方ばかりで。。。 もちょっと頑張らなくちゃ。
821 :
820 :03/11/24 01:56 ID:aGsdOEbv
結局rpmからのソースの取り出し方が判らない。 情報の集め方が間違ってるのか。。。
823 :
820 :03/11/24 02:05 ID:aGsdOEbv
>>822 有り難うございます。
rpmの中身が出てきました。
これで勉強できそうです。
src.rpmならrpm -iでインストールすればソース(とSPEC)がでてくるから わざわざrpm2cpio使うまでもない
>>816 とりあえず、使ってみます。
どうもです。
下らない質問スレですべき質問かもしれませんが、 a a.orig b b.orig と4つのファイルがあって、diff をつかって複数のファイルから差分を一度に表示させることはできますか? 今は、 $ diff -u a.orig a > foo $ diff -u b.orig b > bar とやって foo と bar を連結させているという非常に回りくどいことをやっているのですが、 もっと簡単にできないものかと。
>>826 ディレクトリ別にして、-urとかじゃだめなの?
例えば、ディレクトリhogeにaとbを配置し、
ディレクトリhoge.origにa.origをaに名前をかえて、b.origも同様にして、
$ diff -ur hoge.orig hoge > hoge.diff
するとか。
828 :
login:Penguin :03/11/27 08:46 ID:JsWTr2uN
v4lデバイスから取り込んだ動画をmpeg4で圧縮して 最終的にはネットワーク配信をできるようなものを作りたいんですけど mpeg4を扱えるようなライブラリ等はどのようなものがありますか?
829 :
login:Penguin :03/11/27 11:03 ID:Q5CHQ0kV
>>826 やる。
#!/bin/bash
for i in `ls | grep -v '.orig$'`
do
if [ -f $i.orig ] ; then
diff -u $i.orig $i
fi
done
>>828 >v4lデバイスから取り込んだ動画をmpeg4で圧縮して
>最終的にはネットワーク配信をできるようなものを作りたいんですけど
既に無かったっけ?ストリーミング鯖
>>787 遅レスだけど、実行ファイルの中に文字列定数として持っとくってのは不可?
ライブラリの場所 (/usr/lib/foo-1.0/ とか) がコンパイル時に決定される
ソフトウェアがあるよね。あれと同じ要領で実行ファイルがインスコされる
絶対パスをコンパイル時に決めちゃうわけ。Makefile だとこんな感じ。
bindir = /usr/bin
foo: foo.c
gcc -o foo -DEXEFILEPATH=$(bindir)/foo foo.c
install:
install -m 755 foo $(bindir)/foo
プログラム中ではシンボル EXEFILEPATH を見れば実行ファイルの場所が分かる。
>>832 >ライブラリの場所 (/usr/lib/foo-1.0/ とか) がコンパイル時に決定される
>ソフトウェアがあるよね。あれと同じ要領で実行ファイルがインスコされる
automakeとかautoconfとかのこと?
>>833 俺は832じゃないけど、Automakeは
$ make DESTDIR=/hoge/fuga install
のようにインストール時に(というかバイナリパッケージ作成時)に
インストール先を変更することが可能になるように設計されているから、
AC_DEFINE_UNQUOTEDなんかを使ってconfig.h(または-D)で定義しても
インストール時に変更される可能性があって、問題あるかも。
だから、Makefileに書けってことじゃない?
835 :
832 :03/11/30 08:09 ID:IEIlDXip
いやいや、そこまで深い意味はなかった。要するに、実行ファイルの場所を コンパイル時に決めて、実際にそこにあると仮定してプログラムを書けば? という提案だった。
836 :
834 :03/11/30 09:24 ID:pSa56DZI
そういうことか。深読みしすぎた。 そうなると、元質問者のargv[0]から求めるっていうのは、 /procへの依存性も無いので、悪くない気がするね。 いずれにせよinstall前のデバッグがちょっと面倒そうだけど。。。 # 俺は自己参照型のプログラムを書いたこと無いんでよく分からん。
837 :
832 :03/11/30 10:46 ID:IEIlDXip
自分を書き換えるプログラムって Unix ではあんまり見ない気がする。 ひょっとして、作ろうとしているのはウィルス?(w
838 :
832 :03/11/30 10:48 ID:IEIlDXip
× 自分を書き換える ○ 自己参照を行う
自己書き換えが必要なプログラムって最近の高性能PCで必要?
840 :
832 :03/11/30 15:59 ID:IEIlDXip
なんか8ビットCPU時代のみみっちさを連想するよねw>自己書き換え
>>787 #include <stdio.h>
#include <linux/limits.h>
int main(int argc, char *argv[])
{
char buf[PATH_MAX];
printf("%s's current working directory: %s\n", argv[0], getcwd(buf, PATH_MAX));
return(0);
}
詳しいことは以下を読め
man getcwd
>>841 それって、カレントディレクトリを表示するんじゃない?
↑すまん。そう出力されてた。
(´∀`)おーい山田君、841のザブトン全部持ってっちゃって(w
845 :
841 :03/11/30 18:33 ID:x2UJDG/9
>>842-844 >Linuxで、実行中のプログラムのファイルの絶対パスを知る簡単な
>方法はないでしょうか?
>今はmainのargv[0]から自分の名前を取ってきて、それに対してpopen
>ストリームにwhichコマンドを流す事で絶対パスを取ってきていますが、
>もっと簡単で確実な方法がありましたら教えてください。
>自己参照を行うプログラムなので、どうしても知る必要があります・・
>>787 は、結局のところ自身のコマンドの絶対パスが知りたいんでは?違うのか?
そだよ。それが分かってて841のようなコードを示すのは何故?
>>846 間違った!!!!!w
これってPATHで参照できるコマンドの絶対パスが知りたいってことか。
んなもんシステムコールやライブラリには無いと思うが。
そんなことする作りが変では無いか?
848 :
842 :03/11/30 20:50 ID:pSa56DZI
俺てっきり釣られてしまったと思って欝だったんだが(w
>>847 だからウィルス?って予想もありだよね。
>>848 >だからウィルス?って予想もありだよね。
いぁ、それはわかんないけど。
(もしそうだとしても、それだけではウィルスとして使い物にならん)
PATH次第によっては見つかったり見つからなかったりするんで
やはり作りが変?だと思う。
(自身のコマンドが絶対PATHを知っていると何が幸せなのかわからんし)
それに現在popen、whichで出来てるんだったらそれでいいじゃんって感じ。
設定ファイルを自分と同じディレクトリに置きたいとか。 DOS時代の作法にあったなあ…
あっそれから
>>787 について思ったのは、誰かが意図的に
PATHの先頭の方に同名の偽コマンドを置けば
在るようにみせることが出来るよ。
脆弱性ハケーンかな?w
ふと思ったんだけど、whichコマンドに相当するコードを自前で実装しても 大したステップ数にはならない予感。
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <linux/limits.h> #include <sys/types.h> #include <sys/stat.h> #include <unistd.h> #include <errno.h> int main(int argc, char *argv[]) { char *ppath, *ptr; char buf[PATH_MAX]; struct stat st_stat; int ret; if(argc != 2){ fprintf(stderr, "Usage: %s command\n", argv[0]); return(1); } if((ppath = getenv("PATH")) == NULL){ fprintf(stderr, "PATH not exist\n"); return(1); }else if(strlen(ppath) == 0){ fprintf(stderr, "PATH is empty\n"); return(1); } ptr = strtok(ppath, ":"); while(ptr){
strncpy(buf, ptr, PATH_MAX-1); strncat(buf, "/", PATH_MAX-1-strlen(buf)); strncat(buf, argv[1], PATH_MAX-1-strlen(buf)); ret = stat(buf, &st_stat); if(ret == 0){ if(S_ISREG(st_stat.st_mode)){ printf("%s\n", buf); break; } }else if(ret == -1){ if(errno != ENOENT){ perror("stat"); break; } } ptr = strtok(NULL, ":"); } if(ptr == NULL){ fprintf(stderr, "%s not exist\n", argv[1]); } return(0); }
これは、勢いで作成したんでかなり端折っています。 権限とか全然チェックしてません。
(゚Д゚)ウマー
whichを使う前にargv[0]が絶対パスかどうか調べた方がいい。 まあexecve(2)の第一引数とは違う可能性もあるんだが。(UNIXで完璧なのを作るのは無理) ちなみにldd, ld.soに参考になるcodeがある。
>>857 >whichを使う前にargv[0]が絶対パスかどうか調べた方がいい。
argv[0]にbasenameをかませばいいだけ。
>まあexecve(2)の第一引数とは違う可能性もあるんだが。(UNIXで完璧なのを作るのは無理)
argv[0]は変更できるんでそこんところは大目にみてくれ。
>ちなみにldd, ld.soに参考になるcodeがある。
さいですか。
ご存知の方がいらっしゃいましたら教えて欲しいのですが、 X上で表示されている各ウィンドウを非表示にしたりまた表示したり (XMapWindow?)することを他のアプリケーションから行いたいのですが どうすれば良いのでしょうか。 バーチャルデスクトップが使えるウィンドウマネージャの ソースとか見ると分かるのかもしれませんが、 僕には太刀打ちできませんでした。 キーワードだけでも教えていただけるとありがたいです。 よろしくお願い致します。 #Xはスレ違いだったらごめんなさい。
>>859 ム板にXlibスレがあったけど、最近は保守だけみたいだから、、、
自慢じゃないが俺には分からん。
#include <stdio.h> #include <stdlib.h> #include <X11/Xlib.h> int main(int argc,char *argv[]) { char *display; int ch; Display *disp; Window w; w=0x1c01ad0; display=getenv("DISPLAY"); if (display!=NULL) { disp=XOpenDisplay(":0.0"); XUnmapWindow(disp,w); XFlush(disp); ch=fgetc(stdin); XMapWindow(disp,w); XFlush(disp); } else { fprintf(stderr,"Environment variable DISPLAY is undefined\n"); } }
862 :
861 :03/12/01 23:01 ID:8njOyIGV
XのウィンドゥはIDさえわかれば他のプログラムから自由にいじることができる。 上の例だと、 w=0x1c01ad0; となっているのがウィンドゥIDで、 これはxwininfoで xwininfo: Window id: 0x1c01ad0 (has no name) みたいに表示されている。 ここを書き換えてコンパイル、実行すれば、xwininfoで調べた Windowが消える。 なにかキーを押せば復活する。 問題は、このウィンドゥIDをもっとちゃんとした方法で知ることであるが これはプログラムの用途によって方法が異なってくると思うので 用途にあった方法を考える。
>argv[0]にbasenameをかませばいいだけ。 他ディレクトリへの相対パス指定されたら駄目でしょ
E. レイモンドの"The Art of Unix Programming"を早速よんだ人っています?
文芸的UNIXプログラミング?
868 :
867 :03/12/02 07:25 ID:UbgA1PcH
もしかしたら、glibcにもrealpathがあるかもしれないが、 私はLinuxユーザでないので知らない。 例えばSolarisのrealpathでは、相対パスが与えられた時には 絶対パスが返されないことがあるらしいので、glibcにrealpath があったとしても、その辺の振る舞いをチェックする必要がある でしょう。
ありますね。 REALPATH(3) Linux Programmer's Manual REALPATH(3) NAME realpath - return the canonicalized absolute pathname
870 :
859 :03/12/02 12:02 ID:SNYAPZHJ
>861-862 解説、どうもありがとうございます。 サンプルプログラムまで頂けて感激です。 こんなに短いコードで済むなんてびっくりですね。 なんかの本に「メカニズムとポリシーをはっきり区別してるところが Linuxの設計の優れたところだ」と書いてあったのですが、 もちろんこのことはXにも当てはまるわけですね。 大げさかもしれませんが、そんなことを感じました。 今、ちょっと手元に環境が無いのですぐ試せないのが残念ですが、 あした、早速試して見ます。 >860 レスつけてくれるだけでも充分ありがたかったです。(w
>>862 ,
>>870 例えば
$ xwininfo -tree -root | grep -i kterm
とすれば kterm という名前のウィンドウを全部リストアップできるね。
とゆーことで xwininfo のソースを見れば参考になるんじゃないかな。
xprop コマンドのソースも参考になりそう。オプソまんせー(w
872 :
862 :03/12/02 13:03 ID:SNYAPZHJ
>871 どうもありがとうございます。 xwininfoってこういうことも出きるんですね。 ウィンドウをクリックする使い方しか知りませんでした。 一度はmanでちゃんとチェックすべきですね。 ソースも見てみます。 #ただ、毎回の事ながらわからなくて挫折してしまうのですが(w
>>871 login時にiconにしておきたいのに、-iconicがちゃんと働かないbiffを、
それでid調べて無理やりicon化したことがあったな。
>>872 例えば xwininfo -root -tree を実行したときにどういう流れで処理が進むのかを
追いかけてみるといいよ。必要な部分をコピペしてその処理の流れを再現する
プログラムを書いてみるのもいい。
C でプライベートな関数(自分が定義されているファイル内でしか参照されてない)の プロトタイプ宣言をヘッダファイルでなく定義されているファイルに 一気に移したいんですけど、 プライベートな関数を調べてあげてくれるツールとかありますか? ちなみに GNU で開発してますが ld にこんな機能あったらいいのに。
grep static *.h とか?(w
cat `grep static *.h` dest.c
>>876 >C でプライベートな関数(自分が定義されているファイル内でしか参照されてない)の
>プロトタイプ宣言をヘッダファイルでなく定義されているファイルに
>一気に移したいんですけど、
コピペすればいいじゃん。
>プライベートな関数を調べてあげてくれるツールとかありますか?
無い。必要ないから。
>ちなみに GNU で開発してますが ld にこんな機能あったらいいのに。
いらないと思うが。
ちなみに関係無いけどlddで共有ライブラリへの依存関係を調べられる。
>>879 > ちなみに関係無いけどlddで共有ライブラリへの依存関係を調べられる。
マジ関係ない
質問です XFree86上で動くゲームを作りたいのですが、 WindowsのAPIにおける PeekMessageみたいな関数はXLibにありますか? それと、60FPSにするために60分の1秒ウェイトする方法を教えてください。 おねがいします。
>>881 > PeekMessageみたいな関数はXLibにありますか?
pollとかselectのことかな?
> それと、60FPSにするために60分の1秒ウェイトする方法を教えてください。
usleep じゃだめなんか?
ゲームなら、zsnesのソース見て参考にしたらどうかな。
usleepよりかはnanosleepのほうがいいかと思われ。POSIXだし。 しかしXであればXtAppAddTimeOutなんかでタイマーをセットして コールバック関数をよんでもらうほうがX風だったり。 GtkとかQtにも同様の関数はあると思われ 画面リフレッシュに同期して描画したいというなら ...ちょっとわからん。
884 :
login:Penguin :03/12/12 04:00 ID:p1r0xxMa
>>882 881が、どの程度の精度を求めているかによるんだけど、
usleep使うと描画時間分ずれていくから、オトゲー系はきつい。
俺は、setitimerつかったよん。
とりあえずなら、SDLつかうのも楽かも。
make ファイルの書き方とかってどこで勉強すればいいのですか?
$ info -f make
890 :
!888 :03/12/13 00:38 ID:LET2eCCS
891 :
881 :03/12/13 21:47 ID:O4yV8qD+
レスありがとうございます。 色々試してみましたがウェイトはsleepよりWindowsにあるtimeGetTimeみたいな関数が欲しいです。 誰か知りませんか?
895 :
881 :03/12/14 10:39 ID:J1jDGD1W
WindowsのtimeGetTimeなら while(1) { if( timeGetTime() - oldtime > 1000/60 ) { 画面描画 } while( PeekMessage(略) ) { // イベントがあるか調べる イベント処理 } } って感じにできるんです。 linuxだとずいぶん大変そうですね・・・諦めてWindowsでゲームつくろっかな。
896 :
login:Penguin :03/12/14 11:00 ID:A6qOSZwn
>>895 gettimeofday使って自分でポーリングするか、
setitimer使ってシグナルでタイマーが切れたことを知らせてもらうか、
SDLなどのゲーム用ライブラリを用いるか
になるのではないかと。
いずれも秒以下の時間制御のためには使ったことないのでどの程度精度が
いいものかわからないけど。
>>895 timeGetTimeをgettimeofdayにそのまま変えれば
ほぼ同じロジックで組めるのだが
そのロジックだとプログラムが常に走りっぱなしになるから
ふつうはそんな組み方はあまりしない
(時間がくるまで待つ(sleepする)ように組む)
自分のプログラムだけでCPUを100%使いきらないための配慮だが
このあたりはWindowsでも同様と思うのだが。
ちなみにgettimeofdayで同様に組むと10ms程度の精度
(タスクスイッチの時間単位)になると思う。
2.6カーネルだとタスクスイッチが1ms単位になっている気が
しないでもないが。
> PeekMessageみたいな関数 イベントを調べる関数として、XNextEvent等があるが イベントがくるまで処理がとまることのないものとして XCheckWindowEventあたりがいいかも
連続スマソ Xでそれらしいように組むにはこんな感じか 画面処理ルーチン() { // イベントチェックはメインルーチン側で行う // 1/60秒ごとにまわってくるようにするので時刻チェックは不要 画面描画 } int main() { ...いろいろ処理... // 割り込みの設定 sigemptyset(&smask); sigaddset(&smask,SIGALRM); sigtocall.sa_handler=画面描画ルーチン; sigtocall.sa_mask=smask; sigtocall.sa_flags=0; sigaction(SIGALRM,&sigtocall,NULL); // タイマーの設定 itimeval.it_interval.tv_sec=0; // タイマ間隔 itimeval.it_interval.tv_usec=16667; //およそ1/60s itimeval.it_value=it_interval; //最初に割り込みがかかるまでの時間 setitimer(ITIMER_REAL,itimevak,NULL) // メインルーチン while (終了フラグ=0) { // イベント処理 XNextEvent(略); } }
900 :
login:Penguin :03/12/14 17:24 ID:G6zew8S8
あるファイルの全角文字の ”。”を改行ゴードに変換しようと思っています 下のコマンドでやってみたんですけどダメでした なにがいけないのでしょうか? # tr '。' '012' < FILE
>>900 trが多バイトに対応していないからかな?
置換ならsedとかが楽かも。
# 俺はemacsでやるかな。
902 :
login:Penguin :03/12/14 21:40 ID:+2AOP9r5
プログラムを始めようとしてCのテキストを購入し読み込んだんですが いざ他人のソースを読むとなるとまったく手がつきません。 考えてみるとCのテキストには自分で1から作り起こす方法は書いてあるのですが 他人のソースを読むときの取り掛かり方とかが全然乗っていませんでした (そのためgrepの存在とかも知らなかったりした(^^; ) こういった「脇を固める技術」を得られる本などはありませんか?
>>902 C じゃなくて何かスクリプト言語から始めるのはどう?
Java とか。
Cは初心者向きじゃないよ。
>>906 次にお前は 「Javaはスクリプトじゃあありません!」 と言う
906 :
login:Penguin :03/12/14 23:40 ID:KWkCvRBM
>>901 ありがとうございます。とりあえず本屋に行ってみます
>>902 >Cは初心者向きじゃないよ。
もう読み終わってポインタとか構造体とかファイル入出力とか
使えるようになっちゃったよ..._| ̄|○
まぁ、完璧マスターというわけじゃないけど
>>906 そんなサクッとポインタが使えるようならセンスあるよ。
手助け不要と思われ。
適当な小さめのGPLプログラムで,#ifdef WIN32とかのウザい構成が少ないやつを いじってみればいいのでは? 書き換えるためには自然とソースを探り回ることが必要になるから勉強になる. (練習なんだから,意味のある書き換えをする必要は別になくて, やたらHello Worldを出力させるとか,コマンドラインオプションの種類を増やしてみるとか)
910 :
login:Penguin :03/12/15 00:23 ID:+UxP4Bdi
>>907 というか使えるように多大な労力を払った後なわけで…
でも我流なんで知識の偏りっぷりがどうにもならない
>>910 それなりのCの知識があるのに
本が読めて、ソースが読めない って在る意味あべこべだぞ・・・
いや、「ソースが読める」というのは コードからその裏にある意図(そこにあるコードの必然性)を 推し量らないといけないわけで、C純粋の知識よりかは OSの知識とか一般的な方法とか、いくらかの慣れがいる。 逆にいえばあとは「意図」を読むことに注意して周辺の知識を仕入れ なれてくれば...って、これはこれで大変なんだが。
>>913 そんなことまとめて論じている本ってプログラミングの本と言うより心理本?
とゆーか正直「そんな本は無い」と思うんだけど(w 他人の書いたプログラムはその人が好き勝手に書いてるものだから 読み手の理屈では推し量れない。もとより理屈なんて無い。 ぶっちゃけ「習うより慣れろ」としか言いようがない。 深さ優先でプログラムを読んで疑問点を解消できたときの気分って、 初めて自転車に乗れたときの「何かをつかめた感じ」に似てるよね。 「どうすればプログラムが読めますか」という質問は 「どうすれば自転車に乗れますか」という質問と同じぐらいバカバカしい。 どっちも理屈抜き。体で覚えるしかない。 全然関係ないけどプログラミングと心理学と聞いて ワインバーグ先生の「プログラミングの心理学」を思い出した。 この本はめちゃくちゃ面白い。そー言えば他人のプログラムを読むことを勧めてた。 もっとも、この本を読んでもプログラムは読めるようにならないけどね(w
>>914 いや、普通のプログラム本じゃない?
プログラミングの定石を知れば、コードの意図もつかみやすくなるし。
ふと思ったんだけど、 他人の書いたプログラムを読むのってデバッグと似てるよね。 ある程度の規模の自作プログラムをデバッグした経験があると 他人のプログラムを読むときにも相応の勘が働きそうな気がするけど どうだろう。 言語にもよるけど一万行ぐらいあるプログラムを書いたことがあれば 他人のプログラムを読むのも楽になりそうな気がする。 てことで「読めるようになるまで書きなさい」という回答はどうだろうか(w
というか各分野の専門書だろ。 エイホを読んでいればGNU grepのソースのdfa.cの中身は 読まなくてもおおよそ何が書いてあるのか見当がつくし、 悪魔本を読んでればOSのソースのtss.cの中身は想像できそう。
922 :
login:Penguin :03/12/16 00:53 ID:7PlkmonT
あ、あとプログラミングツール的な話なら、 SOFTBANKの「Linuxプログラミング〜例題で学ぶUNIXプログラミング環境」 O'REILLY 「GNUソフトウェアプログラミング」 コンピュータの中身的な話なら、 オーム社の「Linker&Loaders」が勉強になった。
924 :
login:Penguin :03/12/16 16:43 ID:lg2iGe9o
GtkまたはSDLベースのプログラムで、 コマンドラインオプションまたはアプリケーション自身の ハードコーディングで、geometryを強制指定するのって、 どうやるの? Xtベース(つまりXawやMotif)なら -geometry 100x200+10+5 みたいなオプション指定ができるけど、 Gtk or SDL だと無理みたいなので、これに相当する方法が知りたいんです。 だれか、よろ〜
gtk_window_move()のdocument読んでみて。
>>922 こういう本ってなんでデザインがダサいんだろうね。
ま、いいけどさ。
928 :
login:Penguin :04/02/08 20:58 ID:F8Ufjb9R
可変引数を実装する場合、 stdarg.h と varargs.h どっちを使うのが今風なの?
>>928 C99規格ではstdarg.hだったような気がする。
>>929 ア゙ディガドゥル
ゾリディャッデヴィバス
931 :
login:Penguin :04/02/18 13:00 ID:tTG0khm7
ログをファイルに書くようにしているとき 長期運用するならlogrotateするけど このときプログラム側ではlogrotate実行に備えて なにをどう注意したらいいんだしょうか? 普通にfopenして書いてるとだめだよなですよね
>>931 普通 syslog 関数で書くような。
>>931 logrotate 側の設定はいじんないの?
>>931 SIGALRMのハンドラでfopenし直しだろ。
つまりsyslogがやっていることと同じ。
>>934 SIGALRMね
ありがと
SIGHUPだとずっと勘違いしてた
いや、syslogdはSIGHUPでrestartしてるけど、 あんたのはアプリの独自rotateでしょ。 SIGHUPは端末切り放しか、restartの意味だから、 別のシグナルの方がいいんじゃないの?
>>936 いや、logrotateをつかいたいんだですよ
ローテート処理まで自分で書くのだるいしですし
じゃあ、syslog(3)使いなよ。 syslogd廻りが全部やってくれる。
>>938 ファイルをわけたいんだけど
syslog.confの書き方がわからないんだよ
そういう使い方をする場合の説明が少ないから
>>937 logrotate の設定でアプリを起動し直すようにしちゃだめなのか?
>>939 man syslog.conf
man 3 syslog
Linux 使うの止めれば? 仕事だったら会社辞めるとか・・・ なんか向いてないっぽ
>>906 に薦められる「デーモン君のソース探検」発売記念age(要NetBSDのソースコード)
┗0=============0┛
\===========[_|_|_|_|_|_|_|_|_|_|_|_|_|_]===========/
/三三三三三三三三三三三三三三三三三三三三\
0 │ |∞∞∞ |::|∞∞田田田田田田∞∞|::|∞∞∞ | ::| 0
...[二] | ::| |::|┏━━━━━━━━┓|::| | ::l [二]
........|□|.│ |┌┬┐ |::|┃ / \ ┃|::| ┌┬┐| ::|. |□|
)三(...| ::|├┼┤ |::|┃/ \┃|::| ├┼┤| ::|`)三(´
| ::| | ::|└┴┘ |::|┃ / ̄ ̄ ̄ ̄ ̄\ ┃|::| └┴┘| ::| | ::|
| ::| | ::|┌┬┐ |::|┃彳 人______ ノ.┃|::| ┌┬┐| ::| | ::|
| ::| | ::|├┼┤ |::|┃入丿ー◎-◎ーヽミ.┃|::| ├┼┤| ::| | ::|
|: :| | ::|└┴┘ |::|┃ r . (_ _) )┃|::| └┴┘| ::| | ::|
| ::| | ::|┌┬┐ |::|┃ ( ∴.ノ▽(∴ ノ ┃|::| ┌┬┐| ::| | ::|
| ::| | ::|├┼┤ |::|┃⌒\_____ノ⌒┃|::| ├┼┤| ::| | ::|
| ::| | ::|└┴┘ |::|┃ ┗━┛ .┃|::| └┴┘| ::| | ::|
| ::| | ::| ... |::|┃ . .
>>942 ┃|::| | ::| | ::|
.....┏━━━━━┓| .|┃ ......┃|::|┏━━━━━┓
.....┣┳┳┳┳┳┫|: |┗━━━━━━━━┛|::|┣┳┳┳┳┳┫
○ ● ∫∬∫∬ ● ○
○○ ●● iiiii iii ii iiii ●● ○○
[ ̄ ̄] [ ̄ ̄] ( ̄ ̄ ̄ ̄ ̄) [ ̄ ̄] [ ̄ ̄]
|_○_| .|_○_| |_____| |_○_| .|_○_|
∧_∧ ∧_∧ ∧_∧ ∧_∧ ∧_∧ ∧_∧ ∧_∧ ∧_∧ ∧_∧
( )( )(, )(,, ) ,,)( )( )(, )( ゚Д゚ )
なんか荒れてるね。
947 :
login:Penguin :04/02/20 15:12 ID:KYNvxlQW
くだ質の方で結論が出ないので、こちらにマルチする旨で 一応了解を得ましたので以下に質問させていただきます。 libxxx.aとかのライブラリに定義されてるシンボルは、もちろん 他のプログラムから使えると思うのですが、実行ファイルに定義 されているシンボルを、他のプログラムから使うことは出来るの でしょうか? 実行ファイルをnmで見た時の関数を、自分で作ったプログラムか らコールしたいんです。その関数を定義しているヘッダファイル は持ってます。 というのもあるアプリケーションをベースに、そのフロントエンド みたいなプログラムを作りたいと思っています。 で、そのベースのアプリケーションのある関数を使いたいんです けど、ライブラリには無いんです。 ソースをコピーしちゃえば良いかも知れないですが、それだと そのベースのアプリケーションのその関数がバグフィックスなど で変更されたときに、いちいち自分で作ったプログラムも修正 しなおさなければいけません。 これをしたくないのです。
ライブラリになってない関数が、 > そのベースのアプリケーションのその関数がバグフィックスなど > で変更されたときに、いちいち自分で作ったプログラムも修正 > しなおさなければいけません。 のようなことに対して不変という仮定がそもそも… おたずねのことについては、ld.soがやっているようなことをやれば可能かと、 しかし呼び出している関数に対してもやる必要があるからかなり大変だね。
>>947 ライブラリの方に移してくれって作者に頼むなり
自分で改造するなりすれば?
>>949 それがしたくない(できない)のではなかろうか・・・
>>950 といってもそれしか方法が無いわけだが。
ダイナミックリンカもどき作っても、相手側のアドレスが変わったら対応できないし。
まあ、はくしてパッチを送るのが一番無難な対応だと思いまふ。
>>947 要するに、
「あるプログラムの関数を使用したい。
コピーはできるけど、オリジナル関数の方に変更があった時に
コピーした方も変更が入るからやりたくない。」
ってことでしょ
実行プログラムを逆汗して埋め込むってのは無し?
>>952 あくまでも玄人ということを忘れちゃいけないですよ。
自分で生HDDをつけるということは、少なくてもパーティションの作成から
ファイルシステムやswapの作成というところから始めなきゃいけない訳だし
unix未経験者にはハードル高いんじゃないかな、少なくてもvi使えないと話にならんし。
でもこれから勉強したい人には良いかもね。
955 :
947 :04/02/21 10:21 ID:g34pH8iI
おお、みなさんありがとうございます。
ちょっと仕事が入ってしまってリプライが遅くなってすみません。
単純に実行ファイルをリンクできるかなあ、と思ってしまった私が
馬鹿でした。
そもそも私が考えていたことは出来ないと理解しました。
>>949 さんがおっしゃる作者への依頼と改造は、
>>950 さんが
おっしゃるように現状出来ないのです、、
>>952 さんの逆アセについてはちょっと私には知識が無いので
難しいです。
とりあえずあきらめました。
皆様ご助言ありがとうございました。
>>947 諦めるのはやいなぁ(・A・)
ソースあるならソースをそのまま拝借して、仕様変更に耐えられるように
適当にラッパを作れば何とかなりそうじゃん。
そのソフトウェアが広く(または狭くても)認められれば、作者も
何か手を打ってくれるかもしれないよ。
「認められたもの勝ち」だよ。
957 :
login:Penguin :04/02/25 16:56 ID:xKpEI/8U
expectのAPIってありますか? 例えばコマンドでexpectを使うように、Cのソースの中 で対話型プログラム(プロセス)を実行したいのです。 system()で呼び出したプロセスをなんとか制御できない もんかと思いまして質問いたしました。
>>957 あれはTclで書いてあったような気がするので、
単純にCから呼べるようにはなっていないと思う。
pipeでがんばれ。
960 :
958 :04/02/26 00:12 ID://0HjKwJ
>>959 いやTclをつっこんでも、expectがそういう使いかたを考慮してないのでは?
と思ってソースとってきたら、libexpectなんてのがありますな。
これ使えば目的を果たせるのでは?
>>957
>>960 Tclの言語仕様を良く見て貰うと分かるけど、
expect程度の拡張だと、Tclの特徴消せないんだわ。
もちろんcontrolling terminal廻りの注意はする必要があるが。
962 :
login:Penguin :04/02/27 01:22 ID:+++7ZFaP
SDLを使ってアプリを書いているんですけど、コンソール版とX11版だとコンソールの方が遅い。 コンソールの方を早くするにはどうしたらいい?
ほんとだ。
>>963 も fb と su か・・・
モデムフックしそうだ
966 :
login:Penguin :04/03/07 03:10 ID:DkALGUAM
閑散としすぎなのでage そういう俺はC++で数学的な処理をするプログラムしか書いたことがないなぁ。 (一応高校生だもんで実用のになるような範囲しかやらなかったり…) 今度、何か面白いもの作ってみようかな?
967 :
login:Penguin :04/03/07 12:40 ID:9agJ57bm
968 :
login:Penguin :04/03/07 13:04 ID:X6zyXe95
969 :
login:Penguin :04/03/10 22:52 ID:LEB4/zIK
Linuxで何ができますか?
プログラミング
972 :
login:Penguin :04/03/10 23:56 ID:smCT96go
デバイスドライバの書き方をやさしく解説した本とかサイトとか ありませんか? カーネルソースのdrivers以下を読めってのは、なしで。
>>972 LINUX デバイスドライバ O'REILLY
今となってはちと古いね。
第2版出てんのかなー。
(英語版はなぜか WEB で見れたんで wget した)
>>973 ありがとうございます。
にしても高い本ですね。
>>974 読んどきゃなんとかなる本ではないから、詠む時は多少気合いを入れてあげてね。
>>976 ちゃんと馬本から入った方がいいよ
ていうか、あれはオライリーの中で 一番わかりやすい本 だと思うが。
一番て
980 :
login:Penguin :04/03/14 13:56 ID:IRycuJog
今日からLinux勉強しようと思います ←仕事で必要のため 皆さん よろしくお願いします
982 :
login:Penguin :04/03/14 14:29 ID:tGUzSqbT
次スレは?
いらないでしょ。
いる!!!!!!!!!!!
ム板行け。
986 :
login:Penguin :04/03/14 16:02 ID:IRycuJog
Windouwsと共存しようと HDD増設しったんですけど
987 :
login:Penguin :04/03/14 16:04 ID:IRycuJog
OSローダーから起動できません 1stドライブがWindowsで50GB使ってるんですがこれがブートセクタの壁ですか?
988 :
login:Penguin :04/03/14 16:07 ID:IRycuJog
ブートローダはLinuxパーティションの/boot に入れてます。ちょくちょく弄りたいのでBootディスクは辛いのです
990 :
login:Penguin :04/03/14 16:10 ID:IRycuJog
良い方法ありませんヵ? WINDOWS-5GB位にして直後の基本領域に入れるほかないんでしょうか? でもWIN再インストールはしたくないんですよねぇ
991 :
login:Penguin :04/03/14 16:17 ID:IRycuJog
いろいろ試したんですけど駄目なんすよね あとLinux領域とVFATは互換性あるとか聞いたんですが認識しないみたいです 直接的な関係じゃないんでしょうか? 初心者ですみませんが
992 :
login:Penguin :04/03/14 16:19 ID:IRycuJog
皆さんウィンドウズと共存されてる方ってみんなシステムで10GBとか使用してないんですかねぇ
993 :
login:Penguin :04/03/14 16:20 ID:IRycuJog
Dual情報見てもなんだかみんな1024の壁クリアすことを苦としてない人が多いもので 情報不足ですかぁぁ
995 :
login:Penguin :04/03/14 16:22 ID:IRycuJog
まぁ別に組めれば言いに越したことないんですけど、現状では共存の道しかないのです どうかお力をお貸しくださいい
996 :
login:Penguin :04/03/14 16:24 ID:IRycuJog
頭脳がマヌケですみません。。。
997 :
login:Penguin :04/03/14 16:26 ID:IRycuJog
えーと
998 :
login:Penguin :04/03/14 16:34 ID:3JwYQZ6z
(´ι _` )
999
1000 :
login:Penguin :04/03/14 16:35 ID:3JwYQZ6z
(´ι _` )・・・999
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。