トップページ⇒linux
1001コメント332KB

Linuxプログラミング

■ このスレッドは過去ログ倉庫に格納されています
0001login:Penguin01/09/02 20:31ID:8eEfRqZ2
教えてよ。ゲームが作りたいんだ
0607login:Penguin03/02/14 12:47ID:2/eMaFxI
>605
EsounD (Gnome用サウンドデーモン) ならできます。
直接サウンドデバイスに音を送らずに、こいつに送ってやると、
こいつが複数の入力を合成して、サウンドデバイスに送って
くれるという仕組みです。
でも、EsounDの仕様が、一度ウェーブデータを送ってしまうと
途中で再生を止められないみたいなんですよ。
これだと、ゲームのナレーションみたいな音の出し方をしたい
場合、途中で飛ばすとかができない。
そして、なぜか、本家サイトの開発が2000年ぐらいから殆ど
進んでない。
とはいえ、世の中には新しいバージョンも配布されているようで
一体どこの誰がメンテナンスしてるのか ・・・
そして、その新バージョンのドキュメントを見ても本家サイトの
URLをミロ ・・・ みたいな事になってる。
(でも、機能はあまり変わってない。バグフィックス中心か?)

他の分野では凄まじい勢いで開発の進んでるLinuxだが、
どうもマルチメディア系は開発が細々としか進んでない感じがする。
一体どこへ向かおうとしているのだろう ・・・

ちょっとした仕事で、Linuxでビデオと音声を扱う事になったの
だが、他の分野と比べて、情報量が圧倒的に少ないのにちょっと
まいっている所。ま、今回はたいしたアプリケーションでないから
なんとかなりそうではあるが ・・・
0608login:Penguin03/02/14 14:50ID:4IRvBYC/
>>607
jack なんかはどうかな?
http://jackit.sourceforge.net/

linux-audio-dev ML のアーカイブをざっと読むと
最近のトレンドはある程度把握できると思うよ。
0609名無しさん@Emacs03/02/14 21:15ID:FG8nW0fg
何も知らないんだけど、SDLでどうにかならんかな?
0610login:Penguin03/02/15 23:13ID:0QrA37pB
>>608
どうも。
とりあえず、多重化は必須というほどではなかったので、
急場はALSAに別スレッドでデータを流して音を止められ
るようにする事で解決しました。
じっくりやってる時間がナイ・・・
0611login:Penguin03/02/16 03:27ID:0kL1SNcD
unixのサウンドって/dev/audio0とかに書き出していくだけじゃなかったっけ?
その下がALSAドライバが受け持つとか。ALSAにデータ流してってどういう話
なんだろう?
0612login:Penguin03/02/16 15:36ID:6c33+CVl
esoundはもう見捨てられたと考えていいと思うけどな…。
ソース忘れたけど、ACからも嫌われてるし。


あー、さっさとALSA普及させろやー
06136703/02/16 16:27ID:p4l0B0Y2
■■無料レンタル掲示板■■

どんどんレンタルして下さい

ランキングありジャンルも豊富です


http://www.geocities.jp/kgy919/bbs.html










0614login:Penguin03/03/10 00:09ID:eD+YrOEB
XLib ネタで質問あります。 DefaultGC ってあるけど、これって何かね?
なんか分からんのよ。
XCreateGC で返るのは新たに作ったやつだよね?だからアプリがいじっても
かまわないだろうけど、俺は DefaultGC で返るGCをいじってるけどちゃんと
反映される(出力の色とか)し、他のWindow がおかしくなったりしないのよ。
なーにこれ?
0615login:Penguin03/03/10 11:21ID:buxmoWsJ
>>614
マクロ DefaultGC は、指定したスクリーンのルートウィンドウの
デフォルトのGC を返す。
0616login:Penguin03/03/11 06:52ID:iMqi8r5z
>>615
うーん、つまり、DefaultGC は内容が ルートウインドウと同じものが
用意されるのかねえ?なら納得できるんだけど。

0617login:Penguin03/03/15 04:42ID:qpnlxQeb
サウンドプログラミングのついでに聞いちゃいたいのだけれど、OSSとALSAでは
スペシャルデバイスファイルの違いは、

/dev/audio==OSS
/dev/snd/pcm何とか==ALSA

という配置であるという理解でよろしいか?
0618login:Penguin03/03/16 04:28ID:iPIOgVUt
だめだめ
0619login:Penguin03/03/18 15:40ID:Vc3GhXfh
1です、久しぶり。
ここでの奮闘により、
去年の内にポインタを理解し、
今ではカーネルやデバイス関係のドキュメントを英語で読むに至っております。
勿論、奨められたSDLは大変気に入っており、
毎日のようにコードを書いています。
0620login:Penguin03/03/20 22:09ID:150VeITd
linuxのデバイスドライバを作るのにC++を使いたいのですがどうにもうまくいきません
どこか良い開設サイトをご存知ありませんか?
0621login:Penguin03/03/21 03:31ID:Ar5jNpE7
お願いだからやめてくれ
0622login:Penguin03/03/21 11:23ID:LoWU/LPj
>>620
解決法を思い付かないなら止めれ。
てか、どういうメリットがあるの?
0623山崎渉03/04/17 12:13ID:PWISM87M
(^^)
0624山崎渉03/04/20 06:07ID:X64WTq1+
   ∧_∧
  (  ^^ )< ぬるぽ(^^)
0625教えて君03/04/25 10:20ID:zWQkST10
CまたはRubyを使って、指定全角文字のフォントの
ドットパターンを取得するにはどうやるんでしょうか?
0626動画直リン03/04/25 10:26ID:1KQi+Ees
http://homepage.mac.com/hitomi18/
0627login:Penguin03/05/19 10:41ID:B7F7qJzq
C言語のプログラムからコマンドを使うにはどうすればいいのですか?
0628login:Penguin03/05/19 11:13ID:zFFJzSM7
>>627
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/system.3.html
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/exec.3.html
普通は、systemで十分だと思うが。
0629login:Penguin03/05/19 11:33ID:3Do4PmQQ
>>627,628
popenってのもあるよ。
0630login:Penguin03/05/19 14:07ID:K5A7Hh5Y
fork()してexec()
0631教えて君62503/05/19 17:58ID:j84chePv
   / ̄.....//.... θ ̄>
  ∠|::::::::::::::U:: τ ::::::<
⊂二|::::::::::::::::::::::::::θ_>
    ̄∠/ ̄ ̄    …モウダメポ
0632login:Penguin03/05/19 19:29ID:Y0/Pjc0j
fork,execな変態APIはどうにかならないものだろうか。
0633login:Penguin03/05/19 19:48ID:+4CtkZ3y
>>632
CreateProcess[Ex] の方が変態すぎて(ry
0634login:Penguin03/05/20 00:14ID:ij1JGhpr
>>628-630

蟻がトン(^^
0635login:Penguin03/05/20 00:39ID:a9FLtpm3
>>632
あれはないよりはあった方が良いと思うが。
それとも fork(), exec() をまとめた関数が一つあった方が良いかい?
良いと思うなら自作して発表してみたら?
(もう誰か作ってそうだけど。 system() はそれの一種だよね。
/bin/sh 使ってしかも wait() しちゃうけど)。
0636login:Penguin03/05/20 00:53ID:Fx7TYsA6
>>635
>>629&>>633

popenは中でforkしてパイプでつなげてるだけ。manで書いてあることそのまんま。

CreateProcessだと
http://www.microsoft.com/japan/developer/library/jpwinpf/_win32_createprocess.htm
こうなるが、引数にてやろうとしていることは、forkからexecする間に噛ませばなんのこたぁない。
0637login:Penguin03/05/20 01:36ID:a9FLtpm3
>>636
Windows の CreateProcess() 使うと複雑になるんだよね。
一つの API に機能を詰め込み過ぎてると思う。だから
こんなに説明が長くなる。使う側の慣れもあるんだろう
けど、俺はあまり使い易いとは感じないな。
0638login:Penguin03/05/20 01:44ID:3OKeb603
>>635
spawnをシステムコールに追加って話があった。
あれどうなったのかな?

0639login:Penguin03/05/21 11:42ID:YFGEALm2
man3 と man2 の違いは何ですか?
JMのサイトを見ても、 1-8 まであるみたいだし。
大雑把な区分けといったものがあるのでしょうか?
0640login:Penguin03/05/21 15:23ID:zAJggrG2
>>639
man manを読む。
ちなみに、
2 - システムコール
3 - libc
0641login:Penguin03/05/21 18:32ID:DKxRrfrt
>>639
$ man 2 intro
$ man 3 intro
などなど
0642山崎渉03/05/22 01:52ID:p4opmoqv
━―━―━―━―━―━―━―━―━[JR山崎駅(^^)]━―━―━―━―━―━―━―━―━―
0643教えて君62503/05/22 11:23ID:e75yor33
フォントのドットパターンの取得方法について優しく
教えていただける夢を見ました。
が、肝心の所で目が覚めてしまいました。
0644login:Penguin03/05/22 15:07ID:eHEw1nmE
>>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);
 }
064564403/05/22 15:08ID: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;
}
064664403/05/22 15:14ID:eHEw1nmE
よく知らないけど Xlib とか FreeType とか SDL とかその手のグラフィック関係の
ライブラリの API を使ってピックスマップに文字をレンダリングするのが正攻法だと
思う。上のはお遊びってことで。
0647教えて君62503/05/22 23:24ID:e75yor33
>>644
ありがとうございました。バッチリ動作しております。
これを元に改造して使ってみます。
またXlib辺りも調べてみます。
0648login:Penguin03/05/22 23:45ID:qgpDlc9Q
>>635
>それとも fork(), exec() をまとめた関数が一つあった方が良いかい?
この前のlkmlにそれに関してポストした奴がいたね。
なんでもfork,execをひとつにしたnew system callを作ろう!って言う感じで。
でも、まわりからは反発されまくってたけどね。(w
それをする意義があまりにも無さ過ぎるんでしょうね。
0649login:Penguin03/05/23 11:32ID:/d2rxA9m
>>648
forkの処理を端折れる(といっても微々たる物ですが)ので
無意味って事はないけど、アプリ側の修正の手間が…って事だと思いますが。

2.7になったらもう一回議論すればよろしいんでは?
今になってシステムコール追加しても、まわりの対応が2.6に間に合う保証はないし。
0650login:Penguin03/05/23 15:40ID:dZHIOWYJ
>>649
2.7にでも入れてとパッチをMLに投げとけばええんでない?
でも無視されっぽw
065164903/05/23 16:16ID:/d2rxA9m
>>650
遠慮します。別にいらないし。
最大の問題はarchの下も直す必要がある所なんだけど。
0652login:Penguin03/05/23 16:35ID:z9yq3ofE
LinuxでプログラミングといったらC/C++なのですか?

ServletやJ2EEでWebsiteを作りたいと思っているのでJavaをやっています。
0653login:Penguin03/05/23 16:44ID:6bO6Evwp
コンソールにカラーで文字を出力させるにはどうしたらいいの?
0654login:Penguin03/05/23 17:24ID:8XuGW2x3
>>653
シェルなら
echo -e "\e[44m青背景\e[0m"

CやPerlなら
printf("\e[31m赤前景\e[0m\n");

\e は \x1B, \33 でも可。
つまりASCIIのエスケープのこと。

他にもboldなどの属性を組み合わせたり出来る。
詳しくは man console_codes

#ちょうど端末系のプログラムしてたーよ
0655login:Penguin03/05/23 17:34ID:Q/fduj3n
>>653
ライブラリ:
・S-Lang
・ncurses
など。手抜きなら

 put_ansi_color(int color) {
  printf("%c[%dm;", 0x1b, color)
 }

ANSIカラーシーケンスぐらいは自分で調べろ
065665503/05/23 17:36ID:Q/fduj3n
ちょと間違えた。

065764803/05/23 20:22ID:PJ5y0ueJ
>>649、>>650
別にsystem callにする必要ないでしょう。
それをするならライブラリで十分だよ。
でも端折れる割にはあまりメリットがないような。

っていうかやっぱりライブラリにしても自分は使わない。(w
0658login:Penguin03/05/23 20:47ID:1yWSV2Pq
fork+execで特に不満は無いが、なぜこんな気持ち悪い方法で
プロセスの生成するようになったのかは知りたい。
0659login:Penguin03/05/23 20:56ID:dZHIOWYJ
>>658
CreateProcessのほうが気持ち悪いって・・・

fork+execならば、CreateProcessのまねごとは出来るが
CreateProcessでは、fork+execのまねごとは不可能。

>>657
そいやぁexecはsystem callじゃなかった・・・スマソ

> っていうかやっぱりライブラリにしても自分は使わない。(w
同上
066064903/05/23 20:59ID:/d2rxA9m
>>657
ライブラリじゃほとんど端折れないと思うんだけどねえ。
と思ったけど、cloneに手を入れればライブラリだけでもなんとかなりそうだな。
激しく汎用性ないけど。
0661login:Penguin03/05/23 21:42ID:BrbHauGn
Hello World! 出せたよ!!!
066264803/05/23 22:04ID:PJ5y0ueJ
>>660
いぁ、そういう意味で言ったんじゃなくて、
fork + execをひとつにすることを端折ると言いました。

それに、そのような関数の組合せを一つにして
system call等を作成すると結構な組合せができるし、
議論も分かれる部分があると思うし、
なにより、わざわざ存在してる物を組合せてKernelやlibraryのサイズを
増やすこともなかろうと思うわけです。

Linus Benedict Torvaldsは、以下の言葉を引用したことがあります。
"Keep It Simple, Stupid"
「シンプルにしておけ、何もわざわざ複雑にする必要は無い」ってことでしょうか?
0663login:Penguin03/05/23 23:06ID:1yWSV2Pq
>>659
いや、まねができるとか、機能の問題じゃなくてな。

突然プログラムが2つに分かれたり、別のプログラムに置き換わったり
することが気持ち悪いと感じるわけだが。
#突然、自分のコピーが作られたり(しかも、自分はコピーの方だったり)、
#気づかないうちに他人の脳が移植されてたりする感覚といえばいいだろうか。

言語としてそういう動作がサポートされている言語なら違和感無いのかも
しれないが、Cではそういう動作はまず無いし。
0664login:Penguin03/05/23 23:45ID:ppcJMMz5
>>663
あなた自身、ご両親から fork してご自分の人生を exec しています。
Unix の仕組みと同じです。何も気持ち悪く思うことはありません。
066564903/05/23 23:51ID:/d2rxA9m
>>662
sendfileなんてのもありますが。
まあ、あれはメモリコピーの回数が減らせるので、それなりに存在意義があるか。
066664803/05/23 23:59ID:PJ5y0ueJ
>>665
カーネル内コピーなんでパフォーマンスをあげるため作成されたんじゃないかなぁ。需要もありそうだし。
0667login:Penguin03/05/24 02:20ID:B4Q+JvDP
>>664
でも人生、sleepだけではだめですよ。
できるだけたくさんのI/O処理をかまして、人生を有意義にすごしましょう。
まぁ、負荷がかかりすぎてカーネルパニックで自滅も怖いけどね。(w
0668login:Penguin03/05/26 16:17ID:RBKpcb+0
waitがプロセス停止でも返るのはどうにかならんか?
0669login:Penguin03/05/26 20:21ID:h/wVtHwT
ターミナルの linefold bugと はどういうバグなのですか?
0670login:Penguin03/05/27 00:55ID:7nn4IhbL
>>668
WIFSTOPPEDマクロを使用しては?
0671山崎渉03/05/28 16:52ID:3t6i6zxR
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      山崎渉
0672login:Penguin03/05/30 03:10ID:MG+2HHAG
メッセージキューもセマフォもキーが数字ですが、これって他のアプリと衝突しないのでしょうか?
Windowsでは文字列で管理してたのでそこらへんが衝突する心配はかなり少なかったのですが。
0673login:Penguin03/05/30 09:27ID:giaMtuFk
>>672
キーにinodeを使えば衝突はまず無いな。
0674login:Penguin03/05/30 18:14ID:ygNMVWQQ
>>673
テンポラリファイルの inode を使うとかいうガイドラインでもあるの?
他のプロセスも同じガイドラインで動いてないんだったら、自分だけ inode
使ってもやっぱり衝突すると思うが。
0675login:Penguin03/05/30 19:55ID:giaMtuFk
>>674
失礼inodeじゃなくてftokだ。man ftok すりゃガイドラインある。
0676login:Penguin03/05/30 21:07ID:7CcX10s9
perlでOSを書くってのは可能ですか?
0677login:Penguin03/05/30 22:56ID:ABzzpQz+
>>676
perl -e 'print "OS";'
0678login:Penguin03/05/30 23:01ID:saH6ipGu
AWKでOSを書くのは可能ですか?
0679login:Penguin03/05/30 23:09ID:skGhRn3W
仮想マシンなら書けます。
0680login:Penguin03/06/12 18:51ID:xQEvAwt/
catやls等のソースを読もうとcoreutilsパッケージを落したんですが、
複雑でよく分かりませんでした。
これって1.0とか前のバージョンだとすっきりしてるんですか?
探してもそんな昔のバージョンの物は見付からなかったのですが
どこかで配布しているのなら教えて欲しいです。
0681login:Penguin03/06/12 20:24ID:gS0S/vM1
>>680
> catやls等のソースを読もうとcoreutilsパッケージを落したんですが、
ちょっと前までは、lsはfileutils、catはtextutilsだったんで、
それらを探してみては?
0682login:Penguin03/07/05 00:50ID:GDJ/wBjJ
CDをRAW読み込みするにはどうすればよいのですか?
0683login:Penguin03/07/05 01:15ID:3NMShMij
>>682
dataだったら/dev/*読めばいいんじゃないかと。
audioだったらcdda2wavを参考にすれ。

0684login:Penguin03/07/06 01:47ID:Y9+oauTP
システムコールを使うプログラミングを勉強するのにもっとも適した
参考書・教科書は?
0685login:Penguin03/07/06 02:21ID:k2dvOV2J
$ bash -c "help trap"
068668503/07/06 02:26ID:k2dvOV2J
...と思ったらこんなにあるのね。
しらんことに口出すとろくなことない。
逃亡

Linux System Call Table
http://world.std.com/~slanning/asm/syscall_list.html
0687login:Penguin03/07/07 13:33ID:q22K5uBr
ChangeLog のフォーマットが解説されているサイトを教えてください。
0688login:Penguin03/07/07 16:15ID:8LS9zi4W
>>687
ググらんでよし。

% info standards documentation 'change logs'
0689login:Penguin03/07/08 01:10ID:DtGnB79X
(・∀・)renice!
0690login:Penguin03/07/10 23:12ID:JFqZpSeu
C言語で、MACアドレスを取得するにはどうすればいいでしょうか?

0691 03/07/10 23:12ID:JFqZpSeu
また、wget や grepの出力結果を、直接、Cのプログラム内で受け取ることはできないでしょうか?
いままでは、

system("grep hu-nn hoge.log > grep.log");
grep.logを開いて読む

とやっていたのですが、これをやっていたプログラムをファイルの使えない
組み込みLINUXに移植することになりましたので、よい方法を探しています。
0692login:Penguin03/07/10 23:30ID:DlPSb+E0
>>691
pipeでつながったパイプ(ファイルディスクリプタ(FD)のペア*1)作成
forkでサブプロセス起動
サブプロセス側で
 stdoutをクローズ
 dup2でFD(*1)の標準出力1番に複製
 execでgrepなどを起動
メインプロセス側で
 FD(*1)のペア残りを読み込み
 waitpidでサブプロセスの終了を待つ

とすればいけるはず
 
069369103/07/10 23:45ID:JFqZpSeu
>>692
教えていただいたことを手がかりにして何とかいけそうです。
非常に助かりました。ありがとうございました。
0694login:Penguin03/07/11 01:49ID:nVc5TxUX
>>690
ifconfigのソースよめ。
たしかPF_PACKETのsocket作ってioctlすべし。
だったと思う。

>>692
素直にpopenでいいんでは?
0695login:Penguin03/07/11 01:57ID:Lri3S1WJ
>>690
ぐぐったらこんなんでたよ。
http://www.linuxquestions.org/questions/archive/9/2003/03/3/38217

ぐぐキー「ioctl MAC Address Getting Linux」
0696login:Penguin03/07/14 02:47ID:5XjH4O4S
age
0697login:Penguin03/07/14 13:24ID:iCUPa5T3
微妙にスレ違いだけど、"User collaboration in open source development"
なんていうサブジェクトのメールがきた。
スパムかと思ったら有名大学の学生さんによるオープンソースプロジェクトに関する
アンケートだった。
0698山崎 渉03/07/15 11:17ID:2JhhXBQM

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄
0699login:Penguin03/07/15 12:02ID:KhvjxSuE
(・∀・)renice!
0700login:Penguin03/07/16 09:46ID:/p4PizTj
1にお勧め書籍の紹介あることを期待してここを開いたわけだが、ないじゃん。
Linuxプログラミングっつー、目線がはいってる怪しいやつかおうかとおもってるんだけど、どー?

0701login:Penguin03/07/16 10:54ID:/p4PizTj
http://www.atmarkit.co.jp/flinux/bookreview/04program/bookreview.html
0702login:Penguin03/07/16 15:20ID:LkFgtc49
http://linux2ch.bbzone.net/index.php?%5B%5BBooks%5D%5D
http://www.1point.jp/~book_2ch/
0703login:Penguin03/07/16 23:12ID:RMGCfqzT
>>700
かなりおすすめ。あんまLinux固有の話じゃなくて、
Unix全般についてあてはまることが書いてある。
やりたいことにもよるがな。
Cはちゃんと分かってて、GUIプログラムつくりたいんじゃなきゃ
オススメ。

0704login:Penguin03/07/17 00:30ID:GsLFg1G9
eth0 ,eth1 のアドレスを調べる関数って何でしょう?
0705login:Penguin03/07/17 00:43ID:jtcdxhET
何のアドレス?
0706login:Penguin03/07/17 00:52ID:TN6AJWjK
>>704,705
man ioctl_list
にある <include/linux/sockio.h> あたりのどれかだろ?
ADDRってつくのがいろいろあるが。
0707login:Penguin03/07/17 08:57ID:1kQtRwFh
>>702
こーゆーのもあったのね。サンクス。

>>703
昨日さっそく立ち読み、
漏れはWindowsプログラマ(C++)なのだが、分かりやすかったので即購入。



■ このスレッドは過去ログ倉庫に格納されています