UNIXプログラミング質問すれ
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
NGNG0002デフォルトの名無しさん
NGNG0004デフォルトの名無しさん
NGNG0005デフォルトの名無しさん
NGNG0006デフォルトの名無しさん
NGNG0007デフォルトの名無しさん
NGNGmmap()使うのと共有メモリ使うのと、どちらが
オーバーヘッドが少ないでしょうか?
ちなみに、アクション系のゲームに使おうと
してます。
0008ウニしろうと
NGNGsync()しなけりゃ変わんないんじゃないの?
更新作業の排他制御はどっちが面倒くさいんでしょうか?
>>7
ゲームって知らんのだけど、UNIXでアクションゲームで、
しかもマルチプロセスなの?
0009デフォルトの名無しさん
NGNG0010デフォルトの名無しさん
NGNGアクションゲームにそんなもの使わない
0011デフォルトの名無しさん
NGNGSDLはマルチスレッドだね。
マルチスレッドはよくてマルチプロセスはいけないの?
おせーて。
0012デフォルトの名無しさん
NGNGいけないことはない。好きなようにやればいい。
ただスレッドよりプロセスのほうが生成に時間がかかるからってだけの話だろ。
0013デフォルトの名無しさん
NGNGなるほど。でも生成だけなら最初だけだよね。
教えてくれてありがとーー
0014デフォルトの名無しさん
NGNG0015デフォルトの名無しさん
NGNGオーバーヘッドという意味じゃ最速はやっぱり共有メモリじゃなくて?
そうでなきゃあんな面倒なもの存在価値ない。
CGIの問題じゃないが古典unix的マルチプロセス連携技術は
古臭い技術だと思う。たいして楽でもないくせに融通もきかんから。
処理でいえばマルチスレッド、データ(Object)でいえばKParts(笑)やGNOME、
って感じか?これからは。
>>13
>最初だけ
でもお喋りするのにも手間またはオーバーヘッドがかかるぞ?
マルチスレッドに比べて嬉しくない事柄は多いと思われ。
マルチプロセスのメリットはOS提供のメモリ保護機能を直接
使えることであって、逆にいえばそれ以外なんか旨味あるか?って感じ。
悪意ある使われカタ(ネット関係のバッファオーバーランとか)の問題を除けば
Cみてーな糞言語を使う比率とマルチプロセス必要率とは比例すると思う。
今時の良い言語ならメモリの誤った使い方を回避しやすいからな。
>>14
スレッド…プログラマ(プログラミング言語)から見てスレッドだと思えるもの…を
実現する手段には、色々あろう。
rubyみたいにインタプリタの中に持つ奴も「スレッド」であるには違いない。
それらの手段のうち、OSが直接APIとして提供するのが、きみの言うソレだ。
0016名無し関数のλさん
NGNG微妙に嘘が混じってるな……。
System V IPC の共有メモリの扱いが面倒で mmap() が簡単なのは、
mmap() は仮想記憶システムと密接に連携してるから。性能に関しては
mmap() の方が良い。移植性が重要な場合を除けば、今なら共有メモリ
は過去の遺物と捨てて構わないと思う。
プロセス分割のメリットは少なくとももう一つ、ユーザ権限の分割という
のがある。UNIX ではユーザを証明する credential (BSD 系だと ucred,
SVR4 だと cred 構造体) は、あくまでプロセス単位で割り当てるので、
スレッドだと OS の提供するセキュリティ保護システムが使えない。
とはいえ、ゲーム程度ならメイン部分はいわゆる擬似タスク、非同期に
実行させたい部分だけスレッドで十分でしょ。
mmap() でデータを共有すると、プロセス間での排他制御とか(これは
スレッド間の同期に比べるとコスト高い)、プロセス切り替えとか(これも
かなりコストが高い、特に x86 系の CPU だと TLB をフラッシュするし)、
デバッグが難しくなるとか、プロセスを分けるデメリットの方が大きい。
>>14
カーネルスレッドのことかな? それだとカーネル内部での実行の単位、
言い換えるとカーネルが実行をスケジューリングする entity。
UNIX では全てのユーザプロセスは、ユーザモードとカーネルモードとい
う二つの顔を持っている。カーネルモードで実行されるとき(システムコー
ル実行中とか)には、ユーザモードとは異なるコンテクストを持つのだけ
ど、この実行単位をカーネルスレッドと呼称する。
ユーザプロセスとカーネルスレッドの関係は、古典的には
ユーザプロセス1に対し、カーネルスレッド1
最近のマルチスレッドプログラミング環境だと話が違ってくるが、その
あたりは話が長くなるから自分で調べてくれ。
ちなみに、カーネルモードでしか実行されないプロセス(システムプロ
セス)もあるから
カーネルスレッド1に対し、ユーザプロセス1
ではないので注意な。代表的なところだとスケジューラ (sched) がシス
テムプロセス。最近だと、割り込み処理も、スレッドで処理するシステム
も増えてるね。
0017デフォルトの名無しさん
NGNGhttp://www.bio100.co.jp/cgi-bin2/net/flashviw.cgi?mode=set&no=643
こんな奴もいる。
00187
NGNG勉強になるです。
マルチスレッドの方がスマートなのは判ってるんですが、
手もとにてきとーなサンプルと参考書がないんで...
ちょっと本気で勉強することを考えます。
あと、Linuxで実装するんで、それほどスレッド/プロセスの
コストの差はないのかな、と。
いまのところ、コントロール部、描画部(入力も?)、サウンド部に
わけよーかと思ってます。
で、
> デバッグが難しくなるとか、
そーゆーものですか?プロセスを分けた方が、単体でデバッグ
できて楽そーだなーというのが目的の一つなんですが...
>>17
うーん、なにを言わんとしてるのかよく判らない...
「車輪を再利用するのはかまわんが、戦車のキャタピラを
バイクにつけるのはヤメトケ」ということ?
読み違いしてそうだな<俺
0019名無し関数のλさん
NGNG> いまのところ、コントロール部、描画部(入力も?)、サウンド部に
> わけよーかと思ってます。
それ、スレッドやプロセスを分割する利点が全くないと思う……。
0020デフォルトの名無しさん
NGNG0021デフォルトの名無しさん
NGNGもっと違うところが、パフォーマンスに効いてきます。
今ならハードウェアの進歩で、X上のアクションゲームもそれなりに作ってもそれなりの速度で動きます(もちろん、モノによりますが)。
0022デフォルトの名無しさん
NGNGそかな?音をMIXするのに、分けた方が楽そうだと
思ったんだけど...ま、いいや
0023デフォルトの名無しさん
NGNGそういうモンなのですか。
先ずは作ってみて、ダメだったら考えるとします。
ありがトーサンでした
0024デフォルトの名無しさん
NGNG>>18
>あと、Linuxで実装するんで、それほどスレッド/プロセスの
>コストの差はないのかな、と。
んなこたぁあるまいよ?unix系(当然Linux含む)には一般的に言える話だべ。
>>22
おーい。機能単位の分割と、プロセスとかスレッドとかの実行単位の分割とは
全然別の視点で考えるべきものだぞー
機能分割をしたいなら動的ライブラリでも使うべきだろうよ。
プロセスじゃなくてソースやバイナリを分割すべきもの。
なんのために音声「ライブラリ」とかが存在すると思ってるんだ?
(望むならば)メインプログラムにだってリンク出来るようにするため、だろ?
そうでないなら誰もが音声「プログラム」しか作らないはずだ。
0025デフォルトの名無しさん
NGNG悪いコト言わないから、いわゆる「擬似タスク」について調べてみなよ。
大抵のゲームで、複数のキャラクタや音声などを並行して動かすため
に使っているテクニックだから。
UNIX 流のマルチスレッド(非同期、プリエンプティブ、実行順序を制御
できない)は、ゲームでは思考ルーチンなどの例外的な処理でしか使
わない。
0026デフォルトの名無しさん
NGNGhttp://giggle.cside6.com/hotate/shoot/menu.htmasas
ここっすね。さんきう。
>>24
うーん、わかるんですが、「機能の分割」と「プロセス分割」が
一緒のほうがタコな私にはわかりやすいので...
(いや、だからこそ意識したほうがいいのかな?)
でも、なんとなく書けそうなんで、始めてみるっす。
0027デフォルトの名無しさん
NGNG散々突っ込まれただろうに、何が調べてみなよなんだか。
>ここっすね。さんきう。
というか、そこしか出てこないので注意ね。
0028デフォルトの名無しさん
NGNG>全然別の視点で考えるべきものだぞー
>機能分割をしたいなら動的ライブラリでも使うべきだろうよ。
>プロセスじゃなくてソースやバイナリを分割すべきもの。
ゲームのことはよく知らないけど 動的ライブラリこそ機能分割にあんまし関係ないと思う。
アプ組み上げる段階での話。
機能ごとにスレッドで分割するのは実際よくあることじゃん?JavaはUI専用にスレ立てるよね(AWTEventスレね)。
でもゲームじゃないけどグラフィックス系のアプ書いたときはスレ避けてたな。最初は楽なんだけどsched上手くやらないと動き鈍くなった。
関数系言語やJavaのGCと同じ問題。
0029デフォルトの名無しさん
NGNGマルチプロセスにする意味はない。
0030デフォルトの名無しさん
NGNGもちろん、そこのページが引っかかるように単語を選択した
んだよ。
ところで、私は突っ込まれた覚えがないんだが、どこかで擬
似タスクって単語を使って叩かれてたヤツいたの?
0031デフォルトの名無しさん
NGNGセマフォしかなくなるから、リアルタイム性を重視する用途
には向いていないと思う。遅いし、死ぬと漏れるし・・・(T_T
0032デフォルトの名無しさん
NGNGこう書いてもわかりにくいと思うのですが、NEC PC98のキーボードBIOS操作のように、
純粋にどのキーが押されたかをビットで拾いたいのですが、良い方法はありますか?
0033デフォルトの名無しさん
NGNGPCのキーボードはどのキーでも複数押しが出来るって訳じゃないのよ
使い道によっては、そもそも諦めるしかないと思われ
0034デフォルトの名無しさん
NGNGみんなにいくら叩かれても俺用語だと認めなかったという。
ちなみに俺用語ってのはそいつしか使ってない用語って意味ね。
これも俺用語だったらスマソ(藁
0035デフォルトの名無しさん
NGNG擬似マルチタスクかな? これも正式な用語かどうか知らないけど。
0036デフォルトの名無しさん
NGNG0037デフォルトの名無しさん
NGNG│ |
│ スーパーキチガイ警報 ! |
│ |
└―――──――――┘
ヽ(´ー`)ノ ヽ(´ー`)ノ
へ ) へ )
> >
003832
NGNG特定の処理の中断キーとして決められたキーひとつが押されたかを
拾いたいんです。
ワンキーでも難しいですか?
003932
NGNG>>33へのレスです。また、ビットでなくてもいいです。
処理ループが止まらなければOKっす。
0040デフォルトの名無しさん
NGNG叩かれたというか、キミが叩いてたのでは? 確かに「擬似タスク」というのは
だいぶ胡散臭い単語なんで、これに代わる適当な単語があれば提示を希望
したい。
>>35
要はスレッド(もしくはタスク)なんだけど、UNIX や Win32 が OS の助けを
借りて提供するようなスレッドとは違って
- 同期的
- ノンプリエンプティブ
- スケジューリングをユーザが指定
という特徴をもつもの。協調的マルチタスクとでも呼ぶといいのかな?
タスクマネージャから、各タスクを定期的に呼び出し、各タスクは、制御を受け
取ったら短時間だけ処理をして、すぐに呼び出し側に制御を返すように書いて
おくことで、処理を進める。
詳しくは >>26 のリンク先にあるコードを読んでくれ。大して難しい話じゃない
ので、読めば分かる。
UNIX と関係ないんで sage ね。
0041デフォルトの名無しさん
NGNGcursesつかってcbreak()すれば、きっと幸せを手にいれられるよ
(getch()みたいなモンが使える)
もっと生なのがほしけりゃ、raw()すればいいけど、
お腹壊してcoreゲロはくと大変なことになるから、
shell scriptでwrapしてnoraw()するプログラムを後ろで
うごかしてやるといいかもね。
0042デフォルトの名無しさん
NGNG0043デフォルトの名無しさん
NGNGたぶん似たもの(もっと高機能だけど)を、Rubyじゃすなおに
「スレッド」っていってるね
0044デフォルトの名無しさん
NGNG確かに「スレッド」なんだが、そう書くと UNIX や Win32 の OS が提供する
ようなプリエンプティブなスレッドと区別できないんだよね。ゲームプログラ
ム書こうという人間に「スレッド使え」と書いたら誤解を招くだけなんで、別
の用語が欲しいトコロ。
0045デフォルトの名無しさん
NGNG0046デフォルトの名無しさん
NGNGええとええと。
それの対義語は「カーネルレベルスレッド」で良いんでしたっけ?
…なんか違うな。カーネル内部処理の話になってしまいそうだ
0047デフォルトの名無しさん
NGNG0048デフォルトの名無しさん
NGNG#include <stdlib.h>
int main(){
putenv("AAA=BBB");
return 0;
}
上記のコードをビルド、実行してもenvで環境変数AAAが設定されません。
putenvの後にgetenv("AAA")を入れて動作を確かめると文字列"BBB"が
返ってくるのは確認したので書式は間違ってないと思うのですが…
どうやればenvコマンドで確認出来るようになるのでしょうか。
御存知の方は教えて下さい。宜しくお願い致します。
環境はSolaris7+gcc2.8.1
実行環境(shell)は/bin/shです。
0049デフォルトの名無しさん
NGNGそこで追加してるのはプログラムが実行されてる間
だけのローカルな環境です。プログラムが終わると
環境は元のに戻ります。
0050デフォルトの名無しさん
NGNG005148
NGNGそうでしたか…getenvはshellの環境変数を取得出来たので逆にputenv()
で設定出来るのかと思ったのですが考え方が甘かったようです。
shellスクリプトを書くときに併用して使用し、特定の環境変数を
動的に変えていくツールを作りたかったのですが…諦めるしかないですね。
回答有難うございました。
0052名無しさん
NGNG$ (export VALUE=hage;application)
0053デフォルトの名無しさん
NGNGgetenvはshellの環境変数を取得しているわけではなく、
execve時にコピーされた環境変数を取得してるだけです。
0054デフォルトの名無しさん
NGNGそうそう。UNIXの困った点がそこ。
なんでもかんでも親子関係がちがち。
親から子へ一方的に命じることしかできない。
双方向対話しようと思ったらとたんに煩雑になる。
0055デフォルトの名無しさん
NGNG0056デフォルトの名無しさん
NGNG親が子の面倒を全部見る仕組みにすればいいじゃん
0057デフォルトの名無しさん
NGNG0058デフォルトの名無しさん
NGNG面倒見てるからこそ駄目なんだよ現状は。
親から自立することもできなければ
親に意見することもできない。
あるプロセスを別のあるプロセスの子に「(後から)する」
ということって、出来ねーよなあunix?
0059デフォルトの名無しさん
NGNGそれ以外はしりません。
0060名無し讃
NGNGsuのソース読んだ人いない?
あれどうやってんだろう。
0061デフォルトの名無しさん
NGNGsetuidされてるだけじゃないの?違う?
今手元にUNIXマシンないから調べられない(^^;
0062デフォルトの名無しさん
NGNGする意味がない。
0063????]
NGNGsetuid/seteuidはパスワードを引数に持たないよ。
006461
NGNGシステムコールじゃなくて、chmod u+sしてあるって意味
実効uidがrootになるから、setuid(2)とかで自由に変えられる
0065ありがとう
NGNG0066デフォルトの名無しさん
NGNGというか、プロセスを親子関係で管理しようっていう発想が
そもそも意味が無い。
0067デフォルトの名無しさん
NGNG0068デフォルトの名無しさん
NGNGそそ。
親子関係の「理由」がforkなのな。
本末転倒してるんだよ。
何事もforkに縛られている。しょせん1つのAPIに過ぎないforkに。
0069デフォルトの名無しさん
NGNG0070デフォルトの名無しさん
NGNGunixの軍門に下ったんだろ。
方法論としてunix流儀しか有り得ないってことは
絶対にないはずだが、他の方法論で安定に動かせるものを
今のところ作れてない(少なくともゲイツには)んで、
とりあえずレトロで枯れた手法に合わせたわけよ。
ところでw2kって、管理手法としてJobObject「しか無い」
ってわけじゃないよな?
親子構造しかないunixよりは、マシ。
0071デフォルトの名無しさん
NGNG0072デフォルトの名無しさん
NGNG0073デフォルトの名無しさん
NGNGfork()->setpgrp()->execve()でほとんど同じ事できるし
単純にプロセスを分岐出来た方が楽な事も多いと思う
0074デフォルトの名無しさん
NGNGCreateThreadでほとんど同じ事できるし。
単純にスレッドを作れたほうが楽なことも多いと思う。
0075デフォルトの名無しさん
NGNGプロセス終了時に close するだけじゃ駄目なのでしょうか?
TCP( AF_INET, SOCK_STREAM) です。
0076デフォルトの名無しさん
NGNGよくなるよね。解決策ってあるのかな?
今のところ聞いたことないんだけど…
0077デフォルトの名無しさん
NGNGそもそもプロセスに「分岐」っていう考えがあること自体が
不気味なんだけどな。
走行中のThread「を」複写しようなどと思う奴が居るか?(反語)
そんな、Contextがどうなってるか際どいものを
わざわざコピーなんてしたくない。
でもunixのプロセスは、走行中(というか停止中という概念が
意味をなさないのだが)にforkで複写される。不気味。
というかアレだな、Threadのアナロジーで考えるなら、forkは
以下のようなものであって欲しかった(今更言っても無駄だが)。
1:自分じゃなくて第三者(のプロセス:どうせUnixにはプロセスしかないので)
の依頼によってfork「させられる」ことが出来る。
2:今そのプロセスをforkしても大丈夫かどうか?という情報を
その第三者が、該当プロセスを「動かさず(=非破壊)」に
知る手段がないと困る。
勿論直接そんなことが出来るとは限らないので、
OOPのプロパティみたいな非破壊状態読み書き機構があり、
それを第三者がアクセスする、という形が良かろう。
でも、現実はそうじゃないのな。あれは不気味だ。
プロセスは、状態を持っているのでその状態を第三者が知りたいと思うことが多い
というものであるにも関わらず、プロセス(だけ)が実行主体の単位であるために
受身になる(それによって第三者が「調べる」ことが出来るようになる)ことが出来ない。
0078デフォルトの名無しさん
NGNG0079デフォルトの名無しさん
NGNGsetsockopt()っぽい関数でLINGERっぽいヤシを指定するとかそんなカンジでなんとかならないかな?
名前はうろ覚えです。
0080デフォルトの名無しさん
NGNGtcpnodelayじゃない?
0081デフォルトの名無しさん
NGNG数分待つ。
0082デフォルトの名無しさん
NGNG素直にあいてるポート探したら?
0083デフォルトの名無しさん
NGNGサーバなんじゃねぇの?
0084デフォルトの名無しさん
NGNGちゃんと shutdown(2) してる? close(2) だけじゃ駄目だよ。
0085デフォルトの名無しさん
NGNGプロセスという存在が非常に抽象化されていて、実際のメモリ上での
挙動とかけ離れたイメージの存在になっている事が原因だろうね。
fork()自身の仕様は、Unixのプロセス管理機構の側からすれば、
何の事はないことでしょ。
0086デフォルトの名無しさん
NGNGハラワタの底の挙動まで考えれば、
理解は可能だが、賛同は不可能だな。
モデルがひねくれすぎ。
ThreadとObjectという最近流行(わら)の考え方のほうが
はるかに素直なモデリング。
少なくとも、データ単位と実行単位を別々に管理できるほうが
幸せだよ。ThreadがObjectを触って回るVisitorPattern
みたいなものだと思えばいい。
0087デフォルトの名無しさん
NGNG是非新OS書いてください。
0088デフォルトの名無しさん
NGNGforkの意味理解したとき、「これ考えた奴天才かも」って思ったよ
天才=キティという話もあるが・・・(藁
0090デフォルトの名無しさん
NGNGしってるんですけど、
あるファイルのどの部分が穴なのか、検査する方法って
ありますか?
0091デフォルトの名無しさん
NGNGdumpみたいにraw deviceを直接見に行かない限り
無理だと思われ
0092デフォルトの名無しさん
NGNG0093デフォルトの名無しさん
NGNGどんな本とかWEBを見ればよいでしょうか。
0094デフォルトの名無しさん
NGNG0095デフォルトの名無しさん
NGNG標準入出力はデータの流れ。制御端末はシグナルの送出元。
0096デフォルトの名無しさん
NGNG漏れはやっと簡単な言語を作れるようになったばかりなんで
OSなんてのは遠い(=5年くらいか(わら))夢です。
それに、モデルとかの上位層は強い興味持っているが、
下位層のCPUやPC(など)の仕様の把握ってのは
ちょっと鬱な作業だなと。
OSをKit化して好きな部分だけ自作すれば済む
というもの(OSKitという名だとか)を
公開してる大学もあったはずなんで
そっち使ってラクしちゃろかなという発想が先行する。
というか、既に星の数ほどある研究レベルのOSの中には
こーゆーモデルの奴も結構多いと思われ。
「OSの」研究をするならば少なくとも、
既存物に過ぎぬPOSIXにする意味は全く無いんで。
>>88
個人的にはキティ説まんせー
まぁ当時は今みたいなOOP時代じゃなかったから、
データつーものを重んじる発想が無かったんだとは思う。
たとえばPipeじゃデータ「の一意性」は永遠に表現できない。
データを流さざるを得ないせいだ。おかげさまで、
なんぼPipeでソフトウェア部品だと言い張ってみたところで、
その部品をどう活用してもviエディタひとつ作れやしない(わら)
0097デフォルトの名無しさん
NGNGどう違うのか、どう実現しているのかおしえてくださ〜い。
0098デフォルトの名無しさん
NGNGスレッドが理解できていないのなら、forkも分かっていない
0099デフォルトの名無しさん
NGNGunixのプロセス制御を解説している本は多くありますが、
スレッド制御をosレベルできちんと解説している
文献がありません。
プロセス・スレッドの違いで簡単に解説してほしー。
0100デフォルトの名無しさん
NGNG0101デフォルトの名無しさん
NGNGdocs.sun.comに行けばsolarisのドキュメントがお腹いっぱい読めるよ。
solarisは一応POSIXスレッド使えるし。
0102デフォルトの名無しさん
NGNGマルチプロセスかつマルチスレッドなプログラミングを
するハメになってしまいました。チームで、ですがこれに関しては
全員素人という。。。
現在、
・SUN マルチスレッドのプログラミング docs.sun.com
・UNIXネットワークプログラミング第2版Vol.1
・同Vol.2
を用いて勉強中ですが、理解にはまだまだ道は険しいです。。。
マルチスレッドプログラミングに関しては、以下の本がありますが、
上記3つに加えて「読むべきお勧め本」がありましたら教えてください。
・マルチスレッドプログラミング入門 アスキー
・実践マルチスレッドプログラミング アスキー
・Pthreadsプログラミング オライリージャパン
・Pスレッドプログラミング ピアソン
・POSIXスレッド プログラミング アスキー
>>100さんと同じく、プロセス制御解説のお勧め本も
教えて頂けると幸いです。。。
OSはSolaris8を、コンパイラはgccを、デバッグにはGDBを用いています。
教えて君で申し訳ありませんが、回答して頂けるとうれしいです。
0103デフォルトの名無しさん
NGNG全員素人でマルチプロセス・マルチスレッド?
...可哀想だが、95%こけるよ(^^;
ひとまずpthread関連の書籍を読めば基本はわかるはず。
あとライブラリ関数はマルチスレッド対応かどうかを必ず確認するべし。
プロジェクトのライブラリ内で非マルチスレッド関数とか使われると
原因不明のバグで悩まされます。要注意。
あとはがんばって競合問題を勉強してけれ。結局はそれが一番問題。
0104デフォルトの名無しさん
NGNG>マルチスレッド対応
スレッドセーフかどうかってことね。
でもスレッドセーフな関数しかつかわんのなら、
スレッドプログラミングなんてなんら勉強する必要ねーじゃん(藁
競合問題も勉強する必要なし。
タイミングを勝手に仮定したロジック組まないことが一番問題かな。
0105デフォルトの名無しさん
NGNG0106デフォルトの名無しさん
NGNG0107shige
NGNG0108デフォルトの名無しさん
NGNG0109デフォルトの名無しさん
NGNG0110chinge
NGNG0111デフォルトの名無しさん
NGNGスレッド間で通信しないわけ?
0112デフォルトの名無しさん
NGNG0113shine
NGNG0114103
NGNGpthreadライブラリは全て「スレッドセーフな関数」なんだが、
その使い方・常套手段・マルチスレッドの流儀も一切勉強しなくて良いと?
さらに標準ライブラリは全てスレッドセーフだとでも?
そしてスレッドセーフな標準ライブラリだけでプログラミングできるとでも?
自作モジュールなんてつかうなと?
というわけでどう考えても104の認識不足。
> タイミングを勝手に仮定したロジック組まないことが一番問題かな。
これが競合問題だっつーに。
マルチスレッドもマルチプロセスもこの問題が一番でかくてやっかい。
0116デフォルトの名無しさん
NGNG0117デフォルトの名無しさん
NGNG禿同
102のような状況で、こないだプロジェクトいっこ潰した。
俺が入っていったときには既に末期ガンで処置不能。
0118デフォルトの名無しさん
NGNGsignalでその都度変化する時間間隔で発生するSIGALRM
がきたら関数を呼び出す、という関数を含む
処理を複数スレッド化したいのですが、そのまま
pthread_createしちゃっていいんでしょうか?
厨房な質問で申し訳ないのですが。
0119デフォルトの名無しさん
NGNG超カメレスだが、JavaOSマンセー!
Processなんて無いぞ。それどころかProcessメモリ空間すら無いぞ。
それでも複数の「アプリケーション」が問題(変な干渉)無く動くぞ。
JavaOSマンセー!
JavaOSマンセー!
0120デフォルトの名無しさん
NGNG0121デフォルトの名無しさん
NGNGどうやるんですか?
0122デフォルトの名無しさん
NGNGむかしそれで英和辞典作ったことがある
0123デフォルトの名無しさん
NGNGfork(2)のご利益が理解出来ないなら「UNIX原典」を読め。
dup(2), pipe(2), shellのredirect, pipeとの関係について書いてある。
> OSなんてのは遠い(=5年くらいか(わら))夢です。
なんて野望があるなら、過去のprocess model全てをよく勉強しておくことを進める。
0124デフォルトの名無しさん
NGNGヴァカはほうっておけよ。相手にするだけ時間の無駄だ。
0125デフォルトの名無しさん
NGNG0126デフォルトの名無しさん
NGNGLinuxとかBSDとかじゃなくて、UNIXがなんなのか
それを理解することの方がよっぽど大切だと思うよ
0127デフォルトの名無しさん
NGNG0128デフォルトの名無しさん
NGNGたしかに>>119は盲信気味だけど、JavaOSは面白いよ。
VM/class verifier流儀のprotectionとかさ。
別に言語はJavaじゃなくていいんだけどさ。
0129デフォルトの名無しさん
NGNG0130デフォルトの名無しさん
NGNG0131デフォルトの名無しさん
NGNGおもしろい
0132デフォルトの名無しさん
NGNG0133デフォルトの名無しさん
NGNG0134デフォルトの名無しさん
NGNG0135デフォルトの名無しさん
NGNG0136デフォルトの名無しさん
NGNG0137ライナス
NGNG0138デフォルトの名無しさん
NGNG0139デフォルトの名無しさん
NGNG0140デフォルトの名無しさん
NGNGスレッド:プロセスん中で動き回ってるヤツ
などと放言すると殺される?
0142デフォルトの名無しさん
NGNG自身のIPアドレスを知るための関数はありますか?
ちなみに自身の名前(ホスト名)も分かっていない状態での場合です。
system関数でhostnameを使用して、それをgethostbynameでIP取得・・・
とするくらいしか思いつきません。
何か良い方法はないでしょうか?
0143デフォルトの名無しさん
NGNGプロセス:(プロセッサ以外の)リソース割り当ての単位
0144デフォルトの名無しさん
NGNG基本的にそれでいいと思うよ。
あと、自分のホストネームは gethostname() システムコールを
使えば良いと思われ。
0145デフォルトの名無しさん
NGNGマシンにhostnameやIPアドレスが複数ある時は、
そのsocketでどのIPアドレス使われてるかは
gethostname+gethostbynameじゃわかんないでしょ?
0147sage
NGNG0148デフォルトの名無しさん
NGNG0149デフォルトの名無しさん
NGNGPOSIXで標準化されてるかは知らないけど、
SIOCGIFCONFをioctl()すると調べられる
#include <net/if.h>あたりを調べてごらん
0150デフォルトの名無しさん
NGNGと
*.a
ってなにもん?
0151デフォルトの名無しさん
NGNG.soはShared Objectで、実行時リンクライブラリ
.aはArchiveで、静的リンクライブラリ
自分で調べろよなぁ・・・
0152デフォルトの名無しさん
NGNGhttp://www.qbfc.com/tech/Article01/std/exdic.html
0153デフォルトの名無しさん
NGNGUnixでは拡張子は基本的にはファイルの種類と関係ないよ。
0154デフォルトの名無しさん
NGNGカーネルは関知しないが、
コマンドは拡張子を気にするだろ。
makeとかCコンパイラとか。
0155デフォルトの名無しさん
NGNG.cだったらCのソースで、.hだったらヘッダファイルだとでも?
0156デフォルトの名無しさん
NGNG0157デフォルトの名無しさん
NGNGUNIXでWin32で言うところのDLLみたいことをやりたいんですが、
LoadLibrary()とGetProcAddress()みたいな関数(とかシステムコール)は
あるのでしょうか?
0158デフォルトの名無しさん
NGNG他は知らね
0159デフォルトの名無しさん
NGNG0161デフォルトの名無しさん
NGNGなにかお勧めの書籍やWebページありますか?
0162デフォルトの名無しさん
NGNG0163デフォルトの名無しさん
NGNG関係ないっつったら、他の OS でも関係ないじゃん。
0164デフォルトの名無しさん
NGNGGNU Emacsの中でのGDBの使用
http://www.asahi-net.or.jp/%7Ewg5k-ickw/html/online/gdb-4.18/gdb_17.html#SEC150
0165デフォルトの名無しさん
NGNG0166超初心者
NGNGで開いたファイルに何か入力があるまでブロックされ、入力があったら
それをシグナル等で知る事ができるような方法はありますか?
select()ではできませんよね?
Solaris7 or 8 なのですが。
0167デフォルトの名無しさん
NGNG0168デフォルトの名無しさん
NGNGcをつくったんですけど
ccでコンパイルできません。
どうすればコンパイルできますか?
0170デフォルトの名無しさん
NGNG>エラーメッセージは?
「そのようなコマンドはありません」でした
linux初心者でcを勉強しようといれてみたんですが・・
cc test.c な感じです。。
0172デフォルトの名無しさん
NGNG0173デフォルトの名無しさん
NGNGいえ、借りてるサーバーがSolarisです。telnetでよく遊んでいます
自宅の環境はredhat7.2です
gccもコンパイルのソフトでしょうか
のちほど試してみます
0174デフォルトの名無しさん
NGNG0175デフォルトの名無しさん
NGNG0176超初心者
NGNGすみません、ちょっと書き方が悪かったのですが、
やりたいこういうことです。
hogehogeというファイルにあるプログラムからログが書かれる。
それをほぼリアルタイムに表示したい。
tail -f のようなポーリング式にはしたくない。
という事をしたいのですが、良い方法ありますか?
0177デフォルトの名無しさん
NGNGfind -n gccとかで探してみて(スイッチ-fかも)。
0178デフォルトの名無しさん
NGNGlocate gccで探してみた?
gccにパスが通っていないってのはちょっと珍しいかも。
それともコンパイルエラー?
0179178
NGNG>>177>>178
後ほど試してみます。
余談ですが、インストールするときにワークステーションの設定で
インストしたんですが、デフォルトではいってますでしょうか?(コンパイラ
もしかしたらインストールされてないのかなっておもったり
0180デフォルトの名無しさん
NGNG入れない2chVIP板。
0181デフォルトの名無しさん
NGNGSIGIOって通常ファイルに対して使えたっけ?
0182超初心者
NGNGそれはどうやって使えば良いのでしょうか?
すみません、ほんとに初心者なのです。
0183デフォルトの名無しさん
NGNGまずは『詳解UNIXプログラミング』を覚えてからでないと
ダメですか?
0184デフォルトの名無しさん
NGNG>ワークステーションの設定でインスト
うん、おれんとこもそう。だけどコンパイラはデフォで
入ってるし、パスも通ってる。というより、あえて外そう
としないかぎりインストールされるでしょ。gccって。
0185デフォルトの名無しさん
NGNGちなみにこの本でUNIXが何なのかを頭に叩き込むのがいい、
とかどっかに書いてありました。
0186デフォルトの名無しさん
NGNG0187デフォルトの名無しさん
NGNGでも他にまともな本がない・・・
0188デフォルトの名無しさん
NGNGttp://www.jks.is.tsukuba.ac.jp/~daiki/func/man7/signal.7.html
あまり参考にはならないかもしれないけど、資料として。
どう使えばいいかまでは書いてないから、適切な書籍を買うなり
して、SIGNALについて勉強すればいいんでない。
0190132
NGNGどうもです。
勉強する糸口が見えてきました。
が、しかし、Linux には fcntl(2) のコマンドとして F_SETSIG という
のがあってこれを使えば指定したファイルディスクリプタから入力が可能
になった時点でシグナルハンドラが呼ばれるようなのですが、Solarisには
F_SETSIGやそれに相当するものがありません。他に方法はあるのでしょうか?
0191デフォルトの名無しさん
NGNGたとえば1msに1バイトずつ書き込まれるものを一個一個読み込みたいってわけ
じゃないだろ?
だったらポーリングで充分じゃなかろうか。
0192デフォルトの名無しさん
NGNG$ man streamio
そしたらば、I_SETSIGやSIGPOLLをサーチすれ
>>166
select(2)じゃあ、EOFにも反応しちゃうね。しなきゃしないで困るし。>EOF
0193132
NGNGウォー!!サンクスです。
ioctl(2)で出来るんですね。docs.sun.comのマニュアル見たらなんか行けそうな
気がしてきました。今手元にはCygwin(藁しかないので明日試してみます。
0194デフォルトの名無しさん
NGNG(2)って何ですか?
0195デフォルトの名無しさん
NGNG0196デフォルトの名無しさん
NGNGところでみなさん、Solaris、*BSD*、Linuxと
いろいろな環境をどのようにマスターされました?
やっぱり自分で実際に使ってみたのでしょうか?
0197196
NGNG0198デフォルトの名無しさん
NGNG使わなくて平気だろうけど、面白いよ。
0199デフォルトの名無しさん
NGNGよくいわれるけど、システムコール他は、他人が使ってるの見るのが一番いいよ。
少なくとも「完全に動作する実例」だし。
fileutils の中の部分とか、小さいアプリのソース読みまくる。
ハックしまくる。壊しまくる。
うっかり、make install してしまって、ls,cp できなくなってハマる。
他所のサーバに connect しまっくてあせる。
0200デフォルトの名無しさん
NGNGfor (i = 0; i < 10; i++)
used[i] = NO;
for (E = 0; E < 10; E++) {
if (used[E])
continue;
used[E] = YES;
for (L = 0; L < 10; L++) {
if (used[L])
continue;
used[L] = YES;
for (S = 0; S < 10; S++) {
if (used[S])
continue;
add( 0, E, L, S, c1);
add(c1, S, L, E, c2);
used[S] = YES;
for (A = 0; A < 10; A++) {
if (used[A])
continue;
used[A] = YES;
for (M = 0; M < 10; M++) {
if (used[M])
continue;
add(c2, A, A, M, c3);
used[M] = YES;
for (B = 1; B < 10; B++) {
if (used[B])
continue;
add(c3, B, B, A, c4);
used[B] = YES;
for (G = 1; G < 10; G++) {
if (used[G])
continue;
add(c4, 0, 0, G, c5);
used[G] = YES;
0201デフォルトの名無しさん
NGNG宿題スレの誤爆だろ。
0202デフォルトの名無しさん
NGNG1. 少なくとも一つUNIXでは実際に使ってみる。
2. 使うどのUNIXでもmanualは徹底的に読む。
3. さもなくば、氏ぬ
0203132
NGNGfd = open("logfile", O_RDONLY);
if (fd < 0) {
perror(TARGET_FILE);
exit(1);
}
if (ioctl(fd, I_SETSIG, S_INPUT) < 0) {
perror("ioctl");
exit(1);
}
というような感じで書いて実行すると、
ioctl: Inappropriate ioctl for device
とエラーになってしまいました。
STREAMS (see intro(3)) ioctl commands となっていたので、
intro(3) を見ると、
「「STREAMS」と「ストリーム」の違いには十分気を付けて く だ さ
い。STREAMS とは、ネットワークサービスとデータ通信ドライバの
開発をサポートするカーネル機構の一種であり、...」
となっていますが、streamioは通常のファイルに対しても使えるのでしょうか?
0204デフォルトの名無しさん
NGNGだからそれが181の疑問なわけよ。
0205デフォルトの名無しさん
NGNG./a.outのように頭に./を付けますが
どうしてpathに含めないのでしょうか?
0206デフォルトの名無しさん
NGNGじゃあ含めてみれ。
0207デフォルトの名無しさん
NGNG0208デフォルトの名無しさん
NGNG挙句の果てに実行パーミッションつけちゃって大変な事になる罠。
0209132
NGNGえーん、だめですか。
aioread(3)のサンプルってどこ探しても無いです。
簡単な例無いですか?
0210デフォルトの名無しさん
NGNG0211デフォルトの名無しさん
NGNG0212デフォルトの名無しさん
NGNGpthread_*を使いまくりなんですか?
0213デフォルトの名無しさん
NGNGふと思ったけど、DOSでもxcopy.bat(中身Deltree \*.* -Y)がカレントにあった場合やっぱり・・・。
0214デフォルトの名無しさん
NGNGgccでコンパイルしました。
そうしたらディレクトリ内に変なファイルができました。
実行したいのですがどうすればよいでしょうか
0215デフォルトの名無しさん
NGNGkorewo anki surumade yondekara shitumon shitene!
0216デフォルトの名無しさん
NGNG0217デフォルトの名無しさん
NGNGコンパイル後にa.outというファイルがつくられました。
そして実行しようとしてa.outと打ったのですが
そんなコマンドは無いといわれました
なんと打てばよろしいのでしょうか
0218デフォルトの名無しさん
NGNG0219デフォルトの名無しさん
NGNG0220デフォルトの名無しさん
NGNG> aioread(3)のサンプルってどこ探しても無いです。
http://examples.oreilly.com/posix4/p4code.tar.Z
でも、aio は176の目的には使えないと思った。
ポーリングすれ。
0221132
NGNG調べていただいてどうもです。
いろいろ考えたんですけど(調べてはいないので妄想か?)ローカルディスク上
のファイルならまだしも、NFSサーバ上のファイルのI/Oの発生をカーネルが知る
のはとても難しいと思うので無理で当然かなと思いました。
素直にポーリングします。
どもありがとうございました。
0222デフォルトの名無しさん
NGNGその通り。だからDOSは糞。
0223デフォルトの名無しさん
NGNG基本的に自分自身なわけで、それって自業自得では?
0224デフォルトの名無しさん
NGNGいろいろありすぎて訳分からん。だれか2,3簡単に説明してくれないかな。
説明はいいとしても何を使ってるか教えて下さい。
関連サイト
http://pc.2ch.net/test/read.cgi/unix/1010933537/
0225デフォルトの名無しさん
NGNGUNIXだって同じじゃん
0226デフォルトの名無しさん
NGNGおまえが調べておれに教える!
0227デフォルトの名無しさん
NGNGUNIXは多人数で同時に使えるだろ。
/tmpとか、誰でも書きこみできるだろ。
0228デフォルトの名無しさん
NGNGなんで/tmpにわざわざパス通さなきゃならないんだよ。
リアリティーがないぞ。
0229デフォルトの名無しさん
NGNG0230デフォルトの名無しさん
NGNG0231デフォルトの名無しさん
NGNGそんな話は誰もしてません。気のせいです。
0232224
NGNGPthの方はあまりパフォーマンス的には期待できないけど、
多機能ゆえにこれ使うことにします。
NGPTはまだ安定動作の保証が取れてなさそうなので、
もう少し様子を見てからにしたいと思います。
0233デフォルトの名無しさん
NGNGhttp://www.linux.or.jp/JF/JFdocs/Path-12.html
0234デフォルトの名無しさん
NGNG/tmpに絶対chdirしないならいいけど
0235デフォルトの名無しさん
NGNG「Linuxでは、パスの評価がオペレーティングシステムコールレベル
(operating system call level)で行われていることを思い出して
下さい。実行ファイルのパスが与えられているところならどこでも、
(少なくとも) /bin、/usr/binから検索される短い名前(short name)
が与えられます - 他の場所でも同様です」
ってどういうこと?
0236デフォルトの名無しさん
NGNG原文あたってみた。
Linuxではパスの評価がオペレーティングシステムコールレベルで行われる
ことを忘れてはならない。実行可能ファイルのパスを指定するあらゆる
場所において、あなたは少なくとも/binと/usr/binで検索される省略名を
使うことができる(*)。
(*)3. 一般より抜粋
execシステムコールは、 '/' を含まないファイル名を与えられた場合に
PATH環境変数を使う。例え環境にPATH変数がなかったとしても、少なくとも
/binと/usr/binディレクトリは適合するコマンドを探して検索される。
0237デフォルトの名無しさん
NGNGPATHに ./ が入ってる場合に限った説明は「クラッカーのlsコマンドを…」のところで終わってるのかな。
「オペレーティングシステムコールレベルで」の部分は、
シェルがパスの解決をしてるんじゃないよ、って意味でしょう。
だからデーモンが foo を実行するとき、(デーモンは/bin/fooを期待している)
rootのPATHに/usr/local/bin/が入ってると、
/usr/local/bin/fooが実行されちゃうよっていうことだと思う。
0238デフォルトの名無しさん
NGNG普通だから、/usr/local/bin/fooが実行されることは
ないだろう。そのへんをきっちり考慮してかかれたプログラム
だと、PATH=/bin:/usr/binって先頭で設定しなおしてから
fooを呼んでる。
0239デフォルトの名無しさん
NGNG0240デフォルトの名無しさん
NGNG0241デフォルトの名無しさん
NGNG>>237は>>233のページにそういうことが書いてあるって説明だ。モトネタ嫁。
0242デフォルトの名無しさん
NGNG大嘘じゃん。
PATHを見るのはexecファミリの中ではexeclp()とexecvp()だけで、
これはシステムコールじゃない。
PATHはあくまでもシェルを中心としたアプリケーション側での約束事。
カーネルはまったく無関係。
0243デフォルトの名無しさん
NGNG標準関数?
0244デフォルトの名無しさん
NGNG> PATH=/bin:/usr/bin:/usr/local/binの順で定義するのが普通だから、
初耳だよ。一般ユーザはPATH=/usr/local/bin:/usr/bin:/binだろ。
rootなら/usr/localが最後でもおかしくないけど。
クリティカルなシェルスクリプトは、フルパスでコマンド指定するしな。
0247デフォルトの名無しさん
NGNG普通はそれにオブジェクトファイル追加・更新していく事
になりますよね。
すると、あるとき何かの都合でその.aに入っていたオブジェクトを
Makefile等でのarコマンドの記述から外しても、.aを一度消さない限り、
外したオブジェクトが入りっぱなしになってしまいます。
Makefileの記述にあわせて、.aからも不要なオブジェクトを削除する
事って可能なのでしょうか?
それとも、Makefileに更新があったら、必ず.aを消すのが正しいんですか?
0248デフォルトの名無しさん
NGNGMakefile の更新なんて見ないで常に消せばいいじゃん。
libfoo.a: $(OBJS)
rm -f $@
ar cq $@ $(OBJS)
ranlib $@
みたいなかんじで。
0249デフォルトの名無しさん
NGNGそれだと、元々入ってるオブジェクトには変化がなくて、
内包するオブジェクトの指定が変化しただけでは更新しませんよね・・・・
0250デフォルトの名無しさん
NGNG# 以下同文
0251247
NGNG>250
いや、.aファイルその物の消し方を知りたいんじゃなくて、
.aファイル内の不要になったオブジェクトを消す方法があるのか?
それとも、.aファイルその物をMakefileの更新にあわせて常に消すのが
正しい流儀なのか?という事を聞きたかったんです。
また、わざわざ指定されなくなったオブジェクトを残すようにしているのは、
何か意図があっての仕様なのか、その辺も知りたいなと。
不要なオブジェクトを残す事に特に意味がないのに、arは追加・更新しか
しないようになっていて、それゆえ.aをわざわざ指定して消さなきゃ
いけないって、奇妙ですよね。
0252デフォルトの名無しさん
NGNGar dでは駄目?
>元々.aファイルがあったら、
俺はこういう前提ではやらないな。
make clean/allの時点で常に消されることを前提にしてる。
0253250
NGNGMakefile 書き換えた結果、「何が無くなったか」を検出するように
すれば「無くなったオブジェクトのみ」消すのはできる。
…けど面倒だし、そんなことするくらいなら作り直した方が健全じゃ
ないかなぁ。
0254デフォルトの名無しさん
NGNG例えばmain.c, sub.h, sub.c, common.hというプロジェクトをビルドする場合、
gcc -Mを使ってヘッダの依存関係を考慮した
全く無駄の無いmakefileを書くのって意外に難しいですね。
先頭にSRCS = main.c sub.cって書いておくと
あとは自動的にビルドしてくれるようなテンプレートってないですか?
0255shige
NGNG0256デフォルトの名無しさん
NGNGこれか?
http://www.freebsd.org/cgi/cvsweb.cgi/src/bin/cp/Makefile?rev=1.8&content-type=text/x-cvsweb-markup
0257デフォルトの名無しさん
NGNG#!/bin/sh
# usage: $0 target srcs...
exec > Makefile
echo "TARGET = $1"
shift
echo "SRCS = $*"
echo 'all: $(TARGET)'
echo '$(TARGET): $(SRCS:.c=.o); $(LINK.o) $^ $(LOADLIBES) $(LDLIBS) -o $@'
gcc -MM $*
0258デフォルトの名無しさん
NGNG簡単かどうかは別として、古典的作品として imake も挙げておく。
0259デフォルトの名無しさん
NGNG0260デフォルトの名無しさん
NGNG0261デフォルトの名無しさん
NGNGhttp://pc.2ch.net/test/read.cgi/tech/1014478527/l50
で放置されたので、こちらで質問させてください。
MALLOC_CHECK_の使い方を教えて頂きたいのです。
malloc/freeで、2重解放している等の不具合を見つけるために
MALLOC_CHECK_
なる環境変数を使ってデバッグができると知り、
試してみたのですが、状態が変わらず。
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/malloc.3.html
http://www.arbornet.org/~zunda/ctips.html
辺りを読むと、以下のコマンドをプログラム実行前に行い
プログラムをgdbで実行すればよいだけのように読めるのですが。。。
% gcc hoge.c -g
%
% setenv MALLOC_CHECK_ 1
%
% gdb a.out
%
man mallocで詳しい説明が分かる、とも書いてあるのですが、
私の環境では、man mallocでもMALLOC_CHECK_という単語は全く見当たらず。
Solaris8, gcc2.95.2では駄目ということなのでしょうか?
それとも何かしらのインストール、または事前設定が必要なのでしょうか?
あるいは、単に使い方誤りなのでしょうか?
0262デフォルトの名無しさん
NGNG> 最近のバージョンの Linux libc (5.4.23 以降) と GNU libc (2.x) では、
これの意味がわからなかったらあきらめれ
0263デフォルトの名無しさん
NGNGそんなもん使わなくてもデバッグできるだろうに・・・方法はたくさんあるよ
0264デフォルトの名無しさん
NGNGこれでも使えば?
http://www.parasoft.com/jsp/products/home.jsp?product=Insure&/index.htm
0266デフォルトの名無しさん
NGNG自分で経験積まないと得られないものでしょうか?
0267デフォルトの名無しさん
NGNGとりあえず、人の(移植性が高い)ソースをパクれ!
そのうちスキルも上がるでしょう。
0268デフォルトの名無しさん
NGNGとりあえず、POSIXとautoconfを押さえることから始めて見ては?
0269デフォルトの名無しさん
NGNGこういうプレーンテキストを読み込む部分って、みなさん毎回作ってますか?
俺は今まで Win 厨で、設定はレジストリに保存していたので、
いままでUNIX でも設定をバイナリファイルに保存してました。
Berkeley DB のライブラリつかって。
でもなんか違う気がする………
0270デフォルトの名無しさん
NGNGだから awk/sed や perl が大人気。
人間可読だし、設定プログラムも自由に作成できる。
0271デフォルトの名無しさん
NGNGスクリプト言語なら書き換えも簡単ですね。
設定部分だけ分けて /etc/ の下に置くのもよさそうだし。
メインで使っている言語はC++なので、
シェルスクリプトからバイナリ本体を呼び出すようにして
環境変数経由で初期設定しようかとも思ったんですが、
それもスマートじゃないなぁ、と。
じゃぁほかのプログラムはどうやってるんだと思ったので、
ntpd のソースを見てみたら、ntp.conf を読み出す部分が
めちゃくちゃ大変そうでした。やっぱり伝統的にそうやってるのか…
どうせなら tiny な Lisp エンジンを内蔵してしまおうかとも思ったり。
FORTHでもいいかなと思ったり。
あうー。
0272デフォルトの名無しさん
NGNG0273デフォルトの名無しさん
NGNG0274デフォルトの名無しさん
NGNGていうか、>271 でも書いたとおりメインはC++なんです。
汎用の設定ファイル用パーサみたいなクラスライブラリってありますか?
0275デフォルトの名無しさん
NGNG0276デフォルトの名無しさん
NGNG0277デフォルトの名無しさん
NGNGどうやったらいいでしょう? ここのスレでいいのかどうか不安ですが
よろしくお願いします。
cat /dev/serial > file
のようなシェルスクリプトとかあるいは、C で本格的に書くのでもいいですが。
0278デフォルトの名無しさん
NGNGそれでできてるんじゃ?
Linuxではダメなのか?
0279デフォルトの名無しさん
NGNGgrepかけすぎて/usrの下が壊れそう
0280デフォルトの名無しさん
NGNG> こういうプレーンテキストを読み込む部分って、みなさん
> 毎回作ってますか?
確かに不便。UNIX の欠点かなと思う。ただ、
%{
#include <stdio.h>
%}
%%
^[a-z]+=[a-zA-Z0-9]+ { '=' で分割して格納 }
%%
として、
% lex foo.l
% cc lex.yy.c -ll
程度で何とかなるっちゃー何とかなる。でも面倒。
# をコメント扱いするとか、行末の \ の継続行扱いとかを考えるとさらに欝。
0281デフォルトの名無しさん
NGNG> 確かに不便。UNIX の欠点かなと思う。
まぁ、UNIXの欠点というよりライブラリがないってだけなんだけど、
不便なことには変わりない。
やっぱ lex + yacc で吐かせてる人が多いのかな。
bison が C++ に完全対応してくれればなお良なんだけどな。
個人的には Lisp とか Scheme とか好きなんで、
自分のプログラムに簡単に組み込める機能限定の tiny な
Scheme エンジンがあればいいと思ったり。
Gauche って組み込みやすいのかなぁ。
0283デフォルトの名無しさん
NGNG偶然こんなのみっけたよ。
http://www.vector.co.jp/soft/unix/prog/se099824.html
0284デフォルトの名無しさん
NGNGちょっと複雑な構造のファイルをパースするとなると結局パーサは
自分で書かないとだめになっちゃうかも。
>283 をを!こりは、ぴったり。
も、もう少し前にコレを知っていれば………
S式で設定ファイルを書くようにプログラムを書いちゃターヨ。
0285デフォルトの名無しさん
NGNGS式の方がよいと思う。
0286
NGNG0287デフォルトの名無しさん
NGNG階層も自由自在
(キー 値)
(キー 値)
...
(グループ
(キー 値)
(キー 値))
0288デフォルトの名無しさん
NGNG0289デフォルトの名無しさん
NGNGカッコだけでしょう。
0290デフォルトの名無しさん
NGNGそんなこというなよう
0291デフォルトの名無しさん
NGNGわざわざ限定的なXMLパーサを扱う最近の風潮はよくわからん。
0292デフォルトの名無しさん
NGNGがないか探してみたらこんなものを見つけました.
http://www.complang.tuwien.ac.at/~schani/lispreader/
やっぱ皆自分で書いてるんですか?
#既存の.elコードを読み込みたい..
0293デフォルトの名無しさん
NGNGhttp://www.ascii.co.jp/BSDmag/200004/style.html
0294デフォルトの名無しさん
NGNGこういったのもあるよ。
0295デフォルトの名無しさん
NGNG> 大きなインデントがどんなに読みやすいかわかるだろう
少し外に出て新鮮な空気を吸うことを勧めたい。
0296デフォルトの名無しさん
NGNG0297デフォルトの名無しさん
NGNGもともとはアプリケーションに組み込んで使うものだったと聞いたけど。
0298デフォルトの名無しさん
NGNG0299297
NGNGドで設定ファイル書いてもらえばいいじゃん。
0300デフォルトの名無しさん
NGNGズザー
0301デフォルトの名無しさん
NGNG日本語対応しといて欲しいです。
でもこの要求で使えそうな物がすごく限定されそうだ。
0302名無しさん@お腹いっぱい。
NGNG投稿します。
UNIX上でShellを使用した開発をしているのですが、日本語の文字(平仮名、カタカナ、漢字)
および全角スペースの削除方法が分かりません。半角スペースや半角文字(a,b,c,etc.)等の
文字を消す場合はsed -eを使用すれば消せることは分かるのですが、どうも日本語だとうまく
作動しません。
具体的ファイル名samplefileをvi等で以下の様に書き込みします。
あいうえお 春夏秋冬
"あいうえお"と"春夏秋冬"の間には全角スペースが3つ存在しますが、これを無くしてしまいたいのです。
それと、もし可能であれば"あいうえお"と打った全角文字も、文字自体を消すか、sed等で他の文字に置き
換えたいのです。
このような行為は可能でしょうか。ご存知な方是非教えてください。よろしくお願い致します。
0303デフォルトの名無しさん
NGNGその日本語の文字コードは何なんか、というあたりだな。
0304デフォルトの名無しさん
NGNGperlで各行に対しs/ //g;
0305304
NGNG事前にnkf -eしておくか。
0306デフォルトの名無しさん
NGNGOSの名前とバージョンくらい書けよ。
0307名無しさん@お腹いっぱい。
NGNG>>304さん
ご返答有難うございます。確かnkfはJISで書かれた日本語文字をEUCに変換
するものでしたよね。私の環境はSolarisで、TeraTermを使ってSolarisに入って
から、TeraTerm上で日本語入力を行っています。けしてSolaris上からではありません。
とにかく今は出先で確認が取れないので、帰宅したら実験して、結果を報告したいと思います。
もし他に何か方法をご存知の方いましたら是非教えてください。よろしくお願いします。
0308名無しさん@お腹いっぱい。
NGNG私の説明不足でした。環境はSolaris8(SPARC)版で、TeraTermでtelnetして、
そこから開発しています。
0309デフォルトの名無しさん
NGNG> 環境はSolaris8(SPARC)版で、
じゃあ、日本語はsedでもawkでもviでも問題なく利用できる。
$ ls -dl /usr/lib/locale/ja*
drwxr-xr-x 8 bin bin 512 Apr 20 2000 /usr/lib/locale/ja/
drwxr-xr-x 3 bin bin 512 Apr 20 2000 /usr/lib/locale/ja_JP.PCK/
drwxr-xr-x 3 bin bin 512 Apr 20 2000 /usr/lib/locale/ja_JP.UTF-8/
lrwxrwxrwx 1 root root 4 Apr 20 2000 /usr/lib/locale/ja_JP.eucJP -> ./ja/
lrwxrwxrwx 1 root root 4 Apr 20 2000 /usr/lib/locale/japanese -> ./ja/
環境変数のLANGを適当な奴に設定しな。PCKはShift_JISのこと。
ただ、sedは/usr/bin/sedじゃなくて、/usr/xpg4/bin/sedを使いな。
manのATTRIBUTESセクションのCSI(Coding System Independent)を参照。
# 環境変数はちゃんと設定出来てるんだけど、/usr/bin/sed使ってるんだろうな。
0310デフォルトの名無しさん
NGNG一応補足
nkfはShiftJis、JIS、EUCを"相互に"変換できるよ。
んで、それ以外にも色々機能もある。
一度 nkf --version を見てみると良いかも。
0311名無しさん@お腹いっぱい。
NGNGご説明ありがとうございます。
ですが一つ、上のls -dl /usr/lib/locale/ja*コマンドを行っている意味
が私には理解出来ません。私はTeraTem上で日本語を編集しているので、きっと
Shift−JISを利用していると思います。なので上の例だと/usr/lib/locale/ja_JP.PCK/
にあたると思うのですが、これを具体的にどのようにすればいいのでしょうか。
かなり初心者な質問で申し訳ありません。。。。。
ちなみに私の場合、LANG=jaです。whichでsedを引いたら/bin/sedになっていましたが
whereisで引くと/usr/bin/sed /usr/ucb/sedと、二つ帰ってきました。
0312デフォルトの名無しさん
NGNGTeraTermの漢字コードの設定をEUCにしよう。
[Setup]->[Terminal]
/usr/lib/locale/ja* は、いろんなコマンドで表示されるメッセージ
が入ってる。LANG=jaならEUC。
/usr/bin/sed は SystemV(Solaris2.xの標準)sed
/usr/ucb/sed は、BSD互換(Solaris1.xのときの)sed
だと思う。
0313デフォルトの名無しさん
NGNG> ですが一つ、上のls -dl /usr/lib/locale/ja*コマンドを行っている意味
> が私には理解出来ません。
なければ、packageが足りないことが分かるから、
「あなたもやってみなさい」という意味があった。
> 私はTeraTem上で日本語を編集しているので、きっと
> Shift−JISを利用していると思います。
そうとは限らない。変換して送ることができるので。
調べてみなよ。
$ echo 'あいうえお' | nkf -e | od -c
0000000 244 242 244 244 244 246 244 250 244 252 \n
$ echo 'あいうえお' | nkf -s | od -c
0000000 202 240 202 242 202 244 202 246 202 250 \n
だから、「あいうえお」って内容のファイル作成して、od -cすれば分かる。
> なので上の例だと/usr/lib/locale/ja_JP.PCK/
> にあたると思うのですが、これを具体的にどのようにすればいいのでしょうか。
LANG=ja_JP.PCK
export LANG
だな。しかし、
> ちなみに私の場合、LANG=jaです。
で、日本語が利用できていたのなら、TeraTermはeucJPに変換して送ってたんだろう。
# /usr/bin/sed「で」利用できないのは、/usr/bin/sedがCSIじゃないから。
> whichでsedを引いたら/bin/sedになっていましたが
> whereisで引くと/usr/bin/sed /usr/ucb/sedと、二つ帰ってきました。
だったら何なのよ? CSIがEnable奴を使え、と言っただろ。
/usr/xpg4/bin/sedはあるのか、ないのか?
man sedしてみなよ。ATTRIBUTEセクションのAvailabilityのところに、
/usr/xpg4/bin/sedの入っているpackage名が書いてある。
$ pkginfo パッケージ名
あるの?
0314デフォルトの名無しさん
NGNG> /usr/lib/locale/ja* は、いろんなコマンドで表示されるメッセージ
> が入ってる。LANG=jaならEUC。
locale情報全般。
他にもcoding system情報なんかが入ってる。shared libraryになって。
0315311
NGNG以下が私の/usr/lib/localeです。
2 lrwxrwxrwx 1 root root 3 4月 24日 23:48 POSIX -> ./C
2 drwxr-xr-x 3 root bin 512 4月 24日 23:48 common
2 drwxr-xr-x 10 root bin 512 4月 24日 23:48 en_US.UTF-8
2 -rw-r--r-- 1 root bin 270 8月 21日 1999年 geo
2 drwxr-xr-x 4 root bin 512 4月 25日 00:10 iso_8859_1
2 drwxr-xr-x 8 bin bin 512 4月 25日 01:23 ja
2 drwxr-xr-x 3 bin bin 512 4月 25日 01:22 ja_JP.PCK
2 drwxr-xr-x 3 bin bin 512 4月 25日 01:22 ja_JP.UTF-8
2 lrwxrwxrwx 1 root root 4 4月 25日 00:20 ja_JP.eucJP -> ./ja
2 lrwxrwxrwx 1 root root 4 4月 25日 01:21 japanese -> ./ja
4 -rw-r--r-- 1 root bin 1848 10月 29日 1999年 lcttab
Packagesですが、Solaris環境はFull Installを行っている上にCompanion CD
でも殆ど必要なLibraryもInstallしています。それで言われている通りに以下
のコマンドを実行してみました。
$ echo 'あいうえお' | nkf -e | od -c
0000000 244 242 244 244 244 246 244 250 244 252 \n
0000013
>> ちなみに私の場合、LANG=jaです。
>で、日本語が利用できていたのなら、TeraTermはeucJPに変換して送ってたんだろう。
確かに私のTeraTermはKanji(Receive)も(Transmit)もEUCに設定されています。
なのでTeraTermからによる日本語入力や編集は可能です。
それと私の確認ミスでしたが/usr/xpg4/bin/sedコマンドは存在していました。私が$PATH
をここに通していなかったので今まで気づきませんでした。申し訳ありません。
なのでとりあえずは環境変数LANG=ja_JP.PCK、TeraTerm上ではKanji(Receive)も(Transmit)も共にEUC、
使用するsedコマンドはusr/xpg4/bin/sedで全角スペースの削除をやってみましたがやはり
出来ませんでした。
$ sed -e "s/__*//g" samplefile
こんな感じや、これに色々と手を加えたりもしたのですがうまく行きません。上のコマンドの
__←このアンダーバーは全角スペースを2つ付けた意味です。
質問続きで申し訳ありません、もう一度何かアドバイスを頂けたら幸いです。どうかよろしく
お願いします。
0316デフォルトの名無しさん
NGNG指定しているLC_CTYPEとfileのcoding systemが合ってないずら。
> 確かに私のTeraTermはKanji(Receive)も(Transmit)もEUCに設定されています。
なら、(たぶんfileの中身もEUCに違いないので)
LANG, LC_CTYPE, LC_ALLはja, ja_JP.eucJP, japaneseのどれかだべ。
# SolarisはeucJPがdefaultなので、ja, japaneseでも可。
0317311
NGNGちなみに環境は以下のようにしました。
TeraTerm
漢字Receive = EUC
漢字Transmit = EUC
Solaris上
シェル = /bin/sh
環境変数LANG = ja
環境変数LC_CTYPE = ja
環境変数LC_ALL = ja
これでバッチリ全角スペースは$ sed -e "__*//g"で消えました。
ただ一つ、これだと全角スペース『だけ』しか消えなく、所々にある
半角スペースは消えないので、パイプを使って全角スペースを消
した結果をsed -e"__*//g"(__の部分は半角スペース2個)に投げて、
クリアさせました。とりあえず結果として期待通りの物になったの
ですごく満足してます。アドバイスして頂いた皆様、本当に感謝します。
それで図々しいですが、もう一つ質問させてください。
今私の行おうとしているプログラムで、どうしても日本語文字(漢字、
平仮名、カタカナ等)をデーターのファイルから削除する必要があります。
$ cat data
1234あいうえお5678
1234カキク5678
1234東西南北5678
この様に前後の数字の間に存在する日本語文字は漢字、平仮名、カタカナ、
文字の数、全てがランダムな状態なのでsedコマンドで削除したい部分を
ピンポイントで指定して消す方法がとれません。
上のようなデーターファイルで結果を12345678とするには、何か方法が
あるのでしょうか。再度質問し申し訳ありませんが、どうか皆様アドバ
イスをください。
0318デフォルトの名無しさん
NGNGnkf -e data | tr -d '\200-\377'
0319デフォルトの名無しさん
NGNG$ echo 'abcdefg十とか能とかvwxyz' | nkf -e | LC_CTYPE=ja /usr/xpg4/bin/tr -d '[:jisx0208:]'
abcdefgvwxyz
man trと/usr/lib/localedef/src/ja/localedef.srcを参照。
http://docs.sun.com/ab2/coll.651.1/SOLASNSUPPT/@Ab2PageView/354?Ab2Lang=C&Ab2Enc=iso-8859-1
あたりを読んどいた方がいいかもね。
0320デフォルトの名無しさん
NGNG0321デフォルトの名無しさん
NGNG0322320
NGNG0323デフォルトの名無しさん
NGNG0324320
NGNGgccにおける例外の実装を知らないんでなんとも言えない
んだが、なんとなくできなさそうな気がしててやっぱりできなかった
というわけで次の質問
「シグナルを捕らえて例外として投げるいい方法はないか?」
回答の予想
「longjmp()でも使っとけ」
0325デフォルトの名無しさん
NGNG例外出すのは良いとしてどこでtryしてcatchするの?別スレッドで無限ループ?
0326320
NGNGtcpのread(2)とかでSIGPIPEを処理すること
だったのね
レガシーにlongjmp()でwrapper書くか
0327デフォルトの名無しさん
NGNGイベントのプロシャージャでXmbLookupString()を使っても日本語が入ってきません。
それどころかkeysymまで入ってきません。
どうやったらIMが使えますか?
0328デフォルトの名無しさん
NGNGXRegisterIMInstantiateCallback, XUnregisterIMInstantiateCallback
XOpenIM から調べよう。
0329デフォルトの名無しさん
NGNGXtのイベントプロシャージャを使わずに、ただのイベントループ内で
キーを取得すると、ちゃんと日本語が入ってきます。
たぶんXtが中でIMをいじってるためだと思うのですが・・
0330デフォルトの名無しさん
NGNG問題は解決すると思うのですが、そういうのありませんかね。
0331デフォルトの名無しさん
NGNGMSDNのようなまとまったものがあるなら知りたいです。
0332デフォルトの名無しさん
NGNG0333デフォルトの名無しさん
NGNGMS=OS及びNHK=2chが成り立つ。
0334デフォルトの名無しさん
NGNGNHK=日本引きこもり協会?
0335デフォルトの名無しさん
NGNG関西だよ
0336デフォルトの名無しさん
NGNG商品区分コード 商品コード 単価 販売個数 商品名
で、それぞれ数字が並んでいるんだけど、第4の項目で整列ってのは販売個数で整列って考えてもいいですか?
0337デフォルトの名無しさん
NGNG0338名無しさん@お腹いっぱい。
NGNGlsとgrepを組み合わせて、実行可能なファイルを出力するコマンドを別名で定義する。
ls -F|grep '*$'
こんな感じでやったのですが、これをaliasを使って別名で定義することができません。
どうやったらできるのですか?
0339デフォルトの名無しさん
NGNGUNIXプログラミングと何の関係もないだろがボケがぁ
0340名無しさん@お腹いっぱい。
NGNGどうもありがとうございました。
ボケでいいので、もう一回だけ誰かお願いします。
dataコマンドを使うと日付時刻が出力される。
時刻だけを出力する、別名hmsを定義しなさい。
どうやって時刻だけを出力するのでしょうか?
0341デフォルトの名無しさん
NGNGだが何か?
man date して首吊って氏ね!
0342デフォルトの名無しさん
NGNG優しいな、君。相手してあげるなんて。
0343デフォルトの名無しさん
NGNGその違い(影響部分)をWebで調べているんですが、検索方法がまずいせいか
思った結果が得られません。
C標準関数やMFC単位で、これはそのままでOK、これは作り直しなどと判定できる
ネタを親切に乗っけてるサイトを知ってる方、教えて頂けないでしょうか?
0344343
NGNG0345デフォルトの名無しさん
NGNGこれまた無謀な。Win32依存部分(MFC含)は何もいわずに書き直せ。
0347デフォルトの名無しさん
NGNGそこでS-Langの勉強をしようと思うのですが、なかなか良いサイトが見つかりません
だなたか良い勉強サイトがあれば、ご教授願えませんでしょうか?
#S-Langでnavi2chもどきや、muttもどきをつくったら需要はあるんだろうか…?
#マルチポストで申し訳ない…
0348デフォルトの名無しさん
NGNGそれは大丈夫じゃないの?コンパイラによって微妙に違うけど。
0350初心者
NGNGプログラムを実行しなさい。for文を使いなさい。ポインタを
使いなさい。関数void strcopy(????){/* */}を用いなさい
unix初心者で全くわかりません。どなたか教えていただけないでしょうか?
0351デフォルトの名無しさん
NGNGC言語初心者といえ。UNIX初心者に失礼だ。
後、すれ違い。
0352デフォルトの名無しさん
NGNGvoid strcopy(const char *dest, char *src)
{
strcpy(dest, src);
for (;0;);
}
0353352
NGNG0354デフォルトの名無しさん
NGNGそれよか謎の0回ループについて説明求む。
0355デフォルトの名無しさん
NGNGとあるからでは?
(;0;) ←これって顔文字に見える。
0356350
NGNG0357デフォルトの名無しさん
NGNG0358木村 キタキタマシーン
NGNGワラタ(;o;)
0359デフォルトの名無しさん
NGNGページキャッシュのフラッシュ
パーティションのリード
は、どのようにやるのでしょうか
linuxでは
ioctl( fd, BLKFLSBUF, NULL )
read partition
ioctl( fd, BLKRRPART, NULL )
を使えば良いことはわかったのですが
solarisでは、定義されているヘッダを探しきれませんでした
0360デフォルトの名無しさん
NGNGlinuxでここのプログラムを参考にジョイスティックを使おうと
しているんですけど,
"/dev/js0"が開くことが出来ません。
もしかしたら、ルートでないとコンパイル開く事が出来ないのですか?
日頃winでしかプログラムしたことがないのでよく分かりません。
教えてくださいお願いします。
0361デフォルトの名無しさん
NGNGすいません。コンパイルは出来ます。開くことが出来ません。
0362デフォルトの名無しさん
NGNG/dev/js0 のパーミションは、どうなってるの? とりあえず
% ls -l /dev/js0
してみ。
0363デフォルトの名無しさん
NGNGありがとうございます。パーミッションを変更すれば出来るんですね。
研究室でないと試すことが出来ないので、
今度試してみます。
0364デフォルトの名無しさん
NGNGんですが、どこかわかりやすいHPありませんか?
教えてください。
0365デフォルトの名無しさん
NGNGUNIX上で?
命がけ。
X Window SystemってWindowsプログラムと結構似てるからお勧め。
0366デフォルトの名無しさん
NGNG0367デフォルトの名無しさん
NGNG俺が1cmの入門書読んだ限りでは「こんなもんか」と。
Gtkとかになってくると知らん。
0368363
NGNG以下のようになりました。
lrwxrwxrwx 1 root root 9 4月 28 2001 /dev/js0 -> input/js0
crw------- 1 root 3月 24 2001 /dev/input/js0
パーミッションを全て許可にしても開くことが出来ないんですけど
どうすればいいですか?
0369デフォルトの名無しさん
NGNGつーか、UNIXについて勉強してくれよ。
0370363
NGNGcrwxrwxrwx 1 root 3月 24 2001 /dev/input/js0
こうすればいいわけですよね。
368 のは許可する前です。
368で言ってるようにパーミッションは全て許可にしたんですけど、
それでもうまくいきません。
だから、困ってるんですけど。
0371名無資産@ヘタレ部
NGNGカーネルがjs扱えるように構成されてなかったりして
dmesg で、カーネルの具合を眺めてみよう
0372363
NGNGありがとうございます。
まだ、カーネルとかを良く知らないので少し勉強して来ます。
0373デフォルトの名無しさん
NGNGポート直接叩きのプログラムをよく見るので。
0374デフォルトの名無しさん
NGNG> それでもうまくいきません。
open() 失敗時のエラーコードは何?
0375名無しさん@カラアゲうまうま
NGNGデバイスファイル。
> ポート直接叩きのプログラムをよく見るので。
見るか?
0376デフォルトの名無しさん
NGNGええ、結構。RT-Linuxのサンプルとか・・・って当たり前じゃん!
失礼しました。
そのままfopenとかすればシリアルポートのMIDIならしたりとか出来るようになると考えていいんですね?
0377名無しさん@カラアゲうまうま
NGNGいい。MIDIのプロトコルは知らんのでこっちとかで聞いてみ。
MIDIシーケンサー誰か作れる?
http://pc.2ch.net/tech/1005053427
0378デフォルトの名無しさん
NGNGどうもです。試行錯誤してみます。
0379名無しさん@カラアゲうまうま
NGNGhttp://pc.2ch.net/test/read.cgi/tech/1005053427
0380デフォルトの名無しさん
NGNGMIDIメッセージをそのまま垂れ流せば音鳴らせる。
ポート切り替えとかも専用メッセージがあったはず。
0381デフォルトの名無しさん
NGNGMIDIメッセージはWindowsの方で少し勉強しました。
おもしろそうなので基礎研究と称して研究室で遊ぶことにしますw
0382デフォルトの名無しさん
NGNGフォーマット資料を探してもなかなか見つかりません
よい文献きぼん
(ヘッダファイルのどこどこを見ろでも構いません)
最初にプロセス資源が書かれてて
+4096以降にユーザ空間のイメージが書き出されてるみたいにも
見えるんだけど…
0383382
NGNGで謎が解けました、自己解決です。
asm/user.h にもちょっとしたヒントが書いてありました。
0384364
NGNGではX Window System上のプログラミングについてのわかりやすいHP
などありましたら、教えてください。
本も探しているのですがなかなか見つからなくて・・・
0385デフォルトの名無しさん
NGNGいまどきXLIB生は……
0386デフォルトの名無しさん
NGNGちみの言う「graphics」って何か言ってみそ
どんなことしたいと思ってるの?
http://sal.linet.gr.jp/F/3/index.shtml
http://sal.linet.gr.jp/F/4/index.shtml
http://sal.linet.gr.jp/F/5/index.shtml
ちみのやりたいことは、こん中にあるのかな〜。
0387デフォルトの名無しさん
NGNGかも....。XやGTKだとハマりまくる「任意の色形式のフレームバッファ」
が簡単に使える(BufferedImage)からね。
0388名無しさん@カラアゲうまうま
NGNG0389デフォルトの名無しさん
NGNGグラフィック関係のライブラリってこんなにあるんだ。
ちょっと感動。
0390デフォルトの名無しさん
NGNGargv[0]というのはシェルから渡されるパラメータに過ぎないですよね。
削除されてもinodeは生きてると思うんですが・・・
0391名無しさん@カラアゲうまうま
NGNGたとえばprocファイルシステムを有効にしてあるLinuxなら、
/proc/self/exeをreadlink()すれば分かる。
0392デフォルトの名無しさん
NGNG0393384
NGNG初心者なもんで下記に書いていただいたHPの内容がわからないです(汗)
実は友達から貰ったプログラムがあって、おもしろそうだから
やってみたくなったんです。
ちょっとのっけます。こんな感じのをやってみたいです。
#include "define.h"
#include "struct.h"
#include "variable.h"
/* Function Prototype */
int main(int argc, char *argv[]);
void quit_action();
void win_size(unsigned viswid, unsigned vishei, unsigned rwid, unsigned rhei,
unsigned *wwid, unsigned *whei);
/* Resource value, Translation table */
static String fallback_resources[] =
{
"*viewport.allowHoriz: True", /* 水平方向のスクロールバー */
"*viewport.allowVert: True", /* 垂直方向のスクロールバー */
"*viewport.useBottom: True", /* 下側のスクロールバーを付ける */
"*canvas.borderWidth: 1",
/* Quit (command) */
"*quitcmd.fromHoriz: viewport", /* Quit ボタン */
"*quitcmd.label: Quit", /* ボタンのラベル */
"*quitcmd.borderWidth: 2",
NULL,
};
長い文、はっきりとしない回答で申し訳ありません。
どこか詳しいHPありましたらお願いします。
0394デフォルトの名無しさん
NGNG寝ろ。C言語の参考書でも抱いて。
0395デフォルトの名無しさん
NGNG> 削除されてもinodeは生きてると思うんですが・・・
inode が生きてても全部のディレクトリから unlink さらたらパスは存在しないでしょ。
0396363
NGNG-1です
0397デフォルトの名無しさん
NGNGおいおい……。open と errno の man page 読んでくれ。
0398名無しさん@カラアゲうまうま
NGNGchgrp でファイルのグループ所有権を変更すればよいのでは
ないかと想像でいってみるテスト。
さらに、ユーザーに使用権を与えるために /etc/group を
書き換えればいいかもしれないと言い足してみる。
0399363
NGNGすいません。errno のこと知りませんでした。
親切に教えてくれて感謝です。
結果は 19
perror の結果は
「No Such Device」でした。
というか、カーネルとかに関して詳しくないので断定することは
できないのですが、371で指摘された「カーネルがjsで使えるように
構成されてない」というのが怪しいです。
UNIXには慣れていないので苦戦していますが、
現在試しているところです。
0400デフォルトの名無しさん
NGNG>>391
そういえばそういうものがありましたね!とりあえずはこれを辿るか・・・
>>395
たしかにunlinkしたら実体(inode)はあってもパスは無くなりますね
fork&execで自分自身をもう一度execしようと思ったのです。
引き継ぐ情報は引数で渡せる量です。forkだけだとリソースが残って
しまうので、execでclean upしてしまおうという目論見です。
ところが自分自身のパスが分らない、というかもはや存在しないかも
しれないんですね。ううむコマッタ。
0401デフォルトの名無しさん
NGNGC++勉強して、Qtかgtk--やれ。
どうしてもCがいいなら、Xawやってへそ噛んで死ね。
0402デフォルトの名無しさん
NGNG0403デフォルトの名無しさん
NGNGargv[0] を起動直後のカレントディレクトリからの
相対パスとして扱えば十分だと思う。
実行中に自分を unlink するなんて、普通は無しでしょ?
/proc を使うにしても、シンボリックリンクとして見えるはずだから
もと消しちゃったらダメなんじゃ?
0404名無しさん@カラアゲうまうま
NGNG/* suicide.c */
#include <stdio.h>
#include <unistd.h>
#include <sys/param.h>
#define SELF_EXE "/proc/self/exe"
int main(int argc, char** argv)
{
char self[MAXPATHLEN];
int n = readlink(SELF_EXE, self, sizeof self);
if (n < 0) {
perror("readlink");
return 1;
}
self[n] = 0;
printf("%s = %s\n", argv[0], self);
if (unlink(argv[0])) {
perror(argv[0]);
}
else {
execv(SELF_EXE, argv);
}
return 0;
}
$ make suicide
cc suicide.c -o suicide
$ ./suicide
./suicide = /tmp/suicide
./suicide = /tmp/suicide (deleted)
./suicide: No such file or directory
0405デフォルトの名無しさん
NGNG0406名無しさん@カラアゲうまうま
NGNG元のファイルを削除してもアクセスもexecもできる。
ということをいってるんですが、>>403を読んでますか?
0407デフォルトの名無しさん
NGNGあったと思うんだけど、どっかに一覧表があるところ無い?
0408デフォルトの名無しさん
NGNGman intro とか /usr/share/man/man2 とかか? たぶん探しているのは
getpwent() とか getpwnam() だと思うが。
0409デフォルトの名無しさん
NGNG> 元のファイルを削除してもアクセスもexecもできる。
なるほど〜、こりゃすごいですね・・・
実行ファイルを作って、実行し、即削除すればウイルスとしてバレにくい?
0410403
NGNGおお、できるんですね。知らなかったです。
(Linuxも /proc もよく知らない(^^;)
でもわざわざそんなことまでして Linux 依存にするメリットはないですよね。
0411デフォルトの名無しさん
NGNGこのあたりの実装ってコンパイラのバージョンに
よってかわってきたりしますか?
0412デフォルトの名無しさん
NGNGまぁ、それを期待しちゃいけないって凝った。
0413名無しさん@カラアゲうまうま
NGNGされてません。
たぶん新たに割り当てられたページが0 fillされてるのと混同してると思われ。
0414デフォルトの名無しさん
NGNGでないと、calloc() の立つ瀬がないもんね。
0415デフォルトの名無しさん
NGNGそのプロトタイプづくりをMacOSX上でやろうかと考えています.
#詳しい話を聞いていないのでターゲットOSはまだ分からないのですが、
#漠然とWindows+CygwinよりはMacOSXの方が楽そうとおもって選びました
今のとこ「詳細UnixProgramming」のコードで様子をみてるんですが
なんか注意点とかありますか?
0416デフォルトの名無しさん
NGNGネイティブで組みましょう
0417名無しさん
NGNGクライアント側から20000bytesのデータを
送って切断するときに
write(fd, buf, 20000);
shutdown(fd, 2);
close(fd);
exit(0);
というようにコールしているのですが、
これだとwriteしたデータを送出しきらないうちに、
クローズされてしまうことはないのでしょうか?
0419デフォルトの名無しさん
NGNG>でもわざわざそんなことまでして Linux 依存にするメリットはないですよね。
いえ、実現できるなら依存しようが構いません。
unix標準(?)の方法があるなら、それにしようと思ったまでです。
0420デフォルトの名無しさん
NGNG同期非同期
0421名無しさん
NGNGごめんなさい。
UNIXで考えていたものでここでも良いかと。
>>420
同期非同期とは、fcntl()のNONBLOCKINGの
ことでしょうか。
それから、write()の返り値が20000になっていれば、
同期、非同期モードに関係なくclose()
して大丈夫なのでしょうか。
0422デフォルトの名無しさん
NGNG> UNIXで考えていたものでここでも良いかと。
良くない。とっとと逝け勘違い小僧。
0423デフォルトの名無しさん
NGNG0424デフォルトの名無しさん
NGNGまぁまぁ、そんなきつくあたるなよ
0425デフォルトの名無しさん
NGNG具体的には,ファイルから1文字ずつ読み込んで,それに改行コードを加
えて別のファイルに書き出したいのです.
取り敢えず,こんなプログラムを考えてみました
-------------------------------------------
for(;;)
{
ch = fgetc(fp1);
if(ch == EOF)
{
break;
}
fprintf(fp2, "%c\n", ch)
}
--------------------------------------------
といった感じです.
ここで,変数chをどのような型で宣言すれば巧くいきますでしょうか?
また,このプログラムに根本的な誤りがあるのでしょうか?
お願いいたします.
0426デフォルトの名無しさん
NGNG文字コード書いてないので2バイトコードの変則的な扱い方。
char a[2];
a[0] = fgetc(fp1);
a[1] = fgetc(fp1);
fprintf(fp2, "%s\n", ch)
0427名無しさん@カラアゲうまうま
NGNG0428デフォルトの名無しさん
NGNG書いててなんか違和感あったんだよなぁ・・・w
0429名無しさん@カラアゲうまうま
NGNGfgetc()の戻り値はint。
0431デフォルトの名無しさん
NGNG> だから,int chで宣言するんですね!
違う。EOFがあるから。
0432デフォルトの名無しさん
NGNG0433名無資産@ヘタレ部
NGNGちなみにたいていのUnix libc実装では-1のような。
>>425
マジレス
EUCに限らず、たいていの日本語コードには状態がつく
ので、1バイト単位では文字として独立していないと考えれ
単純に済ませるのなら、
if (ch >= 0x80)
{
int c2 = getc(fp1);
if (c2 != EOF)
ch = (ch << 8) | c2;
}
かのう。EUCは2バイトとは限らないので上記コードは鵜呑みにするな
UCS-2(2バイトユニコード)は、状態がないのでやや扱いやすい。
UCS-2に変換するのは面倒っちいけどな。
0434名無しさん@カラアゲうまうま
NGNG> UCS-2(2バイトユニコード)は、状態がないのでやや扱いやすい。
UCS-2とUTF-16の区別のつかない奴にサロゲート喰わされて落ちる罠。
0435425
NGNGどうやらC言語で私のやりたいことをする為には,スキル不足のようです
私が今やろうとしているのは,平仮名の頻出度調査です.
kakasiを使って平仮名だけにした文章をsort,uniqしたいんです
しかし,そのままではsort出来ないので1文字ずつ改行を入れようと
思いました.
何か良い代替手段はありませんでしょうか?
0436デフォルトの名無しさん
NGNGまず、ひらがなを半角文字で表現(エディタの置換機能などで)。
それの頻度を取る。
結果は置換した半角文字に対応したひらがなとともに出せばいい。
0437デフォルトの名無しさん
NGNG0438デフォルトの名無しさん
NGNGUNIXのシステムコール全部Widows新居食。
0439通りすがりのキティ
NGNGお前が作れとは言わないで。作れないし。
0440デフォルトの名無しさん
NGNGそれは Cygwin だろ。UNIX つーか POSIX だが。
>>437
VMWARE は仮想 AT コンパチマシンを作ってる。
Bochs というオープンソースのものがあるので、
関連資料とソースを読むといい。
0441名無しさん@カラアゲうまうま
NGNG0442デフォルトの名無しさん
NGNGマウスでコマンド入力ってなによ?
マウスジェスチャーのこと?
http://optimoz.mozdev.org/gestures/
こんなの?
0445デフォルトの名無しさん
NGNG0446デフォルトの名無しさん
NGNGあいうえお数えるの大変でない? kaとa。
ローマ字にこだわらなきゃいいのかな
私ならperlかなにかで1文字を1文字+改行に置き換えて
sortしてuniqすると思うけど、でもそれじゃプログラム板っぽくないね。
0447デフォルトの名無しさん
NGNG$ruby -Ks freqj.rb hiragana.txt
require 'jcode'
freq = Hash.new(0)
while line = ARGF.gets
line.each_char{|char| freq[char] += 1}
end
freq.keys.sort!.each do |char|
print char, " -- ", freq[char], "\n"
end
0448ピルゲイツ
NGNG本屋巡ってもQtとかGTKの参考書しか無いし・・・
0449デフォルトの名無しさん
NGNGunixな人たちは気づきにくいかもしれませんが
ハンカクカナというものがあるのです。
あとはアルファベット出現頻度プログラムをどっからか頂いてきて...
数行なんで作ったほうが早いかな?
0450名無し
NGNGUNIXか、プログラム板かの過去ログで見たんですが、
所在がわからなくなってしまったので質問させてください。
csh で sh の read みたいなことをするには
どうしたらいいですか?
0451デフォルトの名無しさん
NGNGset a=`cat < /dev/tty`
ctrl+d が必要ですが
0452名無し
NGNG>450
さんくす
0453名無しさん@カラアゲうまうま
NGNGset a=$<
0454デフォルトの名無しさん
NGNGLinuxでGUIやるなら何がいいですか。
GUIイランというのはなしでお願いします。
0455デフォルトの名無しさん
NGNG0457デフォルトの名無しさん
NGNG0458デフォルトの名無しさん
NGNG0459デフォルトの名無しさん
NGNGそれで、Linuxで秒未満の時間管理をする方法を調べています。
Windows APIのtimeGetTime()相当の機能が欲しいのです。
また、msオーダーでインターバルタイマを発生させる方法はありますか?
(もし、無ければポーリングでやるしかないですが)
gettimeofday(2), clock(3), setitimer(2)
0462デフォルトの名無しさん
NGNGtwnなどのソースを参照するのもいいのですが、概略を掴んでおきたいので。
0463デフォルトの名無しさん
NGNGSystem V IPC メッセージキューについてです
/*サーバ側*/
struct msgbuff {
mtype:
mtext;
}b; /*構造体テキトー*/
msgget ( msgid,............... ) /*キューゲト*/
msgrcv ( msgid,...b.mtext...... ) /*レシーブ*/
fprintf ( fp, %s, b.mtext ) /*ファイルニカキコ*/
:
:
この後にクライアソトに成功・失敗を伝えたいんすけど
再度b.mtextって使用可能なんすかね?
b.mtext使用してクライアソトに伝えようと思ったんすけど・・・
なんか他に(・∀・)イイ方法あるなら教えてください。
厨なんで質問の意図わかりにくいかとは思いますが
何卒オナガイシマス
0464名無しさん@カラアゲうまうま
NGNG基本的にキューってのは一方通行。
> 再度b.mtextって使用可能なんすかね?
> b.mtext使用してクライアソトに伝えようと思ったんすけど・・・
使用可能は可能だけど、サーバ側で書き換えたからってクライアント側には何
の関係もない。
共有メモリにするとか、クライアント側でもメッセージキューを作ってそのID
を一緒に送るとか、あるいはソケットにするとか。
0465デフォルトの名無しさん
NGNGプロセスごとにファイルデスクリプタは違うわけだから
オープンしたファイルハンドルを渡しても無意味かと。
渡すならファイル名を渡すべき。
0466名無しさん@カラアゲうまうま
NGNG> 今思ったんだが、b.mtextってFILE *型なのでは?
なんで?
> プロセスごとにファイルデスクリプタは違うわけだから
> オープンしたファイルハンドルを渡しても無意味かと。
つーかその前にポインタが違うだろ。
0468465
NGNGスマソ。
0469名無しさん@カラアゲうまうま
NGNGmarshalingについて調べてみ。
0470463
NGNGなんとか問題解決しました。
memsetで消しちまえばよかったんす。
>>467
strcpy (b.mtext,"(゚∀゚)アヒャ");
msgsnd ( id ,.................. )
で文字列送れますよ。
0471名無しさん@カラアゲうまうま
NGNG> memsetで消しちまえばよかったんす。
これでどう解決したのか小一時間(略)。
0472デフォルトの名無しさん
NGNGage
0473デフォルトの名無しさん
NGNG#!/bin/sh
su
./foo
ではうまくいきません(suでコマンド入力待ちになってしまう)。
どうやればいいのでしょうか?
0474デフォルトの名無しさん
NGNGSUする時に、-Cにてfooを実行するシェルを指定すればよい。
su root -c "/aho/baka.csh" てなかんじでね。
0476デフォルトの名無しさん
NGNGsudo つかえば?
> 462
X-Window プログラミング とかいう本が大昔にありませんでしたか。
0477デフォルトの名無しさん
NGNG0478デフォルトの名無しさん
NGNGときと、ヘッダーファイル使って複数のファイルに分けて分割コンパイル
したときと比べたら、1つのファイルにまとめた方の実行ファイル(a.out)
のサイズが小さいのです。分割して実行ファイルのサイズが増える原因
は何が考えられますかね?よろしくお願いします。
0479.
NGNG作って下さいませんかのう... (windowsエミュレータ ってのはなしで)
0480デフォルトの名無しさん
NGNG0481名無しさん@カラアゲうまうま
NGNG同じ文字列リテラルが(#defineなどで)各オブジェクトファイルにできてるとか。
シンボルテーブルとかが分割されてヘッダ分大きくなってるとか(システム次第)。
0482478
NGNGヘッダーで
#ifndef UTIL
#define UTIL
.(#define MAX 100とか、関数、クラス、
. グローバル変数(const)の宣言)
#endif
みたいにしてるんですが、これだけじゃダメなのデスカ?
シンボルテーブルについては知らないので調べてみます。
0483名無しさん@カラアゲうまうま
NGNGそれはいわゆるインクルードガードというやつで、この話には無関係。
> .(#define MAX 100とか、関数、クラス、
#define HOGE "hogehoge"なんてのがないか?つーことだ。
0484デフォルトの名無しさん
NGNGプロトコル非公開の営利サービスのクライアントのクローンを作るんですか
そんな危険なことするよりフリー(ソース公開)の同種ソフトの支援でもしたほうがいいんとちゃいますか
0485デフォルトの名無しさん
NGNGしれないデバイスファイルを open して、返り値を見るのが順当なんでしょうか。
というのも、今 Linux 上で V4L を用いてキャプチャカードからの動画像の
取り込みのプログラミングをしているのですが、現在何枚のキャプチャカードが
接続されているか調べるのに上記の方法を使っていて、もう少しスマートに
できんかな、と思ったもので。
0486デフォルトの名無しさん
NGNGルーク、/procを使え
0487デフォルトの名無しさん
NGNG0488デフォルトの名無しさん
NGNG0489485
NGNGThanks!
/proc/video 下に接続されたデバイスについての情報が書いてある
ファイルが存在していました。
ちなみに /proc 以下を漁るのに役に立ちそうな文章があったので
貼っつけておきます(単に kernel 付属文章の日本語訳ですが(w)
ttp://www.linux.or.jp/JF/JFdocs/kernel-docs-2.2/proc.txt.html
0490デフォルトの名無しさん
NGNGDelphiで書かれてる物とかもあるので、素人目では簡単にできるのでは?とか思ってしまうのですが…
navi2chはちょっと使いづらいなぁと思っているので…
0491shige
NGNGもともと人口が少ないのと、navi2chで満足な人間が多いだけだろ。
0492デフォルトの名無しさん
NGNG0493Rina ◆tI333vNE
NGNGnavi2chに不満があるなら作者や関連スレに, どこがどう気に入らないのか
文句をいうって手がある. フリーなんだから開発者にフィードバックしなきゃ駄目だよ.
私もnavi2ch使ってるけど, 別に不便は感じない. 機能的には
問題ないしキーバインドが気に入らないならカスタマイズすればいいし.
0494デフォルトの名無しさん
NGNG0495デフォルトの名無しさん
NGNGgcc で C に落としてから、存分に呼んで下さい
0496デフォルトの名無しさん
NGNGf2cだろ
0497デフォルトの名無しさん
NGNGgcc = GNU Compiler Collection だから、その中の g77 を使えってことだろう。
その意味では>>495は間違ってはいないのかも。
でも>>496の方がえらい。
0498デフォルトの名無しさん
NGNGFortran compilerはどこの奴使ってるか書かないと…
0499デフォルトの名無しさん
NGNGWinのGetCurrentDirectoryみたいな関数が欲しいんですけど。
dirent?
0500デフォルトの名無しさん
NGNGsystem( "pwd");
0501デフォルトの名無しさん
NGNG0502デフォルトの名無しさん
NGNGthanx!
getcwdの方を使おうと思います。
0503デフォルトの名無しさん
NGNG思っていたのは間違いですか?
子プロセス起動前にmalloc()で獲得していたメモリやfopen()していたファイルを、
子プロセス側で終了時にfree()やfclose()する必要はないのですか?
上司に「そんなことをしてはいけない」と言われました。
0504デフォルトの名無しさん
NGNG> fork()で起動した子プロセスは、親プロセスのリソースのコピーを引き継ぐと
> 思っていたのは間違いですか?
あってる。
> 子プロセス側で終了時にfree()やfclose()する必要はないのですか?
必要はない。プロセスが終了すれば、全部 OS の手によって後始末されるから。
0506デフォルトの名無しさん
NGNG0507デフォルトの名無しさん
NGNG0508503
NGNG>505
お答え、どうもありがとうございます。大変参考になりました。
今回のケースは、Cで作ったCGIから子プロセスを起動して、その子プロセスは
CGIが終了しても動いているものなのです。
デーモンではなく、処理が終われば戻るのですが。
0509503
NGNGすいません、間違えました。
処理が終われば、戻るのではなく、終わるのでした。
0510デフォルトの名無しさん
NGNGデーモンの場合も、親プロセスとの寿命の関係によっては微妙。親の方が
長生きするなら free() や close() 呼んでも意味無い可能性が高い。
とくにメモリに関しては OS の仮想記憶が copy-on-write を実装してある
場合、下手に free() すると余計な copy が発生するし。
0511デフォルトの名無しさん
NGNGUNIXと旧Macとwindowsで動くGUIアプリ作る場合って、
Javaしかないんですかね?
unixとwindowsだけならC++/Qtでいけますよね、
でもマックを含むとなると…
0512shige
NGNG0513デフォルトの名無しさん
NGNG0514デフォルトの名無しさん
NGNG今までの9.xとかじゃ無理だよね多分
0515デフォルトの名無しさん
NGNGmacperlから使うんだよね、
ちゃんと動くかなー
…って、やってみればいいんだけど。
サンクスコ。
…Javaはアリなんだよね?
0516shige
NGNGが、Windows版は日本語つかえないはず。
unix版はgtk版は使えるだろうな。
mac版で日本語が通るかは知らない。
0517デフォルトの名無しさん
NGNGフォントのややこしさが異常
0519デフォルトの名無しさん
NGNGgcc -o foo foo.c -la -lb -lc
なら通るのですが( a, b, c は適当なライブラリ名です ), 順番を変えると
gcc -o foo foo.c -lc -lb -la
undefined reference to `.....' エラーが山ほど出るのですが…。
こういうものなんでしょうか?
順番を考えるの面倒なので、前者でも後者でもエラーが出ないようにしたいのですが
良い方法はありますでしょうか?
0520デフォルトの名無しさん
NGNGgetenv()だろ
gcc -o foo foo.c -lc -lb -la -lc -lb
0522デフォルトの名無しさん
NGNGそういうものです。リンクするライブラリ間に依存関係がある場合 (libc が liba を
使ってるとか) には、順序を間違えると解決できないシンボルが残ってしまう。
0523519
NGNGウチの gcc では見た感じ末尾から先頭のほうに向かってファイルを
解決しながらシンボルを登録していくような感じでした。
これで1時間くらい悩んでしまいました。(苦笑)
0524デフォルトの名無しさん
NGNGgcc(というか伝統的unixのld?)は昔からこうだねえ
ダサいというかなんと言うか・・
0525デフォルトの名無しさん
NGNGいろいろトレードオフがあるから、仕方ないっちゃあ仕方ない。
0526デフォルトの名無しさん
NGNG0527デフォルトの名無しさん
NGNGワロタ
0528デフォルトの名無しさん
NGNGっつか、それじゃ解決しないだろ。オブジェクトファイルにばらして lorder かけた
上で libd 作るならともかく。
0529デフォルトの名無しさん
NGNG素直に再設計した方が後々楽になると思われ
0530デフォルトの名無しさん
NGNG0531デフォルトの名無しさん
NGNG2000年問題のときもそうだったでしょ?
0532デフォルトの名無しさん
NGNGどうせ 2038 年には現場に居ないしね、俺たち。
0533デフォルトの名無しさん
NGNG案外昔の開発環境を知る人がいなくなって駆り出されるかもよ。
かつてのCOBOL技術者みたいに
0534デフォルトの名無しさん
NGNGとりあえずプログラム書く時はtime_tがintより大きい可能性があることを念頭に
置いとけばいいんじゃないかな。
0535デフォルトの名無しさん
NGNG0536デフォルトの名無しさん
NGNG・・・まさか自分で全て実装してるなんてこと・・・ないですよね?
0537デフォルトの名無しさん
NGNG0538536
NGNG使いたい関数名がわかってる場合はそれで良いんでしょうが、
何となく「こんな機能の関数ないかな〜?」って時はどうするんですか?
0539デフォルトの名無しさん
NGNG# ちなみに俺は学生の頃SunOSのmanual全巻を読破した。あれはいいぞ。
0540デフォルトの名無しさん
NGNGC++ならSTL一覧表か関連URIとか
JavaならSunのSDKドキュメント
http://java.sun.com/j2se/1.4/ja/docs/ja/index.html
0541デフォルトの名無しさん
NGNG.aファイルって何ですか?
0542デフォルトの名無しさん
NGNG0543デフォルトの名無しさん
NGNGあぁ、それっぽい名前適当に入れたらビンゴだったりするね。
0544デフォルトの名無しさん
NGNG拡張子辞典(http://www.jisyo.com/viewer/)より、
「アセンブラ言語のソースファイル」だそうだ。
漏れの知っているのとは違うけどな。
0546
NGNGできるだけ簡単にウィンドウ出せるやつが希望です。
0547名無しさん@カラアゲうまうま
NGNGQt か GTK+
0548デフォルトの名無しさん
NGNGおもしろそうなのは Qt。
MFC みたいなのは Gtk。
簡単そうなのは Kylix。
さて、最後に笑うのは?
0549デフォルトの名無しさん
NGNG窓を出すだけで良いなら Tcl/Tk が最も楽だとは思うが。ちょっと手の込んだ
プログラムを書こうとすると Tcl っつーのに嫌気がさすけど(w
0550デフォルトの名無しさん
NGNGTcl/Tk で窓だすのってどんな感じ?
Athena はこんな感じ... widget が無いと窓が出ない?
#include <stdio.h>
#include <stdlib.h>
#include <X11/Shell.h>
#include <X11/Xaw/Label.h>
#include <X11/Xaw/Form.h>
Widget main_wind;
int main(int argc, char **argv)
{
XtAppContext app_context;
Widget toplevel;
Widget label1;
toplevel = XtAppInitialize(&app_context, "XSample", NULL, 0, &argc, argv, NULL, 0, 0);
XtVaSetValues(toplevel, XtNtitle, "サンプル", NULL);
main_wind = XtVaCreateManagedWidget("main_wind", formWidgetClass, toplevel, NULL);
label1 = XtVaCreateManagedWidget("label1", labelWidgetClass, main_wind, NULL);
XtRealizeWidget(toplevel);
XtAppMainLoop(app_context);
return 0;
}
0551デフォルトの名無しさん
NGNGgoogle 様のお告げによると、Hello World はこんな感じだそーだ。
#!/usr/local/bin/wish
button .hello -text "Hello, World!" -command { exit }
pack .hello
0552デフォルトの名無しさん
NGNGTcl って全く知らんのだけど、これって
% wish hoge
でいいの?
% wish
で出て来る窓ってなんだろ?
ググレってか? (w
0553777
NGNGそんなにややこしいんだったらMFC覚えたほうがましでは・・
C++知ってればかなり楽だと思うけど←MFC
0554デフォルトの名無しさん
NGNGJava2
0555デフォルトの名無しさん
NGNG元の質問の >>546 は *UNIX* でって言っているから、MFCはダメだろう。
>>546
FOXとかFLTKとかいうのもあるらしいが俺はGUIプログラムしたことないから
どんなもんか知らん。
0556デフォルトの名無しさん
NGNGGtk
Kylix
この中でCかC++使えるのはどれ?
やっぱKylixはO-Pascalでしょ?
0557デフォルトの名無しさん
NGNGTk を使うヤツだと
- Schme + Tk の STk (snow)
- Perl/Tk
- Ruby/Tk
なんかもあるやね。あとは smalltalk 系で Squeak とか。
0558デフォルトの名無しさん
NGNGgoogle にはお伺い立てましたか?
0559デフォルトの名無しさん
NGNGMFC は楽じゃぁないよ。
>>556
Kylix 以外は C++
Qt が直感的で分かりやすいと思う、が人気はどうかな?
0560shige
NGNGQt -- C++
Gtk -- Eiffel,C,C++,Ruby,Gtk.Python,Scheme,C# etc...
Kylix -- O-Pascal,C++(>kylix3)
0562shige
NGNGschemeはguile-gtkみたいに。
0563棄教者 ◆witdLTi2
NGNGプログラムを書いています。
カレントディレクトリを取得したいのですが、
MSDN ライブラリ Visual Studio には getcwd でなく _getcwd が書かれています。
google で getcwd POSIX ANSI で探すとヒットしまくりです。
ちなみに VC で getcwd (アンダーバーがついていない) が動きました。
ボクは getcwd と _getcwd のどちらを使うといいでしょう。
0564デフォルトの名無しさん
NGNGgetcwd() で良いんじゃないの?
VC だと ANSI 標準の関数と Win32 API は _ なしの名前が、ANSI 非標準の関数は
_ つきの名前が標準的に使われている。ただ、それだと UNIX 系のプログラムを移植
するときに面倒なんで、OLDNAMES.LIB をリンクすることで _ なしの名前でも呼べる
ようになる。
0565デフォルトの名無しさん
NGNGFreeBSD4.6.2 にて、MD5Init() や MD5Update() 等を使用するプログラムを作りました。
これを cygwin でも使いたいと思ったのですが、MD5〜() のリンクが上手く逝きません。
プログラムのソースは1つなので、g++ にリンクもさせています。
-lmd5 を指定しています。
cygwin でコンパイルする時には、
”openssl/md5.h よりも先に openssl/e_os.h をインクルードする”で間違っていませんか?
根拠は、objdump による /usr/lib/libmd5.a のシンボルの出力結果に _MD5Init 等がある事です。
cygwin で動く libmd5.〜 を使うアプリケーションの名前でも構いません、
何方かご教授をお願いします。
0566デフォルトの名無しさん
NGNGg++でcompileしてるの?
ちゃんとextern "C"されてる?
http://www.parashift.com/c++-faq-lite/mixing-c-and-cpp.html
0567デフォルトの名無しさん
NGNGエラーメッセージを Copy & Paste しようよ。
0568565
NGNG>>266
/usr/include/openssl/md5.h では、__cplusplus が定義されている時は、
MD5〜() の extern が extern "C"{ から } で挟まれているのと、
呼び出し個所のアセンブラの call のシンボルには、
引数のアレは付いていなかったので、その問題ではないと思っています。
>>567
失礼致しました。。。
/cygdrive/f/tmp/ccliEcte.o(.text+0x261):crackseed.cpp: undefined reference to `MD5Init'
/cygdrive/f/tmp/ccliEcte.o(.text+0x270):crackseed.cpp: undefined reference to `MD5Update'
/cygdrive/f/tmp/ccliEcte.o(.text+0x285):crackseed.cpp: undefined reference to `MD5Final'
/cygdrive/f/tmp/ccliEcte.o(.text+0x41e):crackseed.cpp: undefined reference to `MD5Init'
/cygdrive/f/tmp/ccliEcte.o(.text+0x435):crackseed.cpp: undefined reference to `MD5Update'
/cygdrive/f/tmp/ccliEcte.o(.text+0x44a):crackseed.cpp: undefined reference to `MD5Final'
collect2: ld returned 1 exit status
0569デフォルトの名無しさん
NGNG#define NO_MD5
#include <openssl/e_os.h>
#undef NO_MD5
#include <openssl/md5.h>
こうしないと、md5.h の MD5_Init が MD5Init にならないからです。
/lib/libmd5.a の中は MD5_Init ではなく MD5Init なので、こうしました。
しかし、色々と調べる内に NO_MD5 は、文字通り No MD5 だと言う事が分かりました。
レスを頂いたのに、今頃になって申し訳ないのですが、
どうも僕は cygwin での MD5〜() の使い方を勘違いしている様な気がします。
cygwin でも動く、/lib/libmd5.a 等を使用する、良いサンプルがあれば良いのですが、
ぐぐっても漠然とし過ぎていて、僕の知識では絞り込めませんでした。
端的なヒントでも、良いサンプルと成り得る tar ball のファイル名だけ構いません、
宜しくお願いします。
0570デフォルトの名無しさん
NGNG> こうしないと、md5.h の MD5_Init が MD5Init にならないからです。
> /lib/libmd5.a の中は MD5_Init ではなく MD5Init なので、こうしました。
つーか、library archiveとheaderは同じpackage由来のものを組み合わせよ。
crackseed.cppは、compile時にもwarningあるんじゃねーか?
関数の暗黙の型宣言とか。(しかしなんて名前のファイルだ…)
0571デフォルトの名無しさん
NGNG>つーか、library archiveとheaderは同じpackage由来のものを組み合わせよ。
/usr/include/openssl/ ですから OpenSSL から探せそうですね。
その線で追って見ます。
>crackseed.cppは、compile時にもwarningあるんじゃねーか?
>関数の暗黙の型宣言とか。(しかしなんて名前のファイルだ…)
いえ、warning は全て潰しました。
暗黙の型宣言の方は、warning ではなく error になるので、色々と小細工していました。
慌ててたのでファイル名とかを伏せ忘れますた。鬱。。。
0572565
NGNG/usr/include/openssl/md5.h の MD5_Init() とかは /usr/lib/libssl.a にあったんですね。。。
一方、/usr/lib/libmd5.a は w3c-libwww-devel の物で、
FreeBSD の libmd.* に相当する様な物ではなかったんですね。
/usr/lib/libmd5.a を見て、cygwin でも MD5Init() が使えると思い込んだのが原因でした。。。
>>566様、>>567様、そして特に>>570様、おかげさまで MD5_〜() で先に進めそうです。
ありがとう御座いました。
0573566=570
NGNG> 暗黙の型宣言の方は、warning ではなく error になるので、
ああ、C++だからerrorか…
> 色々と小細工していました。
それが混乱の原因。Compilerを信ぜよ。
けど、md5(3ssl)には-lsslって書いてないね。混乱納得。
0574565
NGNG>それが混乱の原因。Compilerを信ぜよ。
はい、Compiler だけではなく、ヘッダも信じる様にします。
お蔭様で [ ほげほげ ] 出来る様になりました。
ありがとう御座いました。
0575565
NGNG_MD5_Init() 等を外部に公開しているのは、libssl.a ではなく、libcrypto.a の方でした。
さっきまで OpenSSL のライブラリを全部(-lssl -lcrypto の2つ)指定していたのと、
objdump -t /lib/libssl.a で _MD5_〜 を見つけて、こっちだと思ったのが原因です。。。
厨丸出し。。。鬱出汁脳。。。
0576デフォルトの名無しさん
NGNG上手くイベントが起きてくれません。(key_*_eventが起きない)
int main(int ac, char **av) {
GtkWidget *window, *draw, *box;
gtk_init(&ac, &av);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_signal_connect(GTK_OBJECT(window), "destroy",
GTK_SIGNAL_FUNC(gtk_exit), NULL);
gtk_container_border_width(GTK_CONTAINER(window), 100);
box = gtk_event_box_new();
gtk_container_add(GTK_CONTAINER(window), box);
gtk_widget_show(box);
draw = gtk_drawing_area_new();
gtk_widget_set_events(draw,
gtk_widget_set_events(draw,GDK_EXPOSURE_MASK|GDK_KEY_PRESS_MASK|GDK_KEY_RELEASE_MASK);
gtk_drawing_area_size(GTK_DRAWING_AREA(draw), 100, 100);
gtk_container_add(GTK_CONTAINER(box), draw);
gtk_widget_show(draw);
gtk_signal_connect(GTK_OBJECT(draw), "expose_event",(GtkSignalFunc)expose_event, NULL);
gtk_signal_connect(GTK_OBJECT(draw), "configure_event",(GtkSignalFunc)configure_event, NULL);
gtk_signal_connect(GTK_OBJECT(draw), "key_press_event",(GtkSignalFunc)key_press_event, NULL);
gtk_signal_connect(GTK_OBJECT(draw), "key_release_event",(GtkSignalFunc)key_release_event, NULL);
gtk_widget_show(window);
gtk_main();
}
0577576
NGNGすがkey_press_eventシグナルをdrawing_areaでは起こせないんでしようか?
(実際にコードを追加してみましたが起こっていないようです)
0578デフォルトの名無しさん
NGNGkey_press_eventはgtk_window_newで作られるウィジェットではちゃんと発行される
ので
draw_areaを大域変数にしてやってkey_press_eventが発行された時にkey_press_event
コールバックの中でdraw_stringしてみたらでけた。
0579デフォルトの名無しさん
NGNGバイナリができません。cygwin\以下を全て削除して
再インストールしても駄目でした。何がいけないのでしょう?
ちょっと前のバージョンではできていました。
bash-2.05b$ cat hello.c
main(){puts("hello.c");}
bash-2.05b$ gcc hello.c <- エラー無し
bash-2.05b$ ls
hello.c <-a.exeができていない
bash-2.05b$
0580デフォルトの名無しさん
NGNGとりあえず gcc -v で、実際に何が起きてるかチェック。
0581デフォルトの名無しさん
NGNG0582566=570
NGNGUNIX Programmer's Supplementary Documents Volume I, 17. M4より
The M4 macro processor is an extension of a macro processor called M3
which was written by D. M. Ritchie for the AP-3 minicomputer; M3 was
in turn based on a macro processor implemented for [1]. Readers
unfamiliar with the basic ideas of macro processing may wish to read
some of the discussion there.
M4 is a suitable front end for Ratfor and C, and has also been used
successfully with Cobol. Besides the straightforward replacement of
one string of text by another, it provides macros with arguments,
conditional macro expansion, arithmetic, file manipulation, and some
specialized string processing functions.
[1] B. W. Kernighan and P. J. Plauger, Software Tools,
Addison-Wesley, Inc., 1976.
ベル研とバークレイ校の人たちが書いた
これらのDocument群はめちゃくちゃ質が高くてお勧めです。
0584デフォルトの名無しさん
NGNGネットで調べると、sockaddr_in構造体の中に
sin_familyメンバが存在するようですが、
netinet/in.hを見てみても、そういう記述が無いのですが、
どこに書いてあるんでしょうか?
0585デフォルトの名無しさん
NGNG/usr/includeディレクトリ以下をgrepしてみれば?
0586デフォルトの名無しさん
NGNGLinuxなの?
__SOCKADDR_COMMON (sin_); はあるでしょ?
__SOCKADDR_COMMON()は、/usr/include/bits/sockaddr.hに。
このマクロはあんまり意義を感じないけど、
field名がfamilyそれぞれで違うPOSIXもどうかね…
0587デフォルトの名無しさん
NGNGC言語でそれをするにはどのようにすれば良いのでしょうか?
0588デフォルトの名無しさん
NGNG0589デフォルトの名無しさん
NGNG0590デフォルトの名無しさん
NGNGLinuxについては、JFを見れば?
0591デフォルトの名無しさん
NGNG辛いです(w
>>589
/dev/ttyS0について調べたらなんとなく見えてきました。ありがとうございます。
>>590
見てみます。
0592デフォルトの名無しさん
NGNG0594デフォルトの名無しさん
NGNGFILE* fp = tmpfile();
int fd = fileno();
int mfd = dup(fd);
fclose(fp);
close(fd);
// 以降mfdを使い回す。
こんな方法は有りでしょうか?(エラーチェックとかはおいといて…)
GNU C++ では、ちゃんと動いているように見えるのですが大丈夫なの?
0595デフォルトの名無しさん
NGNG動作自体には問題無いだろうけど、何がしたいの?
0596デフォルトの名無しさん
NGNG"foo"を含む全ての行をgrepするにはどうすればいいですか?
0597デフォルトの名無しさん
NGNG0598596
NGNGコマンドラインで実行したいです。
0599デフォルトの名無しさん
NGNGfind 使うか grep foo */*.cでも試してみたら?
0600596
NGNGgoaround grep foo *.c
のような各ディレクトリを巡回する
コマンドがあればいいんですが...
0601デフォルトの名無しさん
NGNG0602デフォルトの名無しさん
NGNG0603デフォルトの名無しさん
NGNGman find
0604デフォルトの名無しさん
NGNGシェルはプログラミングとは違うだろ?
0605デフォルトの名無しさん
NGNGgrep foo `find . -name '*.c'`
0606デフォルトの名無しさん
NGNG>>601-602 とか zsh% grep foo **/*.c は展開してから grep なので *.c が多いと無理
>>604 むしろ板違い?
0607デフォルトの名無しさん
NGNGシェルプログラミング って言いませんか?
そんな本も出てるけど
0608デフォルトの名無しさん
NGNG何がしたいのかっつ〜と…
class tmpfilebuf : public filebuf
{
public:
tmpfilebuf()
{
FILE* fp = tmpfile();
int fd = fileno();
int mfd = dup(fd);
::fclose(fp);
::close(fd);
this->attach(mfd);
}
tmpfilebuf(const tmpfilebuf& src)
{
int mfd = dup(src.fd());
this->attach(mfd);
}
virtual ~tmpfilebuf()
{
::close(this->fd());
}
};
みたいな?
0609608
NGNGclass tmpfilebuf : public filebuf
{
public:
tmpfilebuf()
{
FILE* fp = tmpfile();
int fd = fileno();
int mfd = dup(fd);
::fclose(fp);
::close(fd); // これは不要かもしれない…
this->attach(mfd);
}
tmpfilebuf(const tmpfilebuf& src)
{
int mfd = dup(src.fd());
this->attach(mfd);
}
virtual ~tmpfilebuf()
{
::close(this->fd());
}
};
0610デフォルトの名無しさん
NGNGこの板で「UNIXプログラミング」っつったらCとかC++使ってUnix系に依存した
プログラム書く事じゃねーの?スレの雰囲気読めば分かると思うが…。
シェルスクリプトはUNIX板にスレがあるからそっちでやってくださいな。
ていうか、findとgrep組み合わした程度でシェルスクリプトと言える程のもんか?
それくらいの使い方、日常で使ってるじゃん。パイプとかと変わらんし。
ま、何にせよ板違い。
0611デフォルトの名無しさん
NGNGお前はsystem()禁止!!
0612デフォルトの名無しさん
NGNG標準入力にselectをしたいのですが、うまく行きません。やりたいコトは、
ユーザに入力されたらソケットに
ソケットに入力されたら標準出力に
データを送りたいのです。で、ユーザの入力をselectで知ることはできるかと思ったんですが…。
0613デフォルトの名無しさん
NGNG0614デフォルトの名無しさん
NGNGどうやってどうなったのか書いてくれよう・・・
0615デフォルトの名無しさん
NGNG0616612
NGNGすみません。けど、問題は「標準入力にselectできない」だったので、
ネットワークスレの方ではないと思ってこっちにしますた。
>>614
あ、ソースですか?気が利かなくてすみません。
>>615
ありがとうございます。自分の環境でもゴニョゴニョやってみました。
で、重大な間違いに気が付きました。
……俺、stdinじゃなくてstdoutにselectしてたんでつ……そりゃできねぇよ。
ごめんなさい、逝ってきます。
0617デフォルトの名無しさん
NGNG>>594でも問題ないが、mkstemp(3)を使えばより簡単。
準拠
BSD 4.3, POSIX 1003.1-2001
0618デフォルトの名無しさん
NGNG0619デフォルトの名無しさん
NGNGそれじゃってんで、「UNIXシェルプログラミング質問スレ」ってスレ立てて、「UNIXプログラミングでやりゃ良いだろっ」て言われてしまうのに100カノッサ♪
0621デフォルトの名無しさん
NGNGOSがやってくれるんだから自前でやる必要ないじゃん。
0622620
NGNG>594
もとい
>617
でした。
0623名無しさん@Emacs
NGNGUNIX板でもシェルスクリプトは基本的にくだ質扱いだよ。
あれをプログラミングとかいうならバッチファイルも
プログラミングなの?そうじゃないよね。
0624デフォルトの名無しさん
NGNGシェルスクリプトもワンライナーもプログラミングだと思うが
0625デフォルトの名無しさん
NGNG0626624
NGNG0627デフォルトの名無しさん
NGNG激シク同意
0628デフォルトの名無しさん
NGNGどうでもいいが、fclose()したあとでclose()はいらんだろ。
あとfileno()の引数忘れてるぞ。
0629デフォルトの名無しさん
NGNGexecじゃないのか?systemは使ってないだろう…。
>>625
HTMLだけでWebアプリって言うのか?CGIやPHPと組み合わせてWebアプリなんじゃ…。
少なくとも、シェルスクリプトはこっちではない気がするが。
0630デフォルトの名無しさん
NGNGごにょごにょするときって、 system()とか、popen() 使って、テキストファイルから
必要な部分を切り出す。ってのをよくやっちゃいます。
だって、めんどくさいんだもん。
0631デフォルトの名無しさん
NGNG結局はすべての処理をawkやsedで書いた方が速いという罠?
0632630
NGNG早く作れる部分はそっちに任せてスピードが必要な部分とか、きっちり作りこまなければいけない
部分は、Cなり、C++なりのコンパイラを使う。
んで、スクリプトとのI/Oに、system() やら、popen() を使うっていうスタイルも
UNIXらしいといえば、UNIXらしいとおもいまふ。
漏れ楽したいだけかも。
0633デフォルトの名無しさん
NGNG0634デフォルトの名無しさん
NGNGHSP for UNIX作ってからいえ(藁。
0635デフォルトの名無しさん
NGNGそれだ!
ナイスアイディアです。
今年のソフトウェア大賞はいただきだな。
0636デフォルトの名無しさん
NGNGプロセスの使用メモリ量を調べたいのだが、
int getrusage(int who, struct rusage *usage);
ってものの、rusage構造体のどのメンバーを
調べればよいか知っている方いませんか?
manみても、よくわからんし、
ru_maxrssかなぁなんて思っていたのだが、机上計算と違う値を返すし。
0637デフォルトの名無しさん
NGNG0638デフォルトの名無しさん
NGNG0639デフォルトの名無しさん
NGNGHSPスレでは怖くて聞けんのでちょっと教えてくれ。
あそこでBNFといってるのはBackus-Naur Form以外の何かなのか?
0640デフォルトの名無しさん
NGNG机上計算をどうやったのか
0641デフォルトの名無しさん
NGNGgcc3以上じゃないとだめですか?
0642デフォルトの名無しさん
NGNGそんなことはない。
0643デフォルトの名無しさん
NGNG$ gcc -v
Reading specs from /usr/lib/gcc-lib/i586-redhat-linux/2.95.3/specs
gcc version 2.95.3 20010315 (release)
$ uname -sr
Linux 2.4.20-pre11
ですがなにか?
0644デフォルトの名無しさん
NGNG0645デフォルトの名無しさん
NGNGヘッダーを読み込んでストリーム展開しているのですが、
展開前から展開後のファイルサイズを知る術はありませんでしょうか。
gzipファイルから直接読んでいるわけではないので
gzseekでファイルの終端にもっていってgztellする手も使えずにいます。
gzipファイルのヘッダーは、随分前からちょくちょく調べていたのですが、
どうにも要領が悪いみたいで
しっかりした情報を得られずきちんと把握出来ていません。
ヘッダーのサイズ分読み飛ばしだとかの必要最低限のものしか見付からなくて…。
もしもヘッダーを詳しく解説しているページがありましたら
教えていただけると幸いです。
スレ違いでごめんなさい。
もしもっと適切なスレがありましたら、よろしければ教えてください。
0646デフォルトの名無しさん
NGNGman zlib すると参考資料へのポインタがいくつか出てくるよ。
RFC1950-1952にgzipのフォーマットが載ってる、とのこと。
0648デフォルトの名無しさん
NGNGGetPrivateProfileみたいなAPIってありませんか?
0649rubyist@カラアゲうまうま
NGNGKConfig
自分で書く
0650デフォルトの名無しさん
NGNG0651デフォルトの名無しさん
NGNG色々調べたのですが、Win/Unixを共通のコードにしよ
うと思い、全部自分で書くことにしました。
0652デフォルトの名無しさん
NGNG0653デフォルトの名無しさん
NGNG0654デフォルトの名無しさん
NGNGcd %HOME% がホームディレクトリ
unixの場合
ログイン後にpwdした結果がホームディレクトリ
0655デフォルトの名無しさん
NGNGありがとう
各メンバーというか,ユーザーに割り当てられた先頭のフォルダという事ですね?
winにもあったのか
0656名無しさん@カラアゲうまうま
NGNGWin NTだと%HOMEDRIVE%%HOMEPATH%ってのがデフォルトで設定される。
9xだと…My Documentsが一番近いのかなぁ。
0657デフォルトの名無しさん
NGNGset datetoday=`date`
echo "The date is $datetoday."
という部分で失敗します。
dateの変数が表示されないのですが、↑は間違っていますか?
0658デフォルトの名無しさん
NGNGsetじゃないねぇ。見本なのにsetなのかよ…。
0659デフォルトの名無しさん
NGNGcsh/tcsh ならあってる。sh/bash/zsh だと set 要らない。
http://x68000.startshop.co.jp/~68user/unix/shell-variable.html
0660657
NGNG>>659さん
レスありがとうございました。
プログラム全体を見たところcshのようですが、学校のサーバーが定期メンテ中で接続できないので
まだ何も確認してません。
↓に見本のコピペを張りますので、おかしなところを教えて欲しいです。
0661657
NGNG#!/bin/csh
#
# Example 2
#
# More on echo. (echoのさまざまな使用例)
#
echo “You can also use quotation marks.”
# Note the space after the quotation mark and before second.
# (引用符とsecondの間のスペースに注意)
echo –n “first message”
echo “ second message”
# Use a command with echo. (echoの引数の中でコマンドを使用)
echo “The current directory is `pwd`.”
# Use a variable. (変数を使用)
set variable1=”Yow, are we having fun yet?”
echo “The variable is $variable1.”
# Set a variable to a command output (コマンドの出力に変数を設定)
set datetoday=`date`
echo “The date is $datetoday.”
です。多分[Yow]は[You]かと…(汗)
お願いします。
0662デフォルトの名無しさん
NGNG記号が変。
0663デフォルトの名無しさん
NGNG“”の事ですか?
実際はTera Term上で手打ち入力したので大丈夫だと思うのですが、
見本はWordファイルでした。
教師は「コピペじゃ動かないから」
と嬉しそうでしたよ・・・。
0664657
NGNG0665デフォルトの名無しさん
NGNGecho -nの-も実体参照になってる。
>661はWordから貼ったのか? 自分で打ったやつを貼れよ。
じゃないとタイプミスとかあっても分かんないだろ。
0666657
NGNGすみません。前述の通り、学校のサーバーにアクセスできない状況なので
自分のファイルにアクセスできません。
アクセス出来次第そうさせていただくつもりですが、
>>658-659さんあたりのsetがどうのとかがわからないので教えていただけたらな、と・・・
0667デフォルトの名無しさん
NGNG少なくとも、>657の二行をファイルに落してcshに喰わせた限りじゃ、正しく
動く。たぶん変数名を打ち間違ってるとかじゃないの。
0668657
NGNGすみません、「さん」わすれてました
>>667さん
そうですか。
今朝4時まで色々試して
set datetoday=`date`
echo "The date is $datetoday."
だけのファイルを実行したりしましたが、結果は
The date is .
だったと思います。後でもう一度試してみます。
0669デフォルトの名無しさん
NGNGbash, tcsh, zsh で問題なく動いたよ。
$ set datetoday=`date`
した後で、
$ echo $datetoday
$ echo ${datetoday}
$ echo "$datetoday"
$ echo "${datetoday}"
してみてもダメって事だよね?
問題がありそうな時は、打ち間違いを疑うべし。
手打しないでコピペするのは基本。と、偉そうに逝っとく。
0670657
NGNG[$ set]なんですか!?
授業担当の教師がクソで、プログラム文の解説を一切していないので
669さんの書いていただいたものの意味的な違いもわからないです・・・。
まさかとは思っていたのですが、どうも今日明日サーバーが働いてくれない
ようですので、接続でき次第試させていただきます。
0671デフォルトの名無しさん
NGNGプロンプト`$'系は
export datetoday=`date` か, そのまま datetoday=`date`
0672デフォルトの名無しさん
NGNGその程度のシェルスクリプトくらいならcygwinでも充分試せるから、それで試してみるというのもあり。
つーか課題でcshって当たりで既にクソ。
0673デフォルトの名無しさん
NGNGあ、ごめん '$' じゃなくて '>' か。プロンプトの事ね。
csh 系使ってないんでこんがらがっちゃった。
> set datetoday=`date`
した後で、
> echo $datetoday
> echo ${datetoday}
> echo "$datetoday"
> echo "${datetoday}"
プロンプトが > って出てくるでしょ? あれのこと。
入力する必要は無いです。で、${foo} ってのは変数名の
非省略形だよ。$foo と ${foo} は同じ意味です。
最初のうちは上手くいかなかったら打ち間違い、パスが
通っているか、man にどう書いてあるかを確認すべし。
と、また偉そうに書いてしまった。
0674657
NGNGありがとうございます。
恥ずかしいんですけど、これでも大学工学部の必修授業です・・・。
今cygwinを試すためDLしてます。88%で5分とまってますけど。
0675デフォルトの名無しさん
NGNGBSD 使いなんじゃない? bash? あんなモン認めん! みたいな。
zsh? そんなファンシーなもの使えるか! みたいな。
>>670
シェルスクリプトの勉強するなら B Shell 系使った方が良いよ。
sh とか bash とか zsh ね。
0676デフォルトの名無しさん
NGNGBSDもいいんだけど、なんでいまだにcshなんぞに拘るのかが分からんよ。
実のところ一月くらいしか使ったことないけど、昔のSunOSで。
0677657
NGNG1.
$ cat > a
set datetoday=`date`
echo $datetoday →→表示されず
同様に
echo ${datetoday}
echo "$datetoday"
echo "${datetoday}" →→表示されず
2.
$ cat > a
datetoday=`date`
echo "$datetoday" →→成功
でした。もしかしたら学校のシェルも"set"要らないのかもしれないですね。
>>675さん
多分その教師は電気回路専門でUNIXはそんなにできないと思います。
生徒の質問に答えるのはアシスタントの学生ですし。
0678デフォルトの名無しさん
NGNG>>661の最初の行をいれてみろ。ただしcygwinはtcshしかないので
#!/bin/tcsh
その二行だけだと/bin/shが動く。
もしくはこうしる。
$ cat > a
set datetoday=`date`
echo $datetoday
$ tcsh a
0680デフォルトの名無しさん
NGNGwhich tcsh
whereis tcsh
ls -l /bin/tcsh
echo $PATH
0681デフォルトの名無しさん
NGNGtcshインストールしてないんだろ。
してればcygwinディレクトリの下の/etc/setupにtcsh.lst.gzってファイルがあるはず。
0682デフォルトの名無しさん
NGNGmld とか dos minix も良いよ。
と言ってみたかっただけです。
0683デフォルトの名無しさん
NGNG↓
dup2→exec
こんな感じで、子プロセスをパイプにつないでる実装を、
forkをやめてspawn使う実装に置き換えることはできるのでしょうか?
0684デフォルトの名無しさん
NGNGspawnもfork使ってんだけど
0686デフォルトの名無しさん
NGNGつーかそもそも、UNIXで新しくプロセスを作る手段てのはfork以外には基本的
に存在しないわけよ。spawnもfork&execのラッパー。ただしパイプを操作した
りなんだりってのを全部インターフェースに入れちゃうとごちゃごちゃしてし
まうんで、そこまでは提供しませんてこと。
Windowsを知ってるなら、CreateProcess()のパラメータの山を考えてみればい
い。
0687683
NGNGspawn使ったら効率があがるかもしれないのは、cygwinに限った話みたいですね。
うぅ、>683のやつで正解なのか・・・。
ちょっと、気味が悪い。慣れが必要ってことか。
0688デフォルトの名無しさん
NGNGあぁ、cygwinの話か。じゃプロセス周りはかなり違う。
でもやはりspawnにはstdioを繋ぎかえるようなインターフェースはない。
理由は>686。
> うぅ、>683のやつで正解なのか・・・。
> ちょっと、気味が悪い。慣れが必要ってことか。
cygwinは>683とかが動くようにするためのものだし。cygwinと普通のUNIXで動
くようにしたいなら、このへんは#ifdefかファイルで分けるしかないだろうな。
0689デフォルトの名無しさん
NGNGstd::string::c_strが渡せなかったりします。
ここはconst_castの出番として妥当でしょうか?
妥当でないとしたら、文字列リテラルもそのままではなくて、
char配列を確保して渡すべしですか?
0690デフォルトの名無しさん
NGNGc_str()はconst char*だから、そもそもその値自体のポインタは取れないだろが。
0692デフォルトの名無しさん
NGNGあんまり教条主義でいくこともないかと思われ。
0694デフォルトの名無しさん
NGNGそれに合わせるとしたらキャストするのは至極真っ当な手段だと思うんだが。
むしろconst_castは本来そういう用途を想定してると思われ。
0695デフォルトの名無しさん
NGNG> つーかargvになってるのはCのプロモーションの都合なんだから、
s/(?=になってるのは)/がchar *const*/
0696デフォルトの名無しさん
NGNGUNIXでVBが出来る方
2年くらいの経験
給与 時給 2,500円以上
通勤交通費 あり
勤務時間 09:00-18:00 休憩60分
勤務曜日 月、火、水、木、金曜日
期間 長期(3ヶ月以上) 即日 更新あり
誰か応募して真相を確かめて来い
0697デフォルトの名無しさん
NGNG0698デフォルトの名無しさん
NGNG休日の条件が詳しく書かれてないから嫌だ。
0699デフォルトの名無しさん
NGNG696 の間違い
ごめんなせい
0700デフォルトの名無しさん
NGNG( ´∀`)/<先生!こんなのがありました!
_ / / / \___________
\⊂ノ ̄ ̄ ̄ ̄\
||\ \
||\|| ̄ ̄ ̄ ̄ ̄||
|| || ̄ ̄ ̄ ̄ ̄||
http://muryou.gasuki.com/mona/
0701デフォルトの名無しさん
NGNG0702デフォルトの名無しさん
NGNGそんな僕です。
学校でSunOS+Cしかやったことありません。
一応POP3プロトコルを使って受信メール一覧表示プログラムまでは書いた事あります。
X-ToolKitとForkとシェアードメモリを使ってウィンドウ間チャット作った事あります。
0703デフォルトの名無しさん
NGNG自己紹介かい?
0704IP記録実験
NGNGhttp://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を提出することがある。
0705デフォルトの名無しさん
NGNGごめん、僕もやりました。 トリコロールとかいうやつ
0706デフォルトの名無しさん
NGNG0707IP記録実験
NGNGhttp://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を提出することがある。
0708デフォルトの名無しさん
NGNG( ;θ;)<IP録っても耳は取らないでね
0709デフォルトの名無しさん
NGNG0710デフォルトの名無しさん
NGNG(ここでnとeはfloat)数が計算結果が不安定になり最後には1に落ち着いてしまうんですがこれはなんで
起こってしまうのか教えてください、お願いします。
0711デフォルトの名無しさん
NGNGプログラムが間違っている。
n を十分低くして、ちゃんと近似できているか確認したら?
0712デフォルトの名無しさん
NGNGこの課題の目的は変数の型をfloatにすることによって計算した結果を不安定にすることが目的らしい
んですよ。nを千七百万ぐらいにしたら1になりました、その途中ではeが3,8ぐらいにまでなりました。
doubleにすると普通に2.71828・・・・となるんですが。。。。
0713デフォルトの名無しさん
NGNG0714デフォルトの名無しさん
NGNG>ところで、IPが抜かれて何か今までと変わることってあるのでしょうか?
・今までより、サーバが重くなる。
・裁判所や警察からの照会があった場合にはIPを提出することがある。
こんなところでしょうか。
89 :ひろゆき ◆3SHRUNYAXA :03/01/08 17:29 ID:rLfxQ17l
>一般人からも見れるところ? 〉記録所
既存のdatとは別に保存してるので、サーバがクラックされない限りはみれません。
ただ、既存のdatと別なので、書きこみあたりの保存容量がほぼ2倍。
0715デフォルトの名無しさん
NGNG2ちゃんねるのお勧めな話題と
ネットでの面白い出来事を配送したいと思ってます。。。
===============================読者数: 138720人 発行日:2003/1/9
年末年始ボケがそろそろ収まり始めた今日このごろのひろゆきです。
そんなわけで、年末に予告したIP記録ですが実験を開始しています。
「2ちゃんねる20030107」
こんな感じで各掲示板の最下部に日付が入ってるんですが、
20030107以降になってるところはログ記録実験中ですー。
んじゃ!
────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────
0716デフォルトの名無しさん
NGNG気兼ねなく、会社、学校、座敷牢からアクセスできないように、発信元はバリバリ記録してますです。
お気楽ご気楽に書き込まないで下さい。お約束・最低限のルールを守ったフリをして、
他人に迷惑をかけまくって騒ごういうことです。ルールを守らないと、祭りになっちゃいます
まず、他人が見て不愉快になることを書きましょう。大勢の読者がいることを意識しないでください。他には、
ひろゆきが、超・不定期にお送りする裏口ネット駄情報。2ちゃんねるヘヴォメールマガジンがあります。
0717デフォルトの名無しさん
NGNGま、1つぐらいは残るだろうが、、、
0718デフォルトの名無しさん
NGNG君は何がしたいんだい?(^_^;)
0719デフォルトの名無しさん
NGNG掲示板の一番下が「2ちゃんねる20030107a」
ってなってる板じゃなかったかな?
0720デフォルトの名無しさん
NGNG0721デフォルトの名無しさん
NGNG2ちゃん独自の削除ルールに従わねばならない法的根拠はありません。
また、2ちゃんの削除ルール自体、判決では不十分なものとされています。
■「名誉毀損を知りえた時点で削除しろなんて無茶苦茶だ!」
今回、T動物病院側は内容証明郵便でひろゆきに10日以内の削除要求しました。
2ちゃんの削除ルールに則らずとも、社会通念上においても、法的にも、これは十分な通知です。
0722デフォルトの名無しさん
NGNGそれはやふーとかでも可能だと思いますけど
0723デフォルトの名無しさん
NGNG俺はマンコとかいてるがIPとられても怖くないぞ。もし文句あってもやめないからな!!
0724デフォルトの名無しさん
NGNG883 :名無しさん :02/12/28 10:40 HOST:
メグ ◆TOKIQKfFYAさん このスレ見てるか判らないけどちょっとお呼び出しです・・・
★ボランティアさんと一緒★ Part8
http://qb.2ch.net/test/read.cgi/accuse/1039532593/563-
0725デフォルトの名無しさん
NGNG人を馬鹿にするな!
0726デフォルトの名無しさん
NGNG0727デフォルトの名無しさん
NGNG今のうちに親戚回りしておきな。
0728デフォルトの名無しさん
NGNGそれよかズボラな削除体制どーにかしろって感じだな
どさくさに紛れて都合の良い法律案を盛りこむ議会みたい
管理批判の多い板から記録してるっつーのもなんだかなあ
0729デフォルトの名無しさん
NGNG0730デフォルトの名無しさん
NGNG0731デフォルトの名無しさん
NGNG2ちゃんねるのお勧めな話題と
ネットでの面白い出来事を配送したいと思ってます。。。
===============================読者数: 139038人 発行日:2003/1/10
なにやら、連日メルマガだしてるひろゆきです。
そんなわけで、ログ記録実験ですが、いちいちサーバ指定するのが面倒なので、
全部のサーバに入れてみました。
重くなって落ちたりしてもご愛嬌ってことで。。。
んじゃ!
────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────
0732デフォルトの名無しさん
NGNG0733デフォルトの名無しさん
NGNG0734デフォルトの名無しさん
NGNG0735デフォルトの名無しさん
NGNG0736デフォルトの名無しさん
NGNGログのリンクが無い時点で
信憑性なんかほとんどゼロだろ。
0737デフォルトの名無しさん
NGNGリモートホストって、用語辞典に載ってないよ
誰かおせーて
0738デフォルトの名無しさん
NGNG0739デフォルトの名無しさん
NGNG・・・2ちゃんねるの時代も終わりに近づいてる・・・
0740デフォルトの名無しさん
NGNG0741デフォルトの名無しさん
NGNG\\ 魚津市 ワッショイ!! //
+ + \\蜃 気 楼 ワッショイ!!/+
+
. + 富■山 富■山 富■山 +
( ´∀`∩(´∀`∩)( ´ー`)
+ (( (つ ノ(つ 丿(つ つ )) +
ヽ ( ノ ( ノ ) ) )
(_)し' し(_) (_)_)
北陸の地方都市富山ワッショイ
富山ワッショイ
富山ワッショイ
コシヒカリワッショイ
蜃気楼ワッショイ
魚津市ワッショイ
0742デフォルトの名無しさん
NGNG・・・次逝ってみよう!
0743デフォルトの名無しさん
NGNG0744デフォルトの名無しさん
NGNG0745デフォルトの名無しさん
NGNG「見なかった」といわれて終わるのは証明の問題であって実体の問題ではない。
0746デフォルトの名無しさん
NGNG特定の2ch専用ブラウザと紛らわしいから。
0748山崎渉
NGNG0749山崎渉
NGNG0750デフォルトの名無しさん
NGNGどういう手順を踏めばよいのでしょうか。
既出だとは思いますがお付き合いください。
情報過多でまとまりません。
・ログファイルへの同時書き込みはlockf?セマフォ?
・書き込むごとにファイルのオープン/クローズを繰り返す?
・ログ書き用のプロセスを起動してプロセス間通信で書き込む文字を送る?
・ローテートしている最中に書き込もうとしている文字列はロストしない?
・ログデーモンを用意?
・HUPシグナルで再起動させるには再起動のコードをかく?
思いつくまま記述させていただきました。
0751デフォルトの名無しさん
NGNG速度を重視せず、お手軽に実装したいなら
> ・ログファイルへの同時書き込みはlockf?セマフォ?
> ・書き込むごとにファイルのオープン/クローズを繰り返す?
速度を重視し、実装が面倒でもよいならば
> ・ログ書き用のプロセスを起動してプロセス間通信で書き込む文字を送る?
> ・ログデーモンを用意?
正しく排他がかけられていれば、下記の事象は発生しない。
> ・ローテートしている最中に書き込もうとしている文字列はロストしない?
0752750
NGNGありがとうございます。
勉強します。
0753デフォルトの名無しさん
NGNGUNIXでしょ?
syslog(3)とlogrotate(8)とcrontab(5)とcrontabに書く若干のshell script。
自分でcode書く必要ないから、以下は蛇足だが、
>・書き込むごとにファイルのオープン/クローズを繰り返す?
排他がちゃんと行なわれていれば、全員が開きっぱなしでもかまわん。
どんどん後ろに追記されていく。
stdioのbufferingがあるから、fflush(3)してやらないと駄目だが。
> ・ローテートしている最中に書き込もうとしている文字列はロストしない?
一度オープンしたファイル(ディスクリプタ)には、
ディレクトリツリー上から消えようが、名前が変えられようが、
クローズするまで書き続けられる。だからなくならない。
書く度にディレクトリツリーから辿るわけではない。
それはopen(2)の時に一度だけ行なわれる。
0754山崎渉
NGNG0755デフォルトの名無しさん
NGNG実装の中で外部プログラムを呼び出す部分があるのですが、
そこの部分は簡単に書くと
char *cmd="...";
system(cmd);
という形で実装されています。
今回の疑問はこのcmdに渡される文字列なのですが、場所によって
二種類の渡し方をしているようです。たとえば「ls -al」を実行する場合、
ある箇所では
cmd="ls -al";
と実装してあり、また別の箇所では
cmd="exec ls -al";
と呼んでいます。
私にはこの違いがよくわからないのですが、もしかすると
実行されたシェルですでに環境が出来ていて、たとえばパスワードの
入力の必要なくコマンドが実行できる可能性がある場合などのために
execコマンドを使うことによって現在のシェルで実行させているのでは…
と予想しました。
どなたか詳しい方、正確な意味を教えていただけませんか?
よろしくお願いします。
0756デフォルトの名無しさん
NGNG> 実行されたシェルですでに環境が出来ていて、たとえばパスワードの
> 入力の必要なくコマンドが実行できる可能性がある場合などのために
> execコマンドを使うことによって現在のシェルで実行させているのでは…
execの理解が間違っています。
# UNIXのshell, DOSのcommand.com, NTのcmd.exeは、
# 常駐のサービスサーバじゃないです。
#! /bin/sh
echo "This \c"
echo "is \c"
exec echo "a \c"
echo "test."
を実行してみましょう。
常にexecを書いて問題ないです。
(一つしかprocessを起動しない場合。system(3)の引数に';'を使わない)
execを書けばprocessを一つ節約できます。
0757デフォルトの名無しさん
NGNGその例ではtestが表示されませんでした。
新しくプロセスを作らず、既存のプロセスの上で走らせるため、
そこでプログラムが終了した場合は処理が戻ってこないという事ですか?
systemを使った場合は戻ってくるのはなぜでしょう??
0758デフォルトの名無しさん
NGNG>新しくプロセスを作らず、既存のプロセスの上で走らせるため、
>そこでプログラムが終了した場合は処理が戻ってこないという事ですか?
正解。
>systemを使った場合は戻ってくるのはなぜでしょう??
manを読むと分かると思うんだけど、system()は引数のコマンドを/bin/shの
上で実行するから。
つまり、あるプロセスAの中でsystem("ls");ってやると、lsの起動時には
A→/bin/sh→ls
と3つのプロセスが動いてることになる。これがsystem("exec ls");だと、
A→/bin/sh
このshがlsに置き換わって
A→ls
となる。
0759デフォルトの名無しさん
NGNGなるほど。詳しい説明助かりました。
execを使っているところと使っていないところがあったのは、
完全にプログラマの気まぐれだったわけですね。
理解できました。ありがとうございます。
0760デフォルトの名無しさん
NGNG気まぐれだと言い切れるかは微妙。
SIGCHLDの関係なんかもあるし。
0761758
NGNGみたいなプログラムを作って、"ps"と"exec ps"とで出力を比べたら
違いが分かるのではと思ったんだが、ここで面白いことに気が付いた。
FreeBSDだと>>758に書いたようにpsの場合はプロセスが3つ、exec psだと
プロセス2つに見えるんだが、Linuxだとpsでもexec psでもプロセスの数が
変わらない。
Linuxの/bin/shはbashなんだが、bashの場合、引数に与えられたコマンドが
1つしかない場合はexec相当の動作をするようになってるようだ。
コマンドラインで bash -c "ps" と bash -c "ps;ps" の二つの出力を
比べるとよく分かる。前者は、起動したはずのbashがpsの出力に出てこない。
0762デフォルトの名無しさん
NGNGmanには、system関数はSIGCHLDをブロックする、と書いてありました。
見た感じでは単純に実行したいだけの模様ですし、
文脈的にもほぼ同じ意味で使っているので、たぶん気まぐれでしょう。
>>761
最初からメモリを効率化してるんでしょうかね。
bashのソース見てみたけれど具体的にどこでやっているのかは掴めませんでした。
0763デフォルトの名無しさん
NGNG> SIGCHLDの関係なんかもあるし。
それは何の関係よ?
0764デフォルトの名無しさん
NGNG0765デフォルトの名無しさん
NGNG別に何も考える必要は無いよ。普通にTCPだかUDP投げれば良し。
0766デフォルトの名無しさん
NGNG2つの場合:
#define max(a,b) ((a) <= (b)? (b) : (a))
3つの場合:
#define max_in_3(a,b,c) ((a) <= (b)? \
((b) <= (c)? (c) : (b)) : \
((a) <= (c)? (c) : (a)))
とかやってるんですが、これだと数が増えると面倒です。
だれかいい方法知ってたら教えてください。
別に無理にマクロじゃなくてもいいとは思いますが、
気になって。。あとマクロだと便利だし。
0767デフォルトの名無しさん
NGNG0768デフォルトの名無しさん
NGNG0769デフォルトの名無しさん
NGNG可変長引数とテンプレ使え。
768 名前:デフォルトの名無しさん :03/02/02 16:18
可変長引数とテンプレ使え。
768 名前:デフォルトの名無しさん :03/02/02 16:18
可変長引数とテンプレ使え。
768 名前:デフォルトの名無しさん :03/02/02 16:18
可変長引数とテンプレ使え。
768 名前:デフォルトの名無しさん :03/02/02 16:18
可変長引数とテンプレ使え。
768 名前:デフォルトの名無しさん :03/02/02 16:18
可変長引数とテンプレ使え。
“と”?
0770デフォルトの名無しさん
NGNGex.)
#define max3(a, b, c) (max(max((a), (b)), (c)))
#define max4(a, b, c) (max(max((a), (b)), max((c), (d))))
数が多い場合は配列に入れて、qsort()でも掛ければいいんでない?
っていうか、10も20も並べたいとは思わないっしょ。
0771デフォルトの名無しさん
NGNGあるのなら教えてください
0772デフォルトの名無しさん
NGNG0773721
NGNG過去にfork()で作った子プロセスAに対して、
親プロセスBがAccept()で取得したソケットのディスクリプタを
既存の子プロセスAに渡すことは可能なのでしょうか?
渡し方知ってる人お願いします。
0774771
NGNG0775デフォルトの名無しさん
NGNG0776766
NGNGなるほど。ありがとう。
でも、gccでマクロの展開のされ方をみてみたら
766に書いたマクロの方が770に書いてくれたものより
少し効率がいいみたいです。
# 770の方gは、max((a),(b))が2回評価されてた。
だからmax3くらいなら、770みたく再帰的に書かないほうが
いいのかな。でも4つを越えると770の方がいいですね。
>768
テンプレートってCじゃ使えないですよね。
C++使えないス。
0777デフォルトの名無しさん
NGNGfork(2)する前にaccept(2)するのが確実。
linuxだったらAF_UNIXのSCM_RIGHTSで出来そう。
未確認です。・・・移植性ってあるのかな?
0778デフォルトの名無しさん
NGNGおいおい、Cプログラミングスレに行けよ。
それから「副作用」に気をつけろ。>>766は副作用があるとまずい。
gcc依存ならブロッ(以下適当なスレで
0779デフォルトの名無しさん
NGNGXWindowsの現在の解像度ってどうやって取得すれば良いのでしょう?
xlibをベタに使ったアプリケーションを作っていて、
XCreateWindow(disp, RootWindow(disp, vinfo->screen),
0, 0,
x, y, ...); ← 画面サイズ
つまり、
全画面表示の際に、x, yに代入すべき値を知りたいわけです。
#さして深刻な問題でもないのですが、
#できないと気持ち悪くて気持ち悪くて……
当方が現在使っている環境は、
Linux Redhat 7.3, gnome, sawfish, XFree86-4です。
とりあえず、
何でもヒントになりそうなことを教えていただけると助かります。
0780デフォルトの名無しさん
NGNG0781779
NGNGさっさり解決しました。ありがたやありがたや。
つーか、調べが足りなくて申し訳ありませんでした。
0782デフォルトの名無しさん
NGNGすんません。別スレに逝きます。
linuxでプログラムを作ってたときの疑問だったんで
このスレかと思ったんですが、違ってました。
ありがとうス。
ところで、780の最後が気になるんですが。。。
>780
それから「副作用」に気をつけろ。>>766は副作用があるとまずい。
gcc依存ならブロッ(以下適当なスレで
0783771
NGNGsendmsg/sendmsg で四苦八苦しながら解決
情報ありがとうございました。
移植性は現在無視の方向でコーディング中
0784デフォルトの名無しさん
NGNGアレって移植性ないんだっけ?
0785デフォルトの名無しさん
NGNG0786773
NGNGただ動作の違いはある(と日記系の記事で見た)
みたいなんで本当に問題無いかはわかりません。
0787デフォルトの名無しさん
NGNGだまされるな。>>780はX Window Systemの関数であってXWindowsの関数ではない。
0788デフォルトの名無しさん
NGNGXWindowsの関数ではないって断言できるのかよw
0789デフォルトの名無しさん
NGNG次回リリースのXWindowsで追加しまつ。
0790デフォルトの名無しさん
NGNG>>788は「関数」かどうかを問題にしたいんじゃないだろか。
そう言う意味ではXWindowsの関数ではないし、X Window Systemの関数でもないね。
#私んとこのmanはXLIBとしか言ってないなぁ。w
0791デフォルトの名無しさん
NGNG「正式名称は『X』または『X Window System』または…でman Xを見よ」
みたいなことを>>787は言いたかったんだろうなあとは思うんだが。
でも正直そういう話は見飽きた。
0792デフォルトの名無しさん
NGNGそんなことは全員百も承知と思われ。
0793デフォルトの名無しさん
NGNGたいがいその手のつまらん指摘で悦に入ってるのはBSD厨なんだよな
0794デフォルトの名無しさん
NGNGありませんか?
0795デフォルトの名無しさん
NGNG本買えぼけ
0796デフォルトの名無しさん
NGNGStevensを買いなさい。教科書です。
0797デフォルトの名無しさん
NGNGてっきり人だと。人を買うわけ無いか。
0798デフォルトの名無しさん
NGNGおまえアホだろ(藁
0799デフォルトの名無しさん
NGNGえっ? 人を買うのか?
0800デフォルトの名無しさん
NGNG★管理人オススメ★
0801デフォルトの名無しさん
NGNG0802デフォルトの名無しさん
NGNG既に死んでるので買えませぬ。
0803デフォルトの名無しさん
NGNG0804デフォルトの名無しさん
NGNG0805デフォルトの名無しさん
NGNG定番の本はありませんか?
perlでいうラクダ本みたいな感じの。
0806デフォルトの名無しさん
NGNG根拠はないが、logicalではないかなあ。
>>805
スレ違い。
0807デフォルトの名無しさん
NGNG0808デフォルトの名無しさん
NGNGtime()が引数と戻り値の両方に値を返す理由がそれらしい。
想像するに、初期のUNIXのシステムコールだとseekはintを返して、
その後longを返せるseekの名前をlseekにしたんじゃないかな?
0809デフォルトの名無しさん
NGNG0810デフォルトの名無しさん
NGNGどこの OS の話? Solaris の llseek は long long を返すよ。
0811デフォルトの名無しさん
NGNG0812デフォルトの名無しさん
NGNGそれはllseekじゃなくてlseekの話だな。BSD系にはllseekはない。
今時のOSは、
・lseek()が最初から64bit値を返す (Tru64 や BSD 系OS)
・cc に下記のオプションを渡すと lseek() が 64bit を返すようになる
(上記以外のOS):
`getconf LFS_CFLAGS` `getconf LFS_LDFLAGS` `getconf LFS_LIBS`
のどちらかの筈。
後者の種類のUNIXの場合は、lseek64()も使えるが、その場合は下記の
オプションをつけるのが礼儀:
-D_LARGEFILE64_SOURCE `getconf LFS64_CFLAGS` \
`getconf LFS64_LDFLAGS` `getconf LFS64_LIBS`
後者の仕様の詳細は、ここヨメ:
ttp://ftp.sas.com/standards/large.file/x_open.20Mar96.html
0813デフォルトの名無しさん
NGNGなんかゴチャゴチャしてるね。近寄りたくないな。
0814迷いペンギンちゃん
NGNG・自分のPCのIPアドレス(もしくはMACアドレス)を入手
・IPアドレス(もしくはMACアドレス)をキーにファイルAから値BをGET
・ファイルCのとある項目Dの値に、先程の値Bを入力
OSはRedHat7.3、GNU Cを使おうと思っております
ネットワーク関係やってるんですが、
プログラミング、ほとんどやった事無くて・・
何から手を付けたらいいかさっぱりです
(というか、このスレでいいでしょうか? 他行ったほうがいい??
0815迷いペンギン
NGNG・自分のPCのIPアドレス(もしくはMACアドレス)を入手
・IPアドレス(もしくはMACアドレス)をキーにファイルAから値BをGET
・ファイルCのとある項目Dの値に、先程の値Bを入力
OSはRedHat7.3、GNU Cを使おうと思っております
ネットワーク関係に従事してるのですが、
プログラミング、ほとんどやった事無いんですよ・・
何から手を付けたらいいかさっぱりです
(そもそもこのスレッドでいいですか?
0816デフォルトの名無しさん
NGNG0817デフォルトの名無しさん
NGNGttp://www.kokone.to/~kgt/diary.shtml?200302#11から#13あたりのような話?
0818迷いペンギンちゃん
NGNG>>816
いや 恥ずかしい話 社会人です。
0819デフォルトの名無しさん
NGNG0820デフォルトの名無しさん
NGNG0821デフォルトの名無しさん
NGNG0822デフォルトの名無しさん
NGNG0823迷いペンギンちゃん
NGNG0824デフォルトの名無しさん
NGNGttp://bookshelves.tripod.co.jp/index.html
ttp://tito.fc2web.com/2ch/tech/index.html
ttp://tito.fc2web.com/2ch/network/index.html
0825デフォルトの名無しさん
NGNGexit等で終了させるとデストラクタが呼ばれません。
どうすればシグナルハンドラ中でメインスレッドのスタック上のオブジェクトを正常に
破棄させ、かつ終了させる事ができますか?
0826デフォルトの名無しさん
NGNGint status;
public:
system_exit(int s) : status(s) {}
};
int main()
{
try {
return hoge();
}
catch (system_exit e) {
return e.status;
}
catch (...) {
return 255;
}
}
0828デフォルトの名無しさん
NGNG> Win32のような++例外との連携がない。
「C++例外」ね
Win32のは構造化例外処理(SEH)ってやつね。
0829デフォルトの名無しさん
NGNG・・・ダメか。
0830デフォルトの名無しさん
NGNGシグナルハンドラから。
0831デフォルトの名無しさん
NGNG無理。
0832デフォルトの名無しさん
NGNG0833デフォルトの名無しさん
NGNGc++との相性最悪ですがな。
0834デフォルトの名無しさん
NGNGデストラクタで開放処理ができないんじゃC++使う意味が減るなぁ。
0835デフォルトの名無しさん
NGNG0836825
NGNGdeflate(&z, Z_FINISH)しないとファイルが壊れちゃうんで SIGINT, SIGHUPで終了させる際に
処理をしたかったのですが、しかたないので開放する必要があるオブジェクトはvectorを
グローバル変数にしてそこに入れて使うことにします。
0837デフォルトの名無しさん
NGNGnew や delete、malloc や free あたりだって async signal safe
じゃないから、使えないし。
イベントループがあるようなプログラムなら、定期的に timeout で
イベントループに戻ってくるようにしておいて、シグナル・ハンドラ
の方ではフラグ立てるだけ、イベントループの方ではそのフラグが
立ってたら例外を投げる… ってのが常套手段じゃないかなあ。
他になんか安全で良い手ってある?
Windows の構造化例外って、どうやってるんだろ? new や delete
でも安全にしようと思ったら、かなり遅くなりそうなもんだけど。
0838デフォルトの名無しさん
NGNG送るというのはどうでしょう。つまり、シグナルを受けるためだけの
pipe or socketpairを作って、メインループはpipeをselect/pollで
監視し、シグナルハンドラはpipeに(例えば1byte)writeする、と。
カーネルを介してるので安全だとは思う。良いかどうかは知らないが。
あえてシグナルで行くのであれば、sigsetmaskを見るといいかも。
これをうまく使うとシグナルとイベントとするイベントループができる
らしい。やったことないけど。
とか言ってる俺はwin32専門なワケだが。WaitForMultipleObject好き好き。
でもSEHは知らない。アレはc++の例外とは別枠だし。
0839デフォルトの名無しさん
NGNGVC++の場合、C++例外はSEHを使って実装されてたんじゃなかったか?
0840デフォルトの名無しさん
NGNG実現方法は知らないけど、混在はできないそうだ。
0841デフォルトの名無しさん
NGNG子プロセス側でexecに失敗したときのエラーメッセージと、
親プロセス側で正常に子プロセスと通信できなかったときのエラーメッセージが
ぐちゃぐちゃにまざってしまいます。
fork&execはメジャーな手段だと思うのですが、
この問題について一般的な解決法はありませんか?
0842デフォルトの名無しさん
NGNGそれでもダメなら子プロセスではエラーメッセージを出さずに、親プロセスに
通知するとか。もう一つ子→親のパイプを作ってFD_CLOEXECしておき、execに
失敗したらそこにerrnoかなんかを送る。そのパイプがEOFになったら、execが
成功したことが親に分かる。
0844デフォルトの名無しさん
NGNGシグナルハンドラでexitやって atexitで malloc/freeってのはOKなの?
0845デフォルトの名無しさん
NGNG#include <errno.h>
#include <fcntl.h>
#include <unistd.h>
int invokeve(const char *filename, char *const *argv, char *const *envp)
{
int ep[2], err, pid, n;
if (pipe(ep)) return -1;
if (fcntl(ep[0], F_SETFD, FD_CLOEXEC) || fcntl(ep[1], F_SETFD, FD_CLOEXEC) || (pid = fork()) < 0) {
errno = err; close(ep[0]); close(ep[1]); err = errno; return -1;
}
if (pid == 0) {
close(ep[0]); execve(filename, argv, envp); err = errno;
write(ep[1], &err, sizeof(err)); _exit(-1);
}
close(ep[1]);
if ((n = read(ep[0], &err, sizeof(err))) < 0) {
err = errno; close(ep[0]); errno = err; return -1;
}
close(ep[0]);
if (n > 0) {errno = err; return -1;}
return pid;
}
0846841
NGNGほんとにこんな対応しかないのかなぁ?
0847デフォルトの名無しさん
NGNG俺の思い付いたうちでのベストな方法なんだが、どう不満なのか明確に教えて
もらえれば、改善することもできるかも知れない。
0849デフォルトの名無しさん
NGNG0850デフォルトの名無しさん
NGNG0852デフォルトの名無しさん
NGNGつーか、その辺まともに実装しているのはAda環境くらい。
OSと言語の壁はまだ高い。
0853デフォルトの名無しさん
NGNGhttp://www.microsoft.com/japan/developer/library/vccore/_core_exception_handling_differences.htm
0854デフォルトの名無しさん
NGNGPOSIXでは、シェルがコマンドを実行できなかった場合はステータス127ということになるようだ。
で実際シェルではそれで通常問題にはならない。
0855デフォルトの名無しさん
NGNGWin32環境はわりかしマトモ。
unixみたいなグローバル変数依存のトリックは少ない。
0856デフォルトの名無しさん
NGNGfs:0にポインタを保存してるのはグローバル変数依存のトリックとはいわない?
0857デフォルトの名無しさん
NGNGいや、ユーザーにグローバル変数として
目に見えてるかどうか、という意味なんだけど・・・
0858デフォルトの名無しさん
NGNGLinux版のVC++と聞いたのですが本当でしょうか?
0859デフォルトの名無しさん
NGNG分からないので無限ループの中でnanosleepを使っていますが・・・
あ、言語はCです。
0860デフォルトの名無しさん
NGNGkill(getpid(), SIGKILL);
外部要因をひたすら待てばいいなら
(例えばsignal待ちとして)
select(0, NULL, NULL, NULL, NULL);
0861デフォルトの名無しさん
NGNG後者の場合です。
> man 2 select
> もし timeout に NULL (時間切れ(timeout)無し) が指定 さ
> れると、 select は無期限に停止(block)する。
これですね。よくわかりました。
ありがとうございました。
0862デフォルトの名無しさん
NGNG0864デフォルトの名無しさん
NGNGsignalが絡むとselect(2), pselect(2)の方がsigmaskなど考えるべき事が多い。
>>859の要件だけなら、pause(2)がよい。
ただsignalを受けることを考えたら、結局、
for (;;) { if ((pause() == -1) && (ERRNO == EINTR)) { continue; } else { perror("ありえへん"); exit(1); } }
0865デフォルトの名無しさん
NGNG#!/usr/bin/perl -w
$r = system("ls");
if ($r != 0) {
die("system(\"ls\"): $!\n");
}
-- sage [gmake-3.79.1]
a:
perl -w age | cmp f -
この2つのファイルでmakeを実行した時、
cmpで比較する対象のファイルfが存在しない場合に
age中に書いたdieが実行されるのは、なぜですか?
0866デフォルトの名無しさん
NGNG0867865
NGNG読んだままですね。
どうもありがとう。
0868デフォルトの名無しさん
NGNG必要ない〜みたいなことがかかれてましたが、あれって何をいってるんでしょうか?
結局 test コマンドの終了コードを調べて条件分岐ってことはしないとだめなわけですよね?
testコマンドってシェルスクリプト用だと思ってましたがCで組む場合も使うんでしょうか?
0869デフォルトの名無しさん
NGNGその本がボロクソなのか、お前の要約がボロクソなのか、読んでない漏れには判断つかん。
0870デフォルトの名無しさん
NGNGそんな記述あったっけ?
どうでもいいが、その本の作者は
シェルマンセーだと感じたんだが。
0871デフォルトの名無しさん
NGNG他のプロセスにで送るにはどうしたら
いいのでしょうか?
Win32なら、DuplicateHandleとかあるのですが。
0872デフォルトの名無しさん
NGNGdup/dup2 ?
0873デフォルトの名無しさん
NGNG>>771-783
過去ログ嫁や。
0874デフォルトの名無しさん
NGNGstevens (APUE) に書いてある。
0875デフォルトの名無しさん
NGNGもしかしてGNUのglibcのドキュメントがそうですか?
他にありませんか?
0876デフォルトの名無しさん
NGNGUNIXの標準ライブラリってなんだろう。
manのセクション3にない? man 3 printfとか。
0877デフォルトの名無しさん
NGNGSUSv3 (The Single UNIX Specification Version 3)
http://www.unix-systems.org/version3/
は外せないな。
0878デフォルトの名無しさん
NGNG0879デフォルトの名無しさん
NGNG洋書を探せば?
0880デフォルトの名無しさん
NGNGそれとも自前でファイルに出力したほうがいいですか?
運用者がsyslog.confで出力先をカスタマイズできること、
別マシンにログを飛ばせることがメリットだと思っていますが。
あと別マシンに送る場合UDPになるということですがTCPに変更することは可能ですか?
0881デフォルトの名無しさん
NGNGどうもです。LinuxなのですがCのライブラリにある関数のリファレンス一覧が
見たくてどのような資料があるのかと思っています。
WindowsのCコンパイラを買うと関数のリファレンスが付いてきますがUNIXとwindows
の微妙な違いを知るには一番手っ取り早い気がします。最悪*.hやglibcの中身を
見て見る事もありかも知れませんが、、、
やはりmanしかないでしょうか。以前本を見たような気がするのですが、もう少し探してみます。
0882デフォルトの名無しさん
NGNG> やはりmanしかないでしょうか。
manしかないのではなくて、manがある。manを読め。
man -kと'See Also'で必要な物は見つかる。
> もしかしてGNUのglibcのドキュメントがそうですか?
違う。これはANSI Cの標準ライブラリ+α。まるで足りない。
ただ概観したいのなら、適当な本を読めばよい。ナットシェル等で出ている。
まあ、一冊じゃ全然足りないとは思うが。
>>880
> TCPに変更することは可能ですか?
・syslog-ngに置き換える。
・|named-pipe を使って、TCPで送るclientに渡す。serverも別途用意。
0883デフォルトの名無しさん
NGNG関数リファレンスを見たいだけなのにmanの使い方を
覚えなきゃならないなんて効率悪すぎ。
とりあえず、manで目次の使い方を教えれ。
キーワードを知らない状態でどうやって調べるんだ?
0884デフォルトの名無しさん
NGNG0885デフォルトの名無しさん
NGNGMANPATH配下のmanページ(ファイル)をfindして中身をgrepすればいいだろう?
0887デフォルトの名無しさん
NGNGUnix や Linux でCを使った開発をやりたいのなら、
man コマンドの使い方ぐらいは覚えないときついよ。
というか、他のコマンドはちゃんと使えてるのか?
0888デフォルトの名無しさん
NGNGman on MS HTML Helpがあればそれを使いたいけど。
0889デフォルトの名無しさん
NGNGman 3 printf
しか知らんが、他に何かすごい使い方でもあるの?
0890デフォルトの名無しさん
NGNG0891デフォルトの名無しさん
NGNG-f、-kとか-wくらい覚えておこうよ。
0892デフォルトの名無しさん
NGNG> とりあえず、manで目次の使い方を教えれ。
man -k ""
> 関数リファレンスを見たいだけなのにmanの使い方を
> 覚えなきゃならないなんて効率悪すぎ。
プログラミングしない方がいいと思う…
0893デフォルトの名無しさん
NGNGusage: apropos keyword ...
Error executing formatting or display command.
System command /usr/bin/apropos exited with status 256.
0894デフォルトの名無しさん
NGNGBUS_PRINT_CHILD(9) - print information about a device
BUS_READ_IVAR(9), BUS_WRITE_IVAR(9) - manipulate bus-specific device instance variables
BUS_SETUP_INTR(9) - create and attach to an interrupt handler
DECLARE_MODULE(9) - kernel module declaration macro
DELAY(9) - busy loop for an interval
DEVICE_ATTACH(9) - attach a device
DEVICE_DETACH(9) - detach a device
DEVICE_IDENTIFY(9) - identify a device, register it
DEVICE_PROBE(9) - probe for device existence
DEVICE_SHUTDOWN(9) - called during system shutdown
DEV_MODULE(9) - device driver module declaration macro
DRIVER_MODULE(9) - kernel driver declaration macro
IPXrouted(8) - IPX Routing Information Protocol daemon
KASSERT(9) - kernel expression verification macro
MAKEDEV(8) - create system and device special files
(snip)
0895デフォルトの名無しさん
NGNGいろいろとぐぐってみたんだけど、どういうワードで探せばいいか曖昧で、
結局のところ、分からずじまいで終わりました。
ただversionが古いとか、そんな話かな。
ゴミくさいけど、せっかく作ったんで上げとく。
http://cgi.members.interq.or.jp/hokkaido/asato/upload/jam3ddr/OB000769.txt
0896895
NGNG> keyword は実際には拡張正規表現です。この書式に関する詳細は grep(1) マニュ
> アルページを参照してください。
man -k .
なんかすごくショックだ、今。
Linuxのapropos(1)には書いてなかったのに。
aproposのソースなりマニュアルなり、調べなかった漏れが悪いわけだが。
0897デフォルトの名無しさん
NGNG/usr/bin/aproposはshell scriptで、grepを呼び出しているだけだ。
grepの拡張正規表現はもちろん空語(形式言語のいうλあるいはφ)を含むから、
manかaproposの引数の扱い、たぶん引数/変数展開に問題があるのだろう。
Bugだから誰かfixしたら? (わしゃFreeBSD使いじゃないから嫌)
# man -k "file descriptor"とか大丈夫?
0898895
NGNG即レスありがとう。
風呂入ってたから気付かなかったよ。
それで、環境を書いてなかった漏れが悪いわけだが、
漏れが使ってるのはLinuxのman-1.5jで、FreeBSDじゃないよ。
なんとなくFreeBSDのmanから検索して、man -k .を試してみたら動いた、と。
# Solarisのdirnameは引数無しだと'.'だけど、Linuxは引数が1つ必要だったりするような、
# そういう環境の違いかなと思って。
> man -k "file descriptor"
どうやら、だめみたい。unsafeが無いって怒られた。
んで、apropos "file descriptor"だと、fileとdescriptorに分割されました。
# /usr/sbin/makewhatisの53行目も怪しいわけで。
# ヘタレだから、恐くて試してないけど。
# 最新版は直ってるといいんだけど、manの入れ換えなんて、やったことないな。
0899デフォルトの名無しさん
NGNGDOSのlibファイルに相当するものはLinux・UNIXにもあるのでしょうか?
お願いします。
0900デフォルトの名無しさん
NGNG0901デフォルトの名無しさん
NGNGDOSのlibファイルなんてもうなんだったか覚えてない…
/usr/lib/lib*.a, /usr/lib/lib*.soが相当するのかな?
0902デフォルトの名無しさん
NGNG>>901
「おぼえていない」というのはなぜですか?
もうlibなんて使わない?dllでも普通はlibを使うんじゃ?
0903デフォルトの名無しさん
NGNG>>901
ありがとうございます。
続けて質問すみません。
名前さえわかれば検索できるかと思ったんですが、やっぱりわかりませんでした。
.aファイルは何で作るのでしょうか?
0904デフォルトの名無しさん
NGNGman libtool
0906デフォルトの名無しさん
NGNG↓cc
.o
↓ar
.a
0908デフォルトの名無しさん
NGNGOS:Solaris8
コンパイラ:Sun WorkShopUP2
上記環境で、UCS4->SJISの変換の関数を作成していますが、どーしてもうまくいきません。
(wcstombs()==-1 になってしまいます。)
具体的には(全然具体的じゃないけど)
setlocale(LC_ALL,"");
wcstombs(sjis,ucs4,sjisLength);
この順番で呼び出しています。
LANG=jp_JP.PCKに設定してあり、setlocale()の返値もnilじゃなく、PCKになっています。
(/usr/lib/locale/にPCKがあるのも確認...)
setlocale(LC_ALL,"jp_JP.PCK")としてもダメでした。
Windowsだと上記手順で動くんですが、Solaris上だとうまく動いてくれません。
どなたか解決策をご存じありませんか?
0909デフォルトの名無しさん
NGNGまずerrnoを調べよ。全てはそれからだ。
0910デフォルトの名無しさん
NGNGSolarisのwchar_tってUCS4だっけ?
0911デフォルトの名無しさん
NGNG違う。だから908がうまくいかないのは当たり前。
>>908
iconv(3) で、まず "UCS-4" を "UTF-8" に変換してから、
次に "UTF-8" を "SJIS" に変換するってのはどうよ?
iconv_open(3c) や iconv_unicode(5) を参照。
0912デフォルトの名無しさん
NGNGiconv()があるなら直接UCS-4をSJISに変換すりゃーいいだろに。
0914デフォルトの名無しさん
NGNGSolaris 9でもそうだよ。
全ての組合わせ用意するのは辛いわな。/usr/lib/iconv/*.soが爆発しちゃう。
0915デフォルトの名無しさん
NGNG無事うまくいきました(UCS4->UTF-8->SJIS)
コードの流用ばっかり考えてました。
iconv()って便利ですね。(恥ずかしながら、今回初めてしりました。
文字コード処理は初めてだったので)
0916デフォルトの名無しさん
NGNGGNU Awk 3.1.2(Cygwin)を使用しています。
0917デフォルトの名無しさん
NGNG0918デフォルトの名無しさん
NGNGawkについて語るスレ
http://pc2.2ch.net/test/read.cgi/tech/1023556171/
あるいは UNIX/Linux 板か。
0919デフォルトの名無しさん
NGNGスレ違いのようなので >>918 に書き込みました。
どうもすみませんでした。
0920デフォルトの名無しさん
NGNG計算可能なもの直接、できなければUCS-4経由とすればいいと思うが。少なく
ともglibcやFreeBSDのはそうなってたはず。とくにUTF-8からは変換できるの
にUTC-4からはできないというのは、手抜き?
0921デフォルトの名無しさん
NGNGhttp://www.gnu.org/software/libiconv/
0922デフォルトの名無しさん
NGNGsocket.hっていうファイルがどこにあるか分かる?
0923デフォルトの名無しさん
NGNG/usr/include/sys/socket.h とか?
0924デフォルトの名無しさん
NGNGありました!ありがとうございます!
0925デフォルトの名無しさん
NGNGそのプログラムのプロセスIDを得る方法ありませんか?
ps | grep hoge | sed 's/ *//' | cut -f1 -d' ' > /tmp/fuga とか
ファイルに一々書き出してる始末なんですが、直接得る方法があったら教えて頂けませんか。
0926デフォルトの名無しさん
NGNG一般的な方法は無い。pidが欲しけりゃ自分で fork & exec せよ。
0927デフォルトの名無しさん
NGNGそうですか、わかりました。アドバイスの通り fork して exec することにします。
どうもありがとうございました。
0928デフォルトの名無しさん
NGNGどうせfileに書くなら、
system("foo & echo $! > /tmp/foo.pid");
psするとしてもfileに書くくらいなら、popen(3)して読め。
0929デフォルトの名無しさん
NGNGうわ、echo $! なんてできたんですね。これで popen で読む事にしました。
助かりました、どうもありがとうございます。
0930デフォルトの名無しさん
NGNGpopen("foo & echo $!", "r")するなら、fooのstdout処理に要注意な。
popen("foo >/dev/null & echo $!", "r")とか
0931デフォルトの名無しさん
NGNGどうにかしてほしい
0932デフォルトの名無しさん
NGNGgccってライブラリだったのか。
どうにもしないで下さい。
0933デフォルトの名無しさん
NGNG0934デフォルトの名無しさん
NGNGANSI Cの中の人も大変ですね。
glibcの中の人なら、posix_spawn(3)を持ってますが…
0935デフォルトの名無しさん
NGNGfclose(stdin); fclose(stdout); fclose(stderr);
になるんですか?
0936デフォルトの名無しさん
NGNG0937デフォルトの名無しさん
NGNGいわずもがなながら、他殺でもOK。
>>935
もしかして、no controlling terminalな状態になるには、と聞きたいの?
0938デフォルトの名無しさん
NGNGデーモンになりたいって言いたかったんでは?
0939デフォルトの名無しさん
NGNG合体しづらいので、ます理性をなくす。
0940デフォルトの名無しさん
NGNG0941デフォルトの名無しさん
NGNGなにかシグナルを受けた時に呼ばれるんですか?
子に SIGSTOP/SIGCONT とか送っても呼ばれるので
子の終了を知りたいので困ってるんですが、普通は
どのようにするのでしょうか。
0942デフォルトの名無しさん
NGNGman waitpid
0943デフォルトの名無しさん
NGNG試してみます、どうもありがとうございます。
0944デフォルトの名無しさん
NGNG> SIGCHLD って、子が終了した時だけじゃなくて、とにかく
> なにかシグナルを受けた時に呼ばれるんですか?
Q: wait(2)って子が終了した時だけじゃなくて、
とにかくなにかシグナルを受けた時に復帰するんですか?
A: はい、そうです。そのsignalを受けた時の振る舞いが、
processが終了する、あるいはsignal handlerが呼び出される、
の場合、wait(2)は復帰します。SIG_IGNの時は復帰しません。
0945デフォルトの名無しさん
NGNGQ: waitpid(2)はどうでしょう?
A: 同じです。
Q: 私はどうすればいいのでしょう。
A: 自分の受け入れたい条件になるまでloopしてwait(2)し続けなさい。
0946ヽ(´ー`)ノ
NGNG0947デフォルトの名無しさん
NGNGhttp://www.csn.ul.ie/~mel/projects/vm/
0949山崎渉
NGNG0950デフォルトの名無しさん
NGNG取得したのですがどうすればいいですか?
int a;
int b;
int c;
:
:
printf("a=%d",a);
printf("b=%d",b);
printf("c=%d",c); ←こいつらをLOOPさせて1行にできないか?
0951デフォルトの名無しさん
NGNGくだらない質問を、マルチすんな!詩ね!
0952山崎渉
NGNG( ^^ )< ぬるぽ(^^)
0953堕天使
NGNG0954デフォルトの名無しさん
NGNGXNextEvent(display, &event)の代わりに(ブロッキングさせたくないので)
XCheckWindowEvent(display, window, KeyPressMask | StructureNotifyMask | ExposureMask, &event)
を使おうとすれば、
switch(event.type){
case ClientMessage:
……
このClientMessageを拾えなくなるのですが、なんとかする方法はないでしょうか?
やりたいことは、単に
windowの×をクリックしたときに正常終了させたいだけなのですが……。
0955954
NGNGいろいろ調べていると、webのソースコードのコメントに
ttp://wuarchive.wustl.edu/mirrors/NetBSD/NetBSD-current/xsrc/xfree/xc/programs/ico/ico.c
/*
* Unfortunately we can not use XWindowEvent and XCheckWindowEvent to get
* ClientMessage events, because there is no corresponding event mask. We must
* use XIfEvent and XCheckIfEvent and this function as a predicate. Better if
* Xlib had some kind of XWindowAnyEvent and XCheckWindowEvent. -- Casantos.
*/
XCheckWindowEventの代わりにXCheckIfEventを使えと、書かれてます。
わたしにはユーザー定義のXCheckIfEventは少し敷居が高いっす。
手元のX-Window プログラミング (日刊工業新聞社)には詳しく載ってませんし。
なにかXCheckIfEventの分かり易いサンプルないし、
XCheckWindowEventのまま小細工を施して
終了フラグを拾う方法はないでしょうか?
0956デフォルトの名無しさん
NGNGその君が探しあてた ico.c が、まさにサンプルになってないかい?
0957954
NGNG実は、小細工の仕方を伝授してほしい、と消極的にアピールしたつもりだったのです。
キーボード入力でも終了させられるのに、
マウスのクリックでクローズしたいがためだけに、
XCheckWindowEventから、XCheckIfEvent
へ(あちこちと)変更する気力が湧かなくて……
もしくは、XCheckIfEventのもっと分かり易い(資料の揃った)サイトないっすか?
たしかに、マウスのクリックでクローズできないアプリなんぞは
欠陥品だと自嘲しつつsage。
0958デフォルトの名無しさん
NGNGcatman -? とかそんなかんじ。オプションは忘れた。
http://www.google.com/search?num=50&hl=ja&ie=Shift_JIS&q=catman%81@man%81@-k&lr=lang_ja
0959デフォルトの名無しさん
NGNG> もしくは、XCheckIfEventのもっと分かり易い(資料の揃った)サイトないっすか?
www.xfree86.orgのドキュメント。英語だけど詳しいよ。
> わたしにはユーザー定義のXCheckIfEventは少し敷居が高いっす。
Xlibはそういう人向けのinterfaceじゃないよ。
Widget作る人のためのinterface。xwininfoとかさ。
0960デフォルトの名無しさん
NGNGToolkit(Motifなど)を使わない理由は?
>>959が言うように、敷居が高いならXlibでそこまでやらない方がいいと思うが。
0961954
NGNG>www.xfree86.orgのドキュメント。英語だけど詳しいよ。
あ、そういやそうですね。サンクス。
>958
>Toolkit(Motifなど)を使わない理由は?
window枠無しの表示のために、
最初はシンプルにXLIBを使っていたのだけど、
window枠もつけようと、
そのままXLIBで書いていたら、嵌ってしまった。
0962ヽ(´ー`)ノ
NGNG0963デフォルトの名無しさん
NGNG0964デフォルトの名無しさん
NGNG0965デフォルトの名無しさん
NGNGioctl の使い方がよく分かりません。どうすればよいのでしょうか。
0966デフォルトの名無しさん
NGNGman 4 tty
0967山崎渉
NGNGピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。
=〔~∪ ̄ ̄〕
= ◎――◎ 山崎渉
0968デフォルトの名無しさん
NGNGあるでしょうか?有償、無償でも構いませんが、ドキュメ
ントの品質に定評があるものを探しています。
用途は、店頭POP/チラシの印刷を考えてます。
スレ違いかなぁ・・・?だったらごめんなさいませ。
0969デフォルトの名無しさん
NGNGpdflibで検索。
質は作り方によるんじゃない?
0970デフォルトの名無しさん
NGNG次スレ?
0971デフォルトの名無しさん
NGNGhttp://game4.2ch.net/test/read.cgi/arc/1051156581/
0972デフォルトの名無しさん
NGNG立てる?
テンプレ案募集。
<タイトル>
UNIXプログラミング質問すれ (2)
</タイトル>
<1>
UNIXおよびUNIX clone環境一般のプログラミングに関する質問スレッド。
前スレ:
UNIXプログラミング質問すれ
http://pc2.2ch.net/test/read.cgi/tech/992057422/
</1>
0973デフォルトの名無しさん
NGNG0974デフォルトの名無しさん
NGNGそう思うなら取り敢えずunistd.hの中を見てみればいいだろ?
0975デフォルトの名無しさん
NGNG0976デフォルトの名無しさん
NGNG0977デフォルトの名無しさん
NGNG0978デフォルトの名無しさん
NGNG0979デフォルトの名無しさん
NGNG0980デフォルトの名無しさん
NGNG0981デフォルトの名無しさん
NGNG0982デフォルトの名無しさん
NGNG0983デフォルトの名無しさん
NGNG0984デフォルトの名無しさん
NGNG0985デフォルトの名無しさん
NGNG0986デフォルトの名無しさん
NGNG0987デフォルトの名無しさん
NGNG0988デフォルトの名無しさん
NGNG0989デフォルトの名無しさん
NGNG0990デフォルトの名無しさん
NGNG0991デフォルトの名無しさん
NGNG0992デフォルトの名無しさん
NGNG0993デフォルトの名無しさん
NGNG0994デフォルトの名無しさん
NGNG0995デフォルトの名無しさん
NGNG0996デフォルトの名無しさん
NGNG0997デフォルトの名無しさん
NGNG0998デフォルトの名無しさん
NGNG0999デフォルトの名無しさん
NGNG1000デフォルトの名無しさん
NGNG10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。