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

Linuxプログラミング

■ このスレッドは過去ログ倉庫に格納されています
0001login:Penguin01/09/02 20:31ID:8eEfRqZ2
教えてよ。ゲームが作りたいんだ
0709login:Penguin03/07/17 11:36ID:V3J08gFU
>>708
WideStudioってのもあるけど。まぁ好き嫌いは当人にお任せして。

emacsでgdbとか使えるようになるといい感じだよ。

IDEに頼る人って、よく醜いソースコード吐くんだよね。
IDEが高機能=ソースコードが醜くても何とか見える
から・・・それだけは慎重にしとくれ。

GUIならGTKライブラリがお勧め。
0710login:Penguin03/07/20 23:19ID:R7nf/Fv+
>>708よ。
>>709が言いたかったのは、
ようは、
viを使えよと、Makefileを書けよと、shellでシステム管理用スクリプト
ぐらい書けよと、sedとawkと正規表現を極めろよと、
kernel sourceの修正をして、パッチ作成してlkmlにポストして、
たまにはLinusに注意してやれよと。
こう言いたかったようです。
0711login:Penguin03/07/23 11:46ID:ZPPlsMW8
(・∀・)renice!
0712login:Penguin03/07/23 15:05ID:6cwqB+RT
UNIXドメインソケットの作成ってどうやるの?
socket作った後bindするのがよくわからない
0713login:Penguin03/07/23 15:25ID:fIgXDXyS
http://www.e-mansion.co.jp/kensyou/
0714神の賜物03/07/23 15:32ID:sSQJakwS
誰か教えてください。リナックスのOSを市販のノートパソコンにインストールして
ワードなんかのアプリケーションはうまく機能するのですか。何分ウィンドーズしか
知らない未熟者です。よろしく指南ください。
0715_03/07/23 15:39ID:szLePVKp
http://homepage.mac.com/hiroyuki44/
0716login:Penguin03/07/23 15:45ID:YqKlkAJm
>>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
でわかるかも?

0717login:Penguin03/07/23 18:41ID:ZQqetWNF
いきなりの質問ですみません。
RedHatLinux8.0でメールボックスにメールを受信した時に
PHPスクリプトを呼び出して処理を行った後返信をしたいのですが、
メールが届く度に、PHPスクリプトを呼び出すメールサーバ側の設定がわかりません。
どのようにすればいいでしょうか?
PHPはphp 4.3.2をimap関数付きでconfigureしてます。
sendmail 8.12.5
popt 1.7.1
よろしくお願いします。
0718login:Penguin03/07/23 18:59ID:qGKxaJYN
フリーの統合開発環境でいいのないすか?
どうもviじゃいまいちだし。
できればVC++みたくで日本語環境で使える奴。
キリクス高杉
0719login:Penguin03/07/23 19:04ID:YqKlkAJm
>>718
WideStudio, Kdevelop, etc...
0720login:Penguin03/07/23 19:17ID:6cwqB+RT
>>716
(゚∀゚)サンクスコ
0721login:Penguin03/07/23 19:18ID:cPeNPJaK
>>719
「いいの」といってるだろ。

>>720
諦めてvi, emacsに慣れるかcuiアプリならsamba経由でvcで開発デバッグするのも有り。
C/C++でVC並に使いやすいIDEはないよ。
つかKylix Open Editionじゃ駄目なのか?
0722login:Penguin03/07/23 19:44ID:CrZUc/cg
WideStudioって未踏採択されたらしいよ。
これから良くなるんでないの?
072371803/07/23 23:01ID:qGKxaJYN
>>719-722
それぞれ見てみましたが一長一短って感じですね。
取りあえず将来性も考えWideStudio使ってみようかとおもいます。

Kylix Open Editionも良いけどGPLソフトしか作れないってのはきっついなー。
0724login:Penguin03/07/24 10:51ID:fOKry8Mc
>>723

> フリーの統合開発環境でいいのないすか?
> どうもviじゃいまいちだし。
> できればVC++みたくで日本語環境で使える奴。
> キリクス高杉

VC++使えばいいじゃん。もう(買って)持ってるんだろ?

今更フリーにはしるこたぁねえよ
072570703/07/24 23:23ID:m74KDjKB
>>723

漏れはWindows用のゲームのサーバとしてLinuxでプログラム組んでるが、
Windows上でLinuxと同じ動作をするぷプログラムをまず組んで、
あらかたバグがとれたらLinuxへ移植。もっと効率のいい方法無いかな?
0726login:Penguin03/07/25 02:14ID:V77hoGnP
>>725
開発効率が良ければいいんじゃないかな

開発環境ってもただの道具だし、
手に馴染んだものを使うのが
結局一番いいということもあるし。
0727login:Penguin03/07/25 11:23ID:azZp68HE
えっと、質問させてください
最近真面目に勉強始めたんですが・・・

Cでプログラム作って、中の動作を一部シェルやコマンドに任せたりなんてどーやってやるんですか?
徹頭徹尾、CならC、シェルならシェルで書かないとイカンですか?
0728login:Penguin03/07/25 11:30ID:29zDwjlu
>>727
system, exec, fork
を参考にしてください。
0729login:Penguin03/07/25 11:30ID:29zDwjlu
あ・・あと、popen
0730login:Penguin03/07/25 12:07ID:azZp68HE
>>728>>729
ありがとうございます
0731login:Penguin03/07/26 04:56ID:aiFKdJLY
emacsは統合開発環境じゃないのか?
0732login:Penguin03/07/26 05:17ID:J0HMlTl0
>>731
"統合環境"だろ。"開発"は余計。
0733login:Penguin03/07/27 07:01ID:6YULTMa4
開発で合ってますが。
0734login:Penguin03/07/27 14:59ID:dGC6KQ/n
>>733
このスレでの発言であればあってるから問題ない
他のスレで「開発」なんて付けて呼んだらイカンけどな。
0735login:Penguin03/07/28 12:55ID:YIr5Dzm4
(・∀・)renice!
0736login:Penguin03/07/28 18:40ID:Fse58Rnu

スレ名:Linuxプログラミング
板 名:Linux@2ちゃんねる
投稿者:
メール:sage
投稿日:2003/07/28 18:38:34
本 文:

emacsって、CUI環境で日本語入力できる?

オレRedhat8.0とTurboLinux使ってみたんだけど、
両方とも起動直後のコンソールではshift+spaceでFepが立ち上がらん。

x-window上でktermを起動させて、その上でemacsを起動させればFEPも使えるんだけど、
重い・・・。
0737login:Penguin03/07/28 18:41ID:Fse58Rnu
スマ、余計なモンまでCut&Pasteしちった
0738login:Penguin03/07/28 19:40ID:3aOZaK5v
「Fep」が世代を感じさせるね
0739login:Penguin03/07/29 01:10ID:Ft2LMD2u
>>736
激しくスレ違いだが一応答えておく・・・

emacsのFEP(IME)は、CTRL+o もしくは、 CTRL+\ です。
キーバインドの設定によって変わってますが、大抵はどちらか。
# emacsが起動するホストでcannaやwnnやATOKなどが起動している必要がある
0740login:Penguin03/07/30 17:45ID:yKm3BaiU
標準入力(fdでいうと0か) をdefineしてるヘッダってどれですか?
grepしたら
unistd.h:#define STDIN_FILENO 0
と出たんだけど、これ使っていいの?
0741login:Penguin03/07/30 17:55ID:Gdoqv3Kj
>>740 いいよ
0742login:Penguin03/07/31 03:19ID:k0B+t1iH
ctrl+oはやったんだけど、Ctrl+\はやってなかった、、。サンクス!

074372703/08/01 11:58ID:FcJoCnjb
追加質問です

Cの中でコマンドを使うにはsystemなどを、というコトでしたが、
例えばprintf系のように%dとか%sとかって使うコトは出来るのでしょうか?
systemは実際駄目でしたが。




0744login:Penguin03/08/01 12:05ID:YzTLfBOM
>>743
そのためのsprintf
全然Linux固有の話じゃないな。

あと、外部の入力をsystemに食わせる時はちゃんとチェックしとけよ。
穴になるぞ。
0745login:Penguin03/08/01 13:22ID:3Dz1soT0
>>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);
}

もちろん穴には気をつけてね。
0746hidehiro03/08/01 15:25ID:FaQAPlZw
はじめまして
コマンドプロンプトからコマンドを実行した時に
標準出力へ出力される文字数を取得する環境変数
かなにかはあるのでしょうか?
0747login:Penguin03/08/01 15:29ID:3Dz1soT0
>>746
何がしたいの??

なんか
ls | wc -c
とかいうことじゃないよな?
0748ぼるじょあ ◆yBEncckFOU 03/08/02 04:56ID:GfRe8vK7
     ∧_∧  ∧_∧
ピュ.ー (  ・3・) (  ^^ ) <これからも僕たちを応援して下さいね(^^)。
  =〔~∪ ̄ ̄ ̄∪ ̄ ̄〕
  = ◎――――――◎                      山崎渉&ぼるじょあ
0749login:Penguin03/08/02 10:14ID:2rmp9gin
(・∀・)renice!
0750login:Penguin03/08/03 20:31ID:q7iiqNK4
>>747
ターミナルの横幅では?
0751login:Penguin03/08/04 03:03ID:e3p0qvvk
コラムス!
0752login:Penguin03/08/08 11:52ID:mg5o8ebS
(・∀・)renice!
0753login:Penguin03/08/09 08:18ID:23zZMeDy
ああ・・・なんてレベルが低いんだ・・・
0754login:Penguin03/08/12 11:33ID:4MGXav2e
(・∀・)renice!
0755login:Penguin03/08/14 00:36ID:qFFLWU8R
Cでネットワークプロいグラム書いてますけど質問です。

IPアドレスから名前に変換するとき、今一番トレンディな方法は
いったいなんでしょうか? getnameinfo を使うのがベストなの?
0756login:Penguin03/08/14 02:26ID:gJhrJeKX
>>755
gethostbyaddr
かな。
$ man gethostbyaddr
で関連関数が出てくるよ
0757login:Penguin03/08/14 19:00ID:qFFLWU8R
Cでネットワークプログラム書いてるけど質問だ!

動作中、ずっとlisten()してるソケットを作りました。
このプログラムが動作中は問題ないんですが
Ctrl+C等で不用意に止めて、もう一度動かすと
bindでエラー(EADDRINUSE :Address already in use)
となって待ち受け出来なくなります。
このときnetstatでポートを見ると TIME_WAIT とあるので
そのポートが自然に消滅するのを待てばいいのですが

こんなことをしなくても強制的に再利用したいのですが
どうしたらいいでしょうか?
setsockoptでなんか適当に設定するの?SO_REUSEADDR?
0758login:Penguin03/08/14 20:03ID:imXzk7pa
> setsockoptでなんか適当に設定するの?SO_REUSEADDR?
そうそれ。
0759login:Penguin03/08/14 20:54ID:OZhN5Fs9
signal()で処理だろ。
0760login:Penguin03/08/14 20:56ID:imXzk7pa
>>759
signalで処理しても
> このときnetstatでポートを見ると TIME_WAIT とあるので
この状態は防げない。
0761login:Penguin03/08/14 23:57ID:EZZe4dzO
>>757
int flag = 1;
setsockopt(fdsocket, SOL_SOCKET, SO_REUSEADDR, &flag, sizeof(flag));
fdsocketはsocket関数で取得したsocket descriptor。
0762login:Penguin03/08/15 15:07ID:VuCLTiPS
>>758,>>761
(゚∀゚)サンクスコ

うまく動かんなーと思ってたらflag=1を忘れてたぜエヘヘ
0763山崎 渉03/08/15 22:20ID:dil3w4kp
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン
0764login:Penguin03/08/16 00:11ID:5i+gfiwt
(・∀・)renice!
0765login:Penguin03/08/18 01:17ID: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の使い方、どッか間違ッてる?
0766login:Penguin03/08/18 01:21ID:wDvg6Ni/
>>765
printf("%d.%d.%d.%d\n", buf[0], buf[1], buf[2], buf[3]);
じゃないのか?
076776603/08/18 01:48ID:wDvg6Ni/
失礼とちったっぽ。
076876603/08/18 02:08ID: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に渡す
0769login:Penguin03/08/18 02:50ID:X8KH6Enz
>>765,>>768
ちなみに、終了時には
freeaddrinfo(ai);
を処理するべきかな。
077076603/08/18 03:06ID:wDvg6Ni/
>>769
一回しか実行しないなら、別にやらなくて良いよ。
何度もgetaddrinfoのコールを繰り返す可能性を考えるなら、
freeaddrinfoを処理することを考慮すべき。

解る人には解る言い方だと、
シングルトンなものの場合は、わざわざfreeせんでよろしい。
0771login:Penguin03/08/19 03:35ID:LWYDhLjX
>>768
(゚∀゚)サンクスコ
やっぱヘッダをちゃんと見なきゃダメだね〜

構造体の宣言が、何がどこにあるのか って
みんなどうやって調べてる?
地道に /usr/include をgrepしてる?
なんていうか、構造体の宣言と、それを使っているところと、
ごっちゃになっちゃって調べるのがすごく大変じゃない?
どう?
0772login:Penguin03/08/19 04:17ID:v6fEt28y
>>771
漏れは大抵manをみるが。。grepしてみるときもあるけど、別に地道でもないだろ?
grep -r sockaddr_in /usr/include って地道か・・・?
0773login:Penguin03/08/20 16:14ID:0pNGqgqP
-pg オプションつけて gprofで見ても 処理時間が全部0なのは
なんででしょう?
関数呼び出し回数だけじゃどこに負荷がかかってるかわかんない。

もしかして fork()の子はで処理時間が計測されないとか?
0774login:Penguin03/08/25 13:01ID:q192lGDp
>fork()の子はで処理時間が計測されないとか?
じゃない? さもなければfork()した中で開始時刻と終了時刻を出力するとか。

蛇足だけど、 コンパイラを変えると-gオプションとかうまく動かないことがあるね。
gcc3.xだけインスコしてgdbを変えなかったら、ソースファイルが見つからんとか言われた。
0775login:Penguin03/08/29 10:11ID:DokghWbk
インラインアセンブラや組み込み関数つかって、SSE2のコード作れるCありますか?
intelコンパイラ以外でキボンヌ
0776login:Penguin03/08/29 14:23ID:+Ii5K2eY
>>775
最近のgccも使えるはず。
0777login:Penguin03/09/02 10:04ID:KpUKip/J
  _、_ 
( ,_ノ` )    777
     ζ
    [ ̄]'E
.      ̄
0778login:Penguin03/09/04 18:03ID:FHcUI8Nh
(・∀・)renice!
0779login:Penguin03/09/09 03:44ID:wDUOST0N
>>774
>蛇足だけど、コンパイラを変えると-gオプションとかうまく動かないことがあるね。
>gcc3.xだけインスコしてgdbを変えなかったら、ソースファイルが見つからんとか言われた。
コマンドラインで
$ gdb -d ディレクトリ名
って指定するか、gdbコマンド内で以下のように
(gdb) directory ディレクトリ名
すればいいのでは?
0780login:Penguin03/09/14 14:08ID:Y8kxOv2d
(・∀・)renice!
0781login:Penguin03/09/19 00:26ID: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 つ目の引数って存在意義がないと思うんですが、
複数のマッチ位置を全部返すようにはできないんでしようか。

よろしくお願いいたします。
0782login:Penguin03/09/19 00:27ID:KnTrMiuH
あ、&reg が ® に化けてしまいました。すみません。
0783login:Penguin03/09/19 01:18ID:eWuAESL5
>>781
そんなもんらしい。
nmatchの効果については
http://www.aihara.co.jp/~junt/program/regex.html
とかに書いてあった。
0784login:Penguin03/09/19 01:27ID:KnTrMiuH
>>783
どうもありがとうございました。
() を含んだ部分正規表現というもの?(詳しくないので違ってたらすみません)の
どれにマッチしたかが配列に返される、ということなんですね。
0785login:Penguin03/09/22 20:54ID:HF5ZnEZU
RHL を使っているのですが、 syslog で LOG_DEBUG をパラメーターに与えたときの
ログメッセージはどのファイルに書き込まれますか?
テキストでは /var/log/debug となっていたのですが、該当するファイルがないもので。

LOG_INFO だと /var/log/messages に書き込まれています。
0786login:Penguin03/09/22 22:01ID:jpPJqFHH
>>785
syslog.confの設定による。
/var/log/syslogあたりに落ちてない?
0787login:Penguin03/09/23 01:59ID:wn/KYk6V
Linuxで、実行中のプログラムのファイルの絶対パスを知る簡単な
方法はないでしょうか?
今はmainのargv[0]から自分の名前を取ってきて、それに対してpopen
ストリームにwhichコマンドを流す事で絶対パスを取ってきていますが、
もっと簡単で確実な方法がありましたら教えてください。
自己参照を行うプログラムなので、どうしても知る必要があります・・
0788login:Penguin03/09/23 04:39ID:OLVM2aZF
>>787
/proc/self/exe が簡単確実だが、Linux 固有。
Unix 一般に移植したいなら自己参照をあきらめたほうがいい。
0789login:Penguin03/09/23 05:06ID:2y799NSB
>今はmainのargv[0]から自分の名前を取ってきて、それに対してpopen

/proc以下を参照するより速くて簡単な気がするなぁ。
/var/lock/subsys/とかにpidファイルとかロックファイルなんかを置いて排他制御してると
こけた後が面倒かと思って、/proc以下のpidをスキャンし実行ファイルのフルパスを
取り出すコードを書いたことがあるよ。

でもopendir()とかreaddir()を使って長ったらしいので、冒頭の方法のほうが簡単で美しいと思われ。
但し、当然のことながら、popen()で開いた先に情報を流すように書かれたソフトしか対応できない
から不自由といえばそうかも。
0790login:Penguin03/09/25 12:24ID:zVZpqnRh
Unix 板にある vim スレッドを見てて思ったのだけど、オープンソースソフトウェアのコードの質を
評価するスレッドがあったらおもしろいのでは?
このスレでこんな話をするのは微妙にスレ違いかもしれないが。
0791login:Penguin03/09/25 14:07ID:7PKpYukU
>>790
いいだしっぺ(ry
0792login:Penguin03/09/25 17:09ID:FN6PNMc8
(・∀・)renice!
0793login:Penguin03/09/25 17:54ID:CHI7SxAC
http://www.zdnet.co.jp/news/0307/02/nebt_04.html
Apacheコードの品質は商用ソフトと同程度
0794login:Penguin03/09/25 18:28ID:OvVti3qw
>>793
>欠陥率が同程度ということは、オープンソースソフトはスタート時は
>プロプライエタリなソフトと同じくらいの完成度であることを意味するが、

詭弁だな。
Apatcheは例外的に需要があったというだけで、オープンソースソフトウェア
全てに対し当てはまるわけではない。
いくつかのオープンソースソフトウェアに対し、同じ様な調査を
繰り返せば悲惨な結果になることは想像に難くない。
0795login:Penguin03/09/25 21:08ID:eArqU2g8
悲しいけど同意
0796login:Penguin03/09/26 23:04ID:Y8/LJVvS
Texてバグ発見すると、賞金もらえるってホント?
しかも前回発見された時の賞金の倍になってくとか。
でも、現在までに3つしかみつかってないとか。
Unix板のトリビアスレでみかけたんだが。
それだけ完成されたコードってことなんですかね?
0797login:Penguin03/09/27 00:13ID:DuC3AJuD
バグと言って報告しても仕様とされてしまうからね
0798login:Penguin03/09/28 13:54ID:iv6k0XYL
ねえねえ、今度リナザウ買ってプログラミング始めようと思うんだけど、それって正解?
0799login:Penguin03/09/28 20:39ID:tTh3N0ux
>>798
ご自由に。
0800login:Penguin03/10/13 00:59ID:VcU5GyRD
800ゲッチョオオオオ
0801login:Penguin03/10/15 00:10ID:WteJLNwE
弾幕キタ━━━━(゚∀゚)━━━━!!!!!!??
ttp://user.ecc.u-tokyo.ac.jp/~s31552/wp/bpo/
0802login:Penguin03/10/26 00:44ID:rFeAGc7C
mozillaにシステムコールを飛ばしてページを読み込ませるプログラムを
作りたいのですが、
mozillaが次々、起動されていっていまいます。
立ち上げた、mozillaの同一タブ内へページの読み込みを指定したいの
ですが、どうすればいいでしょうか?
0803login:Penguin03/10/26 00:52ID:RyP2AbXB
>>802
mozilla --help
-remoteで目的を達成できるはず。
0804login:Penguin03/10/26 00:54ID:5q8AKgF4
>>802
http://www.mozilla.org/unix/remote.html
あたりの機能が使えないか検討。
0805login:Penguin03/11/06 21:38ID:IDhTYBmO
http://www.amazon.co.jp/exec/obidos/ASIN/479732564X/qid%3D1068103162/250-5607768-3500225
0806login:Penguin03/11/15 13:56ID:2o75E3XL
forkってグローバルな変数を共有できたりとか出来るんですか?
0807login:Penguin03/11/15 15:52ID:mzbZHTgK
>>806
(゚∀゚)できない
0808login:Penguin03/11/15 22:29ID:BWJ3qu85
>>806
forkはできないけど、スレッド(pthread)なら可能。
0809login:Penguin03/11/16 00:04ID:q7HsnD3J
Javaで自分のPCのIPアドレスを取得したいんですが、InetAddress.getLocalHost() して getHostAddress()を使用 すると127.0.0.1のローカルループバックしか取得できません。
ifconfigでeth0に割り当てられているIPアドレスを取得したいのですが・・・。
試しに同じコードをWindowsで動かしたらちゃんとLANカードに割り当てられたIPアドレスが表示されました。
Javaでeth0に割り当てられているIPアドレスを取得する事ってできるのでしょうか?
■ このスレッドは過去ログ倉庫に格納されています