1 名前:970 [2006/05/18(木) 18:56:16 ] UNIXおよびUNIX clone環境一般のプログラミングに関する質問スレッド 前スレ Part7 pc8.2ch.net/test/read.cgi/tech/1127373405/ Part6 pc8.2ch.net/test/read.cgi/tech/1116908090/ Part5 pc8.2ch.net/test/read.cgi/tech/1105723117/ Part4 pc5.2ch.net/test/read.cgi/tech/1095843584/ Part3 pc5.2ch.net/test/read.cgi/tech/1085930894/ Part2 pc5.2ch.net/test/read.cgi/tech/1055110889/ Part1 pc2.2ch.net/tech/kako/992/992057422.html Part3のミラー makimo.to/2ch/pc5_tech/1085/1085930894.html Part2のミラー makimo.to/2ch/pc5_tech/1055/1055110889.html
116 名前:デフォルトの名無しさん mailto:sage [2006/06/17(土) 11:53:51 ] 教えて下さい! finde ./ の結果が AAA AAA/BBB AAA/BBB/hoge1.txt AAA/BBB/hoge2.txt AAA/BBB/hoge3.txt AAA/BBB/CCC/hoge4.txt AAA/BBB/CCC/DDD AAA/BBB/CCC/DDD/EEE AAA/BBB/FFF/GGG/hoge5.txt AAA/BBB/FFF/GGG/hoge6.txt AAA/BBB/FFF/GGG/HHH AAA/BBB/FFF/III/hoge7.txt AAA/BBB/FFF/III/JJJ AAA/BBB/FFF/III/JJJ/KKK AAA/BBB/FFF/III/JJJ/KKK/LLL AAA/BBB/FFF/III/JJJ/KKK/LLL/MMM となっていて、ツリーにファイルを持たないフォルダのみを 抜き出したいです。
117 名前:デフォルトの名無しさん [2006/06/17(土) 11:55:38 ] ↓こんな感じです。 AAA/BBB/CCC/DDD AAA/BBB/CCC/DDD/EEE AAA/BBB/FFF/GGG/HHH AAA/BBB/FFF/III/JJJ AAA/BBB/FFF/III/JJJ/KKK AAA/BBB/FFF/III/JJJ/KKK/LLL AAA/BBB/FFF/III/JJJ/KKK/LLL/MMM 先輩は、find . -type d -emptyと言い残して旅に出ましたが 動きませんでした… OSはこれです。シェルがどうこうはよくわかりません。。。 SunOS devcvs01 5.9 Generic_118558-05 sun4u sparc SUNW,UltraAX-i2
118 名前:デフォルトの名無しさん mailto:sage [2006/06/17(土) 12:38:14 ] 動くよ。 それに、それプログラミングじゃないだろ。 それから、その結果欲しければ、find AAA (ryだろ。
119 名前:デフォルトの名無しさん mailto:sage [2006/06/17(土) 12:50:31 ] シェルプログラミングスレどっかにあったな。UNIX板か? 実はSolarisのfindには-emptyオプションがないとか? GNUとMac(BSD)にはあった。
120 名前:デフォルトの名無しさん mailto:sage [2006/06/17(土) 13:25:45 ] そのとーりSolarisには-emptyないよ >>118 ぷw
121 名前:デフォルトの名無しさん mailto:sage [2006/06/17(土) 13:41:01 ] いかなる環境でも安定して動作し、 複数の計算機、複数の別プロセスから同時にアクセスされても安全が保障され、 複数プロセス間で、ロックを試みた順番で確実にロック権が回ってくる そんな「完璧な」ファイルロックというのは可能でしょうか? それとも、日本語の文字コードを完全には自動識別できないのと同じように、 ファイルのロックにも「完全」というのは存在しないのでしょうか? ヒントやキーワードだけでいいから教えて下さい
122 名前:デフォルトの名無しさん mailto:sage [2006/06/17(土) 14:05:27 ] >>121 ヒント: スレ違い
123 名前:デフォルトの名無しさん mailto:sage [2006/06/17(土) 16:49:41 ] >>116 空のディレクトリを抜き出したい理由は? カレント配下の空のディレクトリを消したいだけなら find . -depth -type d -exec rmdir {} \; でできるけど。 #-depthを指定しないと、例えばDDDを消そうとして失敗してからEEEを消すことになる。
124 名前:デフォルトの名無しさん mailto:sage [2006/06/17(土) 17:02:27 ] AAA/BBB/CCC/DDD/EEE がファイルなのかディレクトリなのか区別出来ないけど
125 名前:デフォルトの名無しさん mailto:sage [2006/06/22(木) 05:41:18 ] pthread使用していてgdbでデバッグしてるとepoll_waitが割り込みで何度も止まってるのよ 何のシグナル受け取ってるのか判別する方法ないかな
126 名前:ゆーき [2006/06/26(月) 00:07:54 ] ハイパー初心者ですが、octaveでsubplotをファイルに保存したいのですが、print -depsや gset term postscript enhancedではできません。。。 だれかやりかたを教えて下さい。お願いします。
127 名前:デフォルトの名無しさん mailto:sage [2006/06/26(月) 00:18:58 ] >>125 OSを書け
128 名前:デフォルトの名無しさん mailto:sage [2006/06/26(月) 03:54:31 ] epoll_waitと書いている以上、Linuxだろ? straceで追っかけてみるのはどーだろ?
129 名前:デフォルトの名無しさん mailto:sage [2006/06/26(月) 12:59:50 ] LinuxならSIGALRMじゃないの? $(GLIBC)/nptl/*eintr*辺り読んでみて。
130 名前:デフォルトの名無しさん mailto:sage [2006/06/30(金) 03:23:01 ] >>121 ありとあらゆる環境上でなんて事実上不可能 > 複数プロセス間で、ロックを試みた順番で確実にロック権が回ってくる 「ロックを試みた順番」という単語一つとっても - ロックマネージャーに届いた順番? - ロックにあたるFunctionを呼び出したとき? など曖昧かと.. PostgreSQLなどのDBMSのソースとかがヒントになるかもしれない。
131 名前:デフォルトの名無しさん [2006/06/30(金) 14:01:44 ] Linuxの一般のユーザーwatashiとtaninがいて、 watashiがtaninさんの/home/tanin/workのオーナーになりたいので、 こんなプログラムを作って、 int main() { int uid = 509;// watashiのuid int gid = 100;// watashiのgid chown("/home/tanin/work", uid, gid); } gccでコンパイルしたあと、ルートになって chmod ug+s a.out して、watashiユーザーで実行してみたのですが、失敗しました。 この方法では、watashiはtaninさんのディレクトリのオーナーになることはできませんか?
132 名前:デフォルトの名無しさん mailto:sage [2006/06/30(金) 14:25:35 ] chown root a.out したか? setuidされたプログラムは、そのプログラムファイルの所有者 の権限で動くのであって、自動的にroot権限で動く訳ではない。
133 名前:デフォルトの名無しさん [2006/06/30(金) 14:28:01 ] >chown root a.out >したか? ああ、その通りでした。忘れてました。 rootにchownしらた無事動きました。お騒がせしました。
134 名前:デフォルトの名無しさん mailto:sage [2006/06/30(金) 15:09:49 ] >>131 chown()の返り値を調べてエラー処理をするように。 int result = chown(〜); if (result != 0) { perror("/home/tanin/work"); exit(1); }
135 名前:デフォルトの名無しさん [2006/07/01(土) 23:34:34 ] fork() で子プロセスを立ち上げるプログラムを書いてるのですが (親プロセスは走り続けてイベントを待ち、時々 fork() して子プロセスに仕事をさせる) 子がシグナルを受けたときの親の wait() (wait4()) を呼ぶタイミングがわかりません。 親プロセスに SIGCHLD のハンドラをインストールしてその中で wait4() してみたの ですが、 それだと子プロセスがゾンビになる場合があるようです。(うまくいく場合もある) なお wait4() には WNOHANG をセットしてそこで親がハングしないようにしています。 シグナルハンドラ内の wait4() で駄目なときは、どうやらもっと後で wait4() を呼ぶと うまく子プロセスが刈られるようです。 ただ、それは実験的に親のプログラムのいろんなところに wait4() を埋め込んだ らゾンビが出ないのがわかっただけなんで、それでいいとは思えません。 こういうプログラムの場合 wait() ってどういうタイミングで呼べばいいんでしょうか。 あるいはタイミング以外に問題があるでしょうか。(ソースコードがないと厳しいかな?) ちなみに OS は Mac OS X 10.4.6 です。
136 名前:135 mailto:sage [2006/07/01(土) 23:43:08 ] あ、ちなみに wait4() を呼ぶときは WNOHANG かつ pid に -1 をセットして ループで全てのプロセスを処理するようにしています。
137 名前:デフォルトの名無しさん mailto:sage [2006/07/01(土) 23:51:23 ] ハンドラ内で、signalがブロックされているうちに、 たくさん子プロセスが終了するけど、 ハンドラ終了のタイミングなどでループで全部処理しきれてない、 くらいしか想像付かない。
138 名前:デフォルトの名無しさん mailto:sage [2006/07/02(日) 00:05:12 ] >>135 waitは基本的にSIGCHLDのシグナルハンドラで呼ぶ。 同タイミングで大量の子プロセスが死ぬ場合は問題になるのかも しれないけど、俺はそんな経験nothing。 親プロセスが、子プロセスの死亡時に、プロセスを成就させる以外の 仕事をしないなら、forkを二回行って子プロセスを親プロセスのグループから 切り離すという手もある。 詳しくはUNIX Programming FAQ参照。
139 名前:135 mailto:sage [2006/07/02(日) 02:38:11 ] どうも、早速のフォローありがとうございます。 >>137 >>138 そうですよね、基本はSIGCHLDのハンドラ内で wait() すればいいんですよね。 すいません、書き込みしたあともう少し調べてみたら、どうも状況によってシグナル ハンドラが呼ばれない場合があるようです。なんとなく、子プロセスが大量にメモリを 使う処理をした後はハンドラが呼ばれていないような... 子プロセスは、同時に起動するのは1つだけです。 ps で見ると子プロセスのステータスは Z になっているんですが。 ちなみに sigaction() を使っているんですが、これって、一回ハンドラが呼ばれたら また再インストールする、なんて必要はないですよね? フラグは SA_RESTART だけを設定しています。 もしかして OS のバグ? とりあえず動くものを作らないといけないので、さしあたり新たに fork() する前に wait4() するようにしてゾンビの増殖は防げるようになりましたが... 気持ち悪い。
140 名前:デフォルトの名無しさん mailto:sage [2006/07/02(日) 03:21:20 ] wait4が-1を返した時のerrnoもちゃんとチェックしてる? 死んだ子がいないと判断できるのはerrno==ECHILDの時だけだよ。 wait4が-1返しても、errnoがEINTRの時なんかは、まだ子が取り残されてる場合がある。
141 名前:デフォルトの名無しさん mailto:sage [2006/07/02(日) 09:07:35 ] > もしかして OS のバグ? こう思うときの99%は自分の理解不足が本当の原因。
142 名前:プログラミング [2006/07/03(月) 15:16:08 ] 誰かほんとにすいませんっ↓この問題分かる人教えてください!! お願いします!(>△<) 言語はdelphiです。 ?モンテカルロ法を使って1/3を求めるプログラムを作くれ。 モンテカルロ法を試行する回数をプログラム実行時に選べるようにせよ。 ?2分法を使って188の5乗根を求めよ。途中経過を分かりやすく画面に表せ。
143 名前:デフォルトの名無しさん mailto:sage [2006/07/03(月) 15:22:12 ] 問題がunix固有ではまるでない感じなので、Delphiのスレに行ったほうが 回答が得られやすいと思われるが、宿題は自分でやろうな。
144 名前:デフォルトの名無しさん mailto:sage [2006/07/03(月) 15:26:16 ] >>143 作くれなんて問題の宿題があるか? と思ったがあるみたいだ。
145 名前:プログラミング [2006/07/03(月) 15:30:08 ] はいっありがとうございます! delphiの掲示板いってみます(>▽<)☆
146 名前:デフォルトの名無しさん [2006/07/05(水) 15:47:29 ] この質問はここでいいのかな? pathName = "/home/guest/" fileName = "*.txt" として、文字列 "/home/guest/*.txt" にマッチしたファイルのみ削除する関数を作りたいのですが、opendir()関数だと、 指定したパス内の全ファイル名を取得することはできたのですが、 特定のパターンにマッチしたファイルのみ取り出すにはどうしたらよいでしょうか? remove_files(char *pathName, char *fileName) { ... ... } こんな関数を作りたいのです。 良い方法はありますか??
147 名前:デフォルトの名無しさん mailto:sage [2006/07/05(水) 15:53:55 ] つ fnmatch(3) つ glob(3)
148 名前:デフォルトの名無しさん mailto:sage [2006/07/05(水) 15:55:44 ] Cでやりたいの? bashのsourceにlibglobってのがあるからそれ使って。 shell scriptでやるのが簡単だとおもうけれど。 "/bin/ls home/guest/*.txt"をpopen(2)するとか。
149 名前:デフォルトの名無しさん [2006/07/05(水) 16:06:29 ] みなさんありがとうございます。 そうですCでやりたいです。 普段windowsのVCで書いているのですが、10年ぶりくらいに Linuxのgccで少し作業することになりまして、難儀してます。
150 名前:デフォルトの名無しさん mailto:sage [2006/07/05(水) 16:23:04 ] >>149 system("/bin/rm /home/guest/*.txt"); Unix系だからこそ、適材適所で書くべきだと思う。
151 名前:デフォルトの名無しさん mailto:sage [2006/07/06(木) 03:56:05 ] >>150 >>148 の言ってる popen の方が良いと思う
152 名前:デフォルトの名無しさん mailto:sage [2006/07/06(木) 07:33:33 ] 削除するのにls?
153 名前:デフォルトの名無しさん mailto:sage [2006/07/06(木) 18:03:37 ] そのツッコミは想定内です
154 名前:デフォルトの名無しさん mailto:sage [2006/07/06(木) 19:27:54 ] >>147 を無かったことにしたい流れに萎え
155 名前:デフォルトの名無しさん mailto:sage [2006/07/06(木) 22:42:47 ] >147か>150の二択でいいんでね?
156 名前:デフォルトの名無しさん mailto:sage [2006/07/06(木) 23:53:55 ] シェルを通すやり方の場合、もしユーザーの任意のパターンを受け付けるのであれば、 "; /bin/rm -rf /" なんていうパターンが与えられても大丈夫でないといけない。
157 名前:デフォルトの名無しさん mailto:sage [2006/07/07(金) 01:12:25 ] 頭のおかしい人登場
158 名前:デフォルトの名無しさん mailto:sage [2006/07/07(金) 02:41:02 ] 漏れなら " & /bin/rm -rf / " にする
159 名前:デフォルトの名無しさん mailto:sage [2006/07/07(金) 03:13:57 ] 俺のお気に入りの削除方法おしえちゃう zip -rm /tmp/.zip *
160 名前:デフォルトの名無しさん mailto:sage [2006/07/07(金) 03:23:46 ] 俺は chmod -R a-x * .*
161 名前:デフォルトの名無しさん [2006/07/07(金) 13:39:05 ] すんません、シェルスクリプトをCに置き換えたいのですが システムコマンドって使えるですか? たとえば /usr/bin/aumix -v $VOL この$VOLを可変したいのですが Cってのがこのaumixコマンドを扱えるのかな?と・・・・・・・・・・・・・ヒントキボン
162 名前:デフォルトの名無しさん mailto:sage [2006/07/07(金) 14:47:48 ] int callsumix(char *vol) { char *buf = (char *)malloc(適当); sprintf(buf, "/usr/bin/aumix -v %s", vol); system(buf); free(buf); return 適当; }
163 名前:デフォルトの名無しさん [2006/07/07(金) 14:49:20 ] >>162 おお!(゚∀゚)神のヨカーン なるほどね、printfで! echo "aumix -.... ありがd!!
164 名前:デフォルトの名無しさん mailto:sage [2006/07/07(金) 14:55:44 ] int callsumix(char *vol) { return execl("/usr/bin/aumix", "/usr/bin/aumix", "-v", vol); }
165 名前:デフォルトの名無しさん mailto:sage [2006/07/07(金) 14:58:22 ] null terminate するの忘れた。 return execl("/usr/bin/aumix", "/usr/bin/aumix", "-v", vol, NULL);
166 名前:デフォルトの名無しさん mailto:sage [2006/07/07(金) 15:03:48 ] int callsumix(char *vol) 次の人 ↑ ここ直してね
167 名前:デフォルトの名無しさん mailto:sage [2006/07/07(金) 15:11:01 ] >>165-166 ちょwww! なんかいろいろと方法があるんすね?! execl ですかそうですか ちょっとGoogleも見てきます つーか、Bashで書いたものをコンパイルできればいいっすねw
168 名前:デフォルトの名無しさん mailto:sage [2006/07/07(金) 15:21:08 ] baka
169 名前:デフォルトの名無しさん mailto:sage [2006/07/07(金) 15:24:02 ] その昔、商用でシェルスクリプトのコンパイラってあったよね?
170 名前:デフォルトの名無しさん mailto:sage [2006/07/07(金) 15:44:03 ] >>168 つД`)・゚・。・゚゚・*:.。..。.:*・゚ >>169 ヽ(`Д´)/それだ!( ゚д゚)ホスィ…でもCshだけだったり main関数ってなんだよぉ〜 Cなんてわかんねぇよぉ〜 逝ってきますorz でも、CでUNIXコマンドがいじれることがわかったのはテラウレシス!
171 名前:デフォルトの名無しさん mailto:sage [2006/07/07(金) 20:29:39 ] >>167 exec*系は成功したら帰ってこないからな。 ついでにforkもペアで調べるんだ。
172 名前:デフォルトの名無しさん mailto:sage [2006/07/07(金) 21:53:35 ] nix はその最初の敷居が高すぎる #define exec fork() ? wait() : execl exec("sh", "-c", "/usr/bin/aumix -v $VOL") もうfork はこれでよくね?うごかねえかな?
173 名前:デフォルトの名無しさん mailto:sage [2006/07/07(金) 22:44:15 ] お前それ以前にCわかってないやん
174 名前:デフォルトの名無しさん mailto:sage [2006/07/08(土) 19:12:31 ] ; を忘れてるのは見逃すとして、 とりあえず fork() ? wait() : execl("sh", "-c", "/usr/bin/aumix -v $VOL"); になるのか。 pid == 0 の方が実行される方か。
175 名前:デフォルトの名無しさん mailto:sage [2006/07/08(土) 19:17:04 ] (;´Д`)
176 名前:デフォルトの名無しさん mailto:sage [2006/07/08(土) 22:48:40 ] fork()が-1返した時は?
177 名前:デフォルトの名無しさん mailto:sage [2006/07/08(土) 22:51:50 ] wait() へ行くから大丈夫なん?
178 名前:デフォルトの名無しさん mailto:sage [2006/07/08(土) 23:37:01 ] execlが返ってきたら危険だね
179 名前:デフォルトの名無しさん mailto:sage [2006/07/09(日) 00:41:54 ] orz わかんねぇよ フォークだかボークだかエクセルだかワードだか・・・・
180 名前:デフォルトの名無しさん mailto:sage [2006/07/09(日) 00:46:28 ] 素直にif - else ifで書くがよろし。
181 名前:デフォルトの名無しさん mailto:sage [2006/07/09(日) 01:14:59 ] >>179 ああぁぁぁぁ!!!! 先を越されたorz それは俺が言おうと(ry
182 名前:デフォルトの名無しさん mailto:sage [2006/07/09(日) 02:03:38 ] マニュアル嫁よ
183 名前:デフォルトの名無しさん mailto:sage [2006/07/09(日) 13:07:51 ] すんません、「おはよう世界」から出直します
184 名前:デフォルトの名無しさん mailto:sage [2006/07/09(日) 16:37:56 ] printf("Good morning world.\n");
185 名前:デフォルトの名無しさん mailto:sage [2006/07/09(日) 17:39:22 ] こんにちわ世界でしたね ̄|_|・・・..●ゲヴォルガァ
186 名前:デフォルトの名無しさん mailto:sage [2006/07/09(日) 19:34:36 ] printf("Welcome to HELL WORLD.\n");
187 名前:デフォルトの名無しさん mailto:sage [2006/07/09(日) 20:04:09 ] char *p = NULL; while(1){ printf("%02x\n", *p++); }
188 名前:デフォルトの名無しさん mailto:sage [2006/07/10(月) 20:14:34 ] >>169 漏れシェルのコンパイラって使ったことあるよ。 「これでシェルスクリプトが100倍速く走るぜ!」 と思って感動にうち震えながら試したが、軽くも速くもならなかった。 漏れがボンクラプログラマ−たから? ええ。それも、そうなんですけどね
189 名前:デフォルトの名無しさん mailto:sage [2006/07/11(火) 00:42:55 ] システムコールってわかんねぇよww もういいや、Shellscriptで書きつづけるよ どうせ100行以上のプログラムなんて書けないしヲ チマチマプログラマーでいいっすヲ
190 名前:デフォルトの名無しさん mailto:sage [2006/07/11(火) 00:48:35 ] man 2に入ってるのがシステムコール man 3に入ってるのがライブラリ
191 名前:デフォルトの名無しさん [2006/07/11(火) 19:35:29 ] man coに入ってるのがチソポ
192 名前:デフォルトの名無しさん mailto:sage [2006/07/11(火) 19:49:08 ] ハァッ、ハァッ、ハァッ、ハァッ!
193 名前:デフォルトの名無しさん mailto:sage [2006/07/11(火) 20:52:46 ] >>189 ヒント:www.linux.or.jp/JM/INDEX/ldp.html
194 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 11:03:43 ] そもそも、ぽまえらの使用言語は何でつか?
195 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 11:10:34 ] C, C++, perl, sh, Java, BeanShellといったところ。
196 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 11:26:38 ] C, C++, java, python, Haskell, scheme, bash, zsh, emacs lisp
197 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 11:32:08 ] Brankfuck, INTERCAL, HQ9+
198 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 11:46:12 ] C
199 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 14:27:58 ] 書く頻度でRuby, Java, sh, Cってとこか。
200 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 20:52:42 ] C++, Perl, C, sh, Ruby, Fortran
201 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 20:54:59 ] C, Java, C#, Common Lisp
202 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 21:09:10 ] C# って、もしかして MONO 使ってるの?
203 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 21:23:33 ] 日常的なスクリプティングは Scheme or CL でこなしたいんだけど、 いかんせん力量不足だなぁ...
204 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 21:43:13 ] なんでそんなにつかえるんだよー 英語すら使えない漏れはモウダメポ..._〆(゚▽゚*)ですね
205 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 22:35:30 ] >>202
206 名前:デフォルトの名無しさん mailto:sage [2006/07/13(木) 01:09:43 ] >>204 yacc/lex。最狂のスクリプト言語「日本語」を開発すべく技術者募集(嘘)
207 名前:デフォルトの名無しさん mailto:sage [2006/07/13(木) 11:07:35 ] 2ch語でプログラムできればどんなにいいかw 米 プログラムテスト 米 コメント 表示 "こんちわ世界" ゴルァ 米 割り込み 糸冬 了
208 名前:デフォルトの名無しさん mailto:sage [2006/07/13(木) 11:36:27 ] >>207 kwsk
209 名前:デフォルトの名無しさん mailto:sage [2006/07/13(木) 15:25:31 ] OpenMotifとMotifのちがいってなんですか? MotifのコードはOpenMotifでもコンパイルできますか?
210 名前:デフォルトの名無しさん mailto:sage [2006/07/13(木) 21:41:06 ] ライセンス
211 名前:デフォルトの名無しさん [2006/07/19(水) 00:43:18 ] 質問なのですが、pipeを使って実際のパイプラインのような処理をする場合 どのように繋いでいけばいいのでしょうか? 例えば標準入力から ls | grep a | cat という入力が入ってきた場合はスペース毎に 区切り argmv[0]=ls、argmv[1]=|、argmv[2]=grep...と格納し、 最初の処理でargmv[0]の標準出力をパイプに置き換え、次の処理でargmv[2]と argmv[3]の標準入力、標準出力をパイプに置き換え、最後の処理でargmv[5]の 標準入力をパイプに置き換えるという感じです。
212 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 00:45:43 ] オナニーはひとに頼らずに自分一人でやれよ
213 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 00:53:57 ] 再帰的に処理すればいいじゃん。
214 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 01:12:11 ] >>211 Q&Aかよ!
215 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 02:00:42 ] >>211 「俺コード」で説明するのはやめてくれ。 まずパイプを二個作り、 ・lsの標準出力をpipe1のfd[1] ・grepの標準入力をpipe1のfd[0] ・grepの標準出力をpipe2のfd[1] ・catの標準出力をpipe2のfd[0] に繋ぎ変えればOK。
216 名前:215 mailto:sage [2006/07/19(水) 02:03:19 ] あっと、それからその手のコードを書くときは ・何かを標準出力に出力するだけのプログラム ・標準入力をそのまま標準出力にするプログラム を作って、それを使ったほうがいろいろ便利。デバッグプリントとか入れやすいし。
217 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 03:20:38 ] shellでも作ろうとしてるんだろうか?
218 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 03:33:44 ] 宿題らしい。
219 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 04:02:29 ] 最近の大学生は「特殊化-一般化」の概念も知らないんだろうか。
220 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 04:29:47 ] 一人の特殊なサンプルで最近の大学生は〜と一般化してしまうのもどうかと思う
221 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 07:34:40 ] 一人のサンプルが、特殊なのか一般なのかを問うている疑問なのでは?
222 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 10:06:18 ] 揚げ足とりしてる暇あったら回答してあげようよ
223 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 12:10:24 ] やだ。なんかこいつむかつくもん。
224 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 13:03:19 ] 実際 csh とか tcsh とかは hoge | fuga | hage みたいなコマンドライン受け取ったら >>211 の処理をするんでしょうか? (違う方法で実現してる気がするけど) あと hoge -o hage | ukiki -e `echo *` | fuga -p 'kuso' | puka みたいになってるとややこしいね
225 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 13:10:01 ] >>224 ソース見れば?
226 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 13:35:36 ] 本物がどうやってるかはおいといて・・・ 1.まず区切り( ; とか | とか & とか・・・)で分ける ・hoge -o hage ・ukiki -e `echo *` ・fuga -p 'kuso' ・puka 2.空白で区切ったそれぞれを評価 ・hoge ←そのままでおけ ・-o ←そのままでおけ ・`echo *` ←バッククォート内を評価した結果に置き換える 3.それぞれパイプで繋げて実行 みたいな感じやろ。
227 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 14:05:54 ] 今、『OS自作入門』を読んでる途中で、ちょっと興味があるので実験してみました。 書いたコードは、ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2397.txt です。 このコードは次のことを行います。 ・親プロセスがpipeを二つ作る ・lsの結果をmycat(自作)を二回通す ・起動するアプリは、パイプでつなげながらfork-exec ここで質問なんですが、 ・一番最後のclose(fd[0][1])を実行しないと、子プロセスが終了しないのですが、 それはなぜでしょうか? ・なんか、もっと簡単にできないでしょうか。 今の方針だと、n個のプロセスを起動する場合は、n-1個のpipeが必要で、 それぞれfork後、関係ないpipeを全部closeしなければなりません。 なお、maycat.cは以下です。 #include <unistd.h> int main() { char buf[1]; while (read(0, buf, 1) > 0) { write(1, buf, 1); } return 0; }
228 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 16:43:51 ] >>227 > 今の方針だと、n個のプロセスを起動する場合は、n-1個のpipeが必要で、 > それぞれfork後、関係ないpipeを全部closeしなければなりません。 それはプログラムの書き方が悪いから。 pipeとforkをサンドイッチにして。
229 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 17:20:36 ] >>228 コメントありがとうございました。 アドバイスを受けて、書き直してみました(ループ化もした)。 ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2400.txt 何かコメントがありましたら、またお願いします。
230 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 19:13:39 ] apacheには、AcceptMutexというディレクティブがあるみたいだが
231 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 19:14:00 ] ごめん誤爆
232 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 21:01:15 ] >>229 ええんとちゃいますの。(実行してみてないけどw) lだとコマンドごとに引数可変長にできないからvにしてみて。
233 名前:211 [2006/07/19(水) 21:47:07 ] kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2406.txt 一応それらしい形にはできたのですが、パイプで命令を繋いでいっても なにも出力されません。パイプの部分をコメントアウトするとそれぞれの 命令を実行していくので、繋ぎ方がおかしいと思うのですが、どこが 間違っているか分かりますでしょうか? ↑のは元のが長いので命令を固定して繋ぐところだけやってます。
234 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 21:58:48 ] $ grep grep a grep: a: そのようなファイルやディレクトリはありません
235 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 22:38:02 ] 質問させて下さい。 引数に ~/hoge/ を指定されたら~/hoge/の中身を配列にいれたのですが それはどうするればいいんでしょうか?
236 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 22:40:34 ] >>235 入れた後どうするかは君次第。
237 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 22:56:55 ] UNIXプログラムができて、納品も済みました。この後どうすればいいでしょう?
238 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 22:59:35 ] 取り敢えず給料を見越してサラ金で金借りて風俗
239 名前:デフォルトの名無しさん mailto:sage [2006/07/20(木) 00:06:04 ] 小便を済ませて神様にお祈りして部屋のスミでガタガタふるえて命ごいをする心の準備をする。
240 名前:デフォルトの名無しさん mailto:sage [2006/07/20(木) 00:42:51 ] >>233 >>229 のコード参考にしたら?
241 名前:デフォルトの名無しさん mailto:sage [2006/07/20(木) 11:55:58 ] コードが書けないので、書いてくださいとお願いしても誰も書いてくれない。 しかたないので自分で書いてみて、動かないのでどこがわるいのか聞いても誰も教えてくれない。 なんなの!ここ。もう二度とこんなとこ来るもんか! と>>233 は思ってるに違いない。 でもね、それは違うよ。質問のやり方が悪いんだよ。
242 名前:234 mailto:sage [2006/07/21(金) 01:14:29 ] 答えてるやん!
243 名前:デフォルトの名無しさん mailto:sage [2006/07/21(金) 23:04:18 ] >233 forkしてからpipeしない、順序逆。
244 名前:デフォルトの名無しさん [2006/07/22(土) 17:46:59 ] Linuxスレッドプログラミングの良い書籍ないか?
245 名前:デフォルトの名無しさん mailto:sage [2006/07/22(土) 19:00:30 ] >>244 俺はこれを読んで学んだ。 英語だけど意外とわかりやすかった。 www.advancedlinuxprogramming.com/ www.advancedlinuxprogramming.com/alp-folder/alp-ch04-threads.pdf
246 名前:デフォルトの名無しさん mailto:sage [2006/07/22(土) 20:08:23 ] >245 thx! やっぱpthreadなんだ オライリーで一冊日本語の本あったけど、どうしようかな。
247 名前:デフォルトの名無しさん mailto:sage [2006/07/22(土) 23:15:28 ] UNIX板のpthread地獄スレに推薦図書あるよ。 この板のマルチスレッドプログラミングスレにも。
248 名前:デフォルトの名無しさん [2006/07/22(土) 23:25:08 ] >>247 イッテミルお
249 名前:デフォルトの名無しさん [2006/07/23(日) 02:35:56 ] 基本的な質問かもしれないですけど プログラム上からカレントディレクトリを変更する方法ってありますか? あるなら教えてください・・・・
250 名前:デフォルトの名無しさん mailto:sage [2006/07/23(日) 03:33:39 ] chdir(2) いっとくけど、cdコマンドは原理的に単独のプログラムとしては作れないからね。
251 名前:デフォルトの名無しさん [2006/08/17(木) 19:43:41 ] Red Hat Enterprise Linux 3 はBSD系ですか?SVR4系ですか?
252 名前:デフォルトの名無しさん mailto:sage [2006/08/17(木) 19:45:53 ] >>250 何を言ってるのだ、お前は。
253 名前:デフォルトの名無しさん mailto:sage [2006/08/17(木) 20:00:59 ] >>251 SVR4 >>252 お前こそ何を言ってるんだ。
254 名前:デフォルトの名無しさん mailto:sage [2006/08/17(木) 20:50:20 ] >>253 どうやって識別できるの?
255 名前:デフォルトの名無しさん mailto:sage [2006/08/17(木) 21:39:13 ] >>254 LinuxはSVR4、*BSDはBSD
256 名前:デフォルトの名無しさん mailto:sage [2006/08/17(木) 21:46:12 ] LinuxはSytemV系かBSD系かといえば、どちらかというとSysemV系という感じ。 詳しくはttp://ja.wikipedia.org/wiki/UNIX
257 名前:デフォルトの名無しさん mailto:sage [2006/08/17(木) 21:46:56 ] >>255 utmpファイルの場所がBSD系と同じなんだが
258 名前:デフォルトの名無しさん mailto:sage [2006/08/17(木) 21:48:16 ] >>257 >>256
259 名前:256 mailto:sage [2006/08/17(木) 22:05:56 ] >>255 ようわかったわ
260 名前:256 mailto:sage [2006/08/17(木) 22:22:10 ] >>259 誰ディスカ?
261 名前:デフォルトの名無しさん mailto:sage [2006/08/18(金) 00:48:44 ] >>256 そこの UNIX 系統図は酷いな。 ここ(www.levenez.com/unix/ )までしろとは言わんけどさ、 もうちょっと、ねぇ。
262 名前:デフォルトの名無しさん mailto:sage [2006/08/18(金) 00:55:44 ] >>261 耐えられないほどひどいのなら、書き換えていいんですよ。
263 名前:デフォルトの名無しさん mailto:sage [2006/08/18(金) 01:12:33 ] >>262 貧乏人を見るのが小金持ちの楽しみなのさ。
264 名前:デフォルトの名無しさん mailto:sage [2006/08/18(金) 01:29:44 ] >>261 の関係図はGraphvizを使ってるのかな
265 名前:デフォルトの名無しさん mailto:sage [2006/08/18(金) 14:25:44 ] >263 悪趣味……
266 名前:デフォルトの名無しさん mailto:sage [2006/08/18(金) 23:59:52 ] 宗教の勧誘は最高に素敵な趣味だよな。
267 名前:デフォルトの名無しさん mailto:sage [2006/08/20(日) 21:26:23 ] 詳解UNIXプログラミングで勉強してます なかなか難しいっす
268 名前:デフォルトの名無しさん mailto:sage [2006/08/21(月) 05:06:48 ] なんかUNIXのdaemonてマルチプロセスが多いみたいだけどなんででしょう? 全部マルチスレッドでやったらいいと思うんですけど
269 名前:デフォルトの名無しさん mailto:sage [2006/08/21(月) 09:51:42 ] スレッドが簡単に使えるようになる前からあるコードが多いから。
270 名前:デフォルトの名無しさん mailto:sage [2006/08/21(月) 12:35:49 ] ・ひとりがこけたらみなこけた、にならないように ・再起動しやすいように
271 名前:デフォルトの名無しさん mailto:sage [2006/08/21(月) 21:48:34 ] >>270 スレッド間グローバル変数みたいなアホなテクが使えないので結果的にコードがすっきりする。
272 名前:デフォルトの名無しさん mailto:sage [2006/08/21(月) 23:35:06 ] そんなの全部後付けの理由だろ。 本当の理由は>>269 の言うように Unixにまともなスレッドが実装されたのがかなり後だから。 で、それまでの資産(書籍やサンプル等も含めて)が多数あり マルチプロセス向きの機能や性能が常に強化の目標になっていたからさ。
273 名前:デフォルトの名無しさん mailto:sage [2006/08/21(月) 23:39:06 ] >>271 ?
274 名前:デフォルトの名無しさん mailto:sage [2006/08/21(月) 23:40:47 ] >>272 ?
275 名前:デフォルトの名無しさん mailto:sage [2006/08/21(月) 23:49:41 ] >>273 ?
276 名前:デフォルトの名無しさん mailto:sage [2006/08/21(月) 23:53:49 ] >>274 ?
277 名前:デフォルトの名無しさん mailto:sage [2006/08/21(月) 23:59:54 ] >>275 ?
278 名前:デフォルトの名無しさん mailto:sage [2006/08/22(火) 00:16:18 ] まともでポータブルなスレッドの実装なんて、今でもあるのかどうかw
279 名前:デフォルトの名無しさん mailto:sage [2006/08/22(火) 00:19:06 ] 商用Unixであれば、ポータブルなんて考えなくていいから
280 名前:デフォルトの名無しさん mailto:sage [2006/08/22(火) 00:44:17 ] そういうのでスレッドが利きそうなのは、スレッド化されてるんじゃないの? nfsがらみとかさ。
281 名前:デフォルトの名無しさん mailto:sage [2006/08/22(火) 20:21:13 ] スレッドってエンドユーザが扱いにくいだろ プロセスなら扱いやすい。 エンドユーザのことを考えろよ
282 名前:デフォルトの名無しさん mailto:sage [2006/08/22(火) 21:10:46 ] UNIXのエンドユーザーなんて大規模サーバの管理者だったりするわけで 多少の扱いやすさより効率うpの方がうれしいと思うけど
283 名前:デフォルトの名無しさん mailto:sage [2006/08/22(火) 22:18:22 ] >>281 子プロセス一個殺せたところで嬉しくも何ともない。
284 名前:デフォルトの名無しさん mailto:sage [2006/08/22(火) 22:19:48 ] >>283 シグナルを気軽に送れるところに意味がある。
285 名前:デフォルトの名無しさん mailto:sage [2006/08/22(火) 22:24:33 ] >>268 マルチスレッドでやったらいいと思うのは、具体的にはどのdaemonのこと?
286 名前:デフォルトの名無しさん mailto:sage [2006/08/22(火) 22:42:04 ] >>285 init
287 名前:デフォルトの名無しさん mailto:sage [2006/08/22(火) 22:57:02 ] 犬板にお引き取りください
288 名前:デフォルトの名無しさん mailto:sage [2006/08/22(火) 23:18:27 ] >>284 つprocess group つPOSIX 1003.1b
289 名前:デフォルトの名無しさん mailto:sage [2006/08/23(水) 00:46:29 ] >>288 何が言いたいの?
290 名前:デフォルトの名無しさん mailto:sage [2006/08/23(水) 01:07:58 ] BIND はマルチスレッドじゃなかったっけ? >>268 歴史的な理由:スレッドが普及する前から UNIX は存在したとか、古い OS でも動かしたいとか 実装的な理由:移植性が必要とか、デバッグし辛いとか、排他が面倒とか 管理上の理由:スレッド単位で kill 出来ないとか、プロセスの方が監視し易いとか 古い環境を無視出来るなら、もっとマルチスレッドにして良いと思うよ
291 名前:デフォルトの名無しさん mailto:sage [2006/08/23(水) 01:16:33 ] configureまたはコンパイルオプションで、マルチプロセスかマルチスレッドを 選べる奴も増えてるよね。
292 名前:デフォルトの名無しさん mailto:sage [2006/08/23(水) 08:06:32 ] ほんとうに並列性が必要ならマルチプロセスだよね。マルチスレッドはお手軽だけど制限が多い
293 名前:デフォルトの名無しさん mailto:sage [2006/08/25(金) 01:19:09 ] MPIとか
294 名前:デフォルトの名無しさん mailto:sage [2006/09/11(月) 08:18:14 ] スーパー破瓜ーになりたいんですがどうすればいいですか?!!!!11!!
295 名前:デフォルトの名無しさん mailto:sage [2006/09/11(月) 23:40:06 ] >>294 大根でも突っ込んでしまえ。
296 名前:デフォルトの名無しさん [2006/09/12(火) 14:24:14 ] 共有メモリをマップ中に、万一、 プロセスが 9 番受けてデタッチできずに死んでしまっても、 また起動すれば共有メモリ自体はまた正しくマップできますか? 共有メモリ自体が残っていることは問題ないとします。
297 名前:デフォルトの名無しさん mailto:sage [2006/09/12(火) 14:27:29 ] mmapだよね? 出来ますよ。共有ファイルの権限が変わってない限り。 System V IPCの共有メモリも同様。
298 名前:296 mailto:sage [2006/09/12(火) 14:32:02 ] >>297 ありがとうございましたー!!
299 名前:デフォルトの名無しさん [2006/09/15(金) 19:08:21 ] おねがいします。 自分のファイル名(x.exe)を読み込んで xの部分がAすなわちA.exeだったらaを実行して xの部分がBすなわちB.exeだったらbを実行する っていうようなCのプログラムを教えてください。
300 名前:デフォルトの名無しさん mailto:sage [2006/09/15(金) 19:54:46 ] 宿題は宿題スレで
301 名前:デフォルトの名無しさん mailto:sage [2006/09/15(金) 20:32:44 ] UNIXなのに、A.exeなんて名前をつける香具師は死んでしまえ
302 名前:デフォルトの名無しさん [2006/09/15(金) 21:15:31 ] >>299 マルチ乙 35 名前: デフォルトの名無しさん 投稿日: 2006/09/15(金) 19:06:52 おねがいします。 自分のファイル名(x.exe)を読み込んで xの部分がAすなわちA.exeだったらaを実行して xの部分がBすなわちB.exeだったらbを実行する っていうようなCのプログラムを教えてください。
303 名前:デフォルトの名無しさん mailto:sage [2006/09/15(金) 21:37:30 ] busyboxのソースが参考になるかと思うんだけど
304 名前:デフォルトの名無しさん mailto:sage [2006/09/15(金) 21:58:35 ] ヒント argv[0] ヒント以上だな。
305 名前:デフォルトの名無しさん mailto:sage [2006/09/15(金) 22:01:41 ] >>281 同意。 apacheで異常暴走したCGIをとめる時とか スレッドよりマルチプロセスのほうが 気軽にkillできるということで・・ スレッドのほうがコストが低いとかスティーブンス本には 書いて歩けど中身がスレッドで見た目マルチプロセス みたいな解はないもんかね。 スレッド単位でkillできる方法とかあれば topをカスタマイズするとか チャレンジしてみたいけどねーけどねー・・
306 名前:デフォルトの名無しさん mailto:sage [2006/09/15(金) 22:53:13 ] >スレッド単位でkillできる方法とかあれば 共有してるコンテキストがボロカスになりそうだ。
307 名前:Motif?はぁ? mailto:sage [2006/09/15(金) 23:01:32 ] ぜっっっっっっっっってーウインドウ物のプログラムなんか書いてたまるか! て、思っていたが…書く羽目になりますた。orz もち〜ふの処女用教科書とか、ありましたら教えてくだしあ とりあえず今は、ここ↓で勉強中でし home.soka.ac.jp/~unemi/Motif/example.html
308 名前:デフォルトの名無しさん mailto:sage [2006/09/15(金) 23:03:59 ] よりによって今からもちーふかよ。
309 名前:デフォルトの名無しさん mailto:sage [2006/09/15(金) 23:32:02 ] >>307 茨の道にようこそ。今時のLinuxに載っているようなMotifはVer2になっているから ComboBoxやTabPageが使えたりして便利な反面、その辺りを説明している資料は殆どない罠。
310 名前:デフォルトの名無しさん mailto:sage [2006/09/15(金) 23:35:55 ] >>309 これからも訓練頑張って下さい。
311 名前:デフォルトの名無しさん mailto:sage [2006/09/16(土) 11:25:27 ] >>309 私ゃ素人でアレなんでつが、あの、開発環境っぽい ぐれーど てえのは、皆さん普通に使いますか?
312 名前:デフォルトの名無しさん mailto:sage [2006/09/16(土) 19:40:20 ] おそらくここにはXで何か作ってる人間はいないと思われ
313 名前:デフォルトの名無しさん mailto:sage [2006/09/16(土) 22:07:52 ] >>312 かつて作ったが、今は(そのプロジェクトは終わっているので)作っていない。 >>311 私ゃ皆さんじゃないよ〜 >>310 何の訓練?
314 名前:デフォルトの名無しさん mailto:sage [2006/09/17(日) 00:23:18 ] ぐれーどというのがgladeのことなら、 それはGtk+というツールキットを使ったアプリのUI(ウィンドウ内の部品配置) 定義を対話的に作って、それをXMLで出力するもの。Motifには無縁の存在。
315 名前:デフォルトの名無しさん mailto:sage [2006/09/17(日) 00:30:41 ] >>314 そのXMLをパースしてmotifのウィジットを配置する関数を生成するジェネレータを作ればいい。 あなたは頭が固すぎる。
316 名前:デフォルトの名無しさん mailto:sage [2006/09/17(日) 02:11:51 ] >>315 仕事で似たようなことやってるが、不毛だぞ。
317 名前:デフォルトの名無しさん mailto:sage [2006/09/20(水) 21:24:01 ] シェルのプログラムのBASHを使って、 九九の表を作成したいのですが、記述例を教えてください。 お願いします。 Whileとか使った方がいいようです。。。 できれば、説明もお願いします。
318 名前:デフォルトの名無しさん mailto:sage [2006/09/20(水) 21:43:32 ] >>317 $ for n in `seq 9`; do for m in `seq 9`; do echo -n `expr $n '*' $m` ""; done; echo ;done man seq man expr
319 名前:デフォルトの名無しさん mailto:sage [2006/09/20(水) 21:56:35 ] どーせ質問者Linux使ってるだろうからあるだろうけど、 seqって可搬性あるんだっけ? yes '' | cat -n | head -9 とか書けばいい?
320 名前:デフォルトの名無しさん mailto:sage [2006/09/20(水) 22:13:45 ] そっか、可搬性か。bash限定だから s/`seq 9`/{1..9}/g かな?
321 名前:デフォルトの名無しさん mailto:sage [2006/09/21(木) 07:58:39 ] # cat seq #! /bin/sh if [ $# -lt 1 ]; then echo missing operand 1>&2 exit 1 elif [ $# -gt 3 ]; then echo extra operand 1>&2 exit 1 elif [ $# -eq 1 ]; then FIRST=1 INC=1 LAST=$1 elif [ $# -eq 2 ]; then FIRST=$1 INC=1 LAST=$2 elif [ $# -eq 3 ]; then FIRST=$1 INC=$2 LAST=$3 fi n=$FIRST while [ "$n" -le "$LAST" ]; do echo "$n" n=`expr "$n" + "$INC"` done
322 名前:デフォルトの名無しさん mailto:sage [2006/09/21(木) 21:07:18 ] 皆さん考えてくださってありがとうございます。 考えてくださっているのですが、 IFやFOR等は使っちゃだめみたいなんです。 記述は、 #!/bin/bash while [ ] do done のような記述のみでつくれっていわれてるんです。 whileは自動的に表示結果に改行が入ってしまいますよね? その改行をなくすにはどうしたらいいんでしょうか?
323 名前:デフォルトの名無しさん mailto:sage [2006/09/21(木) 21:38:47 ] 宿題ですか。
324 名前:デフォルトの名無しさん mailto:sage [2006/09/21(木) 22:00:28 ] $ n=1;while test $n -le 9; do m=1;while test $m -le 9; do echo -n `expr $n '*' $m` ""; m=`expr $m + 1`; done; echo; n=`expr $n + 1`; done echo -nを使う
325 名前:デフォルトの名無しさん mailto:sage [2006/09/21(木) 22:07:03 ] 正直、宿題です orz
326 名前:デフォルトの名無しさん mailto:sage [2006/09/21(木) 22:33:04 ] echo -nを使っている状態で、改行させるにはどうしたらいいですか?
327 名前:デフォルトの名無しさん mailto:sage [2006/09/21(木) 23:03:53 ] echo -n "hoge" " " "hage"
328 名前:デフォルトの名無しさん mailto:sage [2006/09/23(土) 10:16:53 ] >>326 -nを付けない。
329 名前:デフォルトの名無しさん mailto:sage [2006/09/23(土) 10:50:33 ] \n
330 名前:デフォルトの名無しさん mailto:sage [2006/09/26(火) 13:16:41 ] ありがとうございました。 無事、宿題を終えました。 色々と教えてくださった方々感謝します。
331 名前:デフォルトの名無しさん [2006/10/02(月) 23:08:27 ] だれか教えて。 Makefileで環境変数(PATH)を変更したいのです。 現在設定されているPATHの先頭に/aaaを追加するには どう記述すればよいですか
332 名前:デフォルトの名無しさん mailto:sage [2006/10/02(月) 23:52:36 ] >>331 PATH=$(PATH):/aaa
333 名前:デフォルトの名無しさん mailto:sage [2006/10/02(月) 23:55:44 ] PATH=/aaa:$PATH
334 名前:331 [2006/10/03(火) 00:18:02 ] ありがとう^^ 試してみます。
335 名前:デフォルトの名無しさん mailto:sage [2006/10/03(火) 09:41:22 ] >>333 括弧つけろよ。
336 名前:デフォルトの名無しさん mailto:sage [2006/10/04(水) 01:51:39 ] >>321 って何?
337 名前:デフォルトの名無しさん mailto:sage [2006/10/04(水) 01:59:02 ] >>336 動かしてないけど、連続した数の列を吐くスクリプトだな。 その上にある質問(>>317 )への回答(>>318 )に出てきたGNUのseq(やBSDの jotだっけ?)は移植性がないので、スクリプトとして作ったわけ。 スクリプトのはじめの長いif文は引数の数によって、開始値・終了値・刻みを セットしている。(case $# in...のほうが見やすいかも)
338 名前:デフォルトの名無しさん mailto:sage [2006/10/04(水) 16:02:10 ] esac だけはいまだに慣れない
339 名前:デフォルトの名無しさん mailto:sage [2006/10/04(水) 16:12:40 ] caseだとこうか。 case $# in 1) FIRST=1; INC=1; LAST=$1;; 2) FIRST=$1; INC=1; LAST=$2;; 3) FIRST=$1; INC=$2; LAST=$3;; *) [ $# -lt 1 ] && echo missing operand 1>&2 [ $# -gt 3 ] && echo missing operand 1>&2 exit 1;; esac
340 名前:デフォルトの名無しさん mailto:sage [2006/10/05(木) 10:21:44 ] マイナスになることはないので、0)と*)でいいのではないか?
341 名前:デフォルトの名無しさん [2006/10/08(日) 01:31:24 ] すみません、突然なんですけど 昨日プログラミングの講義で課題を出されて eのx乗を求めるプログラムを作れと言われて 困ってます。昨日からずっと考えてるんですが 全くわかりません。 どなたか教えてもらえませんか?
342 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 01:48:32 ] pow関数使ってもいいのか?
343 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 01:49:04 ] 昨日からずっと考えてるって… 何を、どんな知識をベースに考えてたんだ? 単純に、こういうことなんじゃないのか? www.google.co.jp/search?hl=ja&q=%22math.h%22+log&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja
344 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 02:08:30 ] >>341 UNIX関係あるのか? math.h使わないとして普通に考えても 0乗なら 1 1条なら e x乗なら e^x をしたらいいだけじゃないのか?
345 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 02:16:04 ] xが整数とは限らないとちょっと面倒かも つか宿題スレ池
346 名前:デフォルトの名無しさん [2006/10/08(日) 02:22:40 ] >>344 LINUXでやってます。 プログラミングの知識が乏しくて プログラミングをかけないんです。 #include <math.h> double log(double x); って感じで書くんですけど・・・ その後がいまいちわからなくて・・・
347 名前:344 mailto:sage [2006/10/08(日) 02:27:22 ] >>346 入門書読め 乗算以前にC言語の構文が理解できてない
348 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 02:41:50 ] eが自然対数の底ならlog(x)じゃなくexp(x)でそのものずばりだろ。
349 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 03:13:13 ] exp(x)関数使わせるだけの演習なの?
350 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 03:16:42 ] 構文が理解できてないようだから、構文の勉強中じゃないの?
351 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 05:41:59 ] 金払ってまで勉強する領域で講義もろくに聞いてないとは。
352 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 06:06:21 ] 俺も思う。 金払って勉強してるのに、なぜ答えてくれるかどうかもわからない2chなんかで聞くのか。 金払ってるんだから講師にでも聞けよ
353 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 10:22:06 ] 勉強でも遊びでも、学生時代の経験ってのは大切だ。 市民権のある立場を買ってると考えればよい。
354 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 13:26:51 ] 留学生には市民権はないぞ。 市民権というのは、citizenshipの訳語で、 政治参加の権利を持っている人のことだぞ。 ギリシャのポリス市民から来ている。
355 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 17:01:33 ] >>354 どうでもいいよ。定義なんて。
356 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 17:07:05 ] >>355 どうでもいいよ。お前の意見なんて
357 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 17:11:18 ] >>356 じゃあわざわざwikipedia書くような労力払わんで下さいよ。
358 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 17:11:39 ] キミタチキモイヨ
359 名前:デフォルトの名無しさん [2006/10/09(月) 13:21:17 ] GCCとMakeの質問です。 Apacheモジュールからpostgresへつなげる処理を 作っているのですが、 Makeしたときに"closesocket"関数がpostgres.hとport.h内で再定義(redefined)された という警告が出力されます。 こういう場合、何か回避するよい方法がありますでしょうか? 今のところpostgres側のヘッダ(port.h)に #define closesocket pg_closesocket とかすればよいのだろうかと考えていますがどのような影響があるかわからず躊躇しています。 ・Make時のログ In file included from /usr/local/include/postgresql/server/c.h:822, from /usr/local/include/postgresql/server/postgres.h:48, from mod_blog.c:9: /usr/local/include/postgresql/server/port.h:273:1: warning: "closesocket" redefi ned In file included from /usr/local/include/apache/httpd.h:29, from mod_blog.c:2: /usr/local/include/apache/ap_config.h:1084:1: warning: this is the location of t he previous definition ・ソースファイル(ヘッダ部) #include <string.h> #include "httpd.h" #include "http_config.h" #include "http_protocol.h" #include "ap_config.h" #include "http_log.h" #include "libapreq/apache_request.h" #include <postgres.h> #include <libpq-fe.h> <略>
360 名前:デフォルトの名無しさん mailto:sage [2006/10/09(月) 13:22:35 ] 警告出したくないだけなら/dev/nullにパイプしろ
361 名前:359 [2006/10/09(月) 13:29:00 ] 訂正です。 X Makeしたときに"closesocket"関数がpostgres.hとport.h内で再定義(redefined)された ○ Makeしたときに"closesocket"関数がap_config.hとport.h内で再定義(redefined)された >>360 いやそれだと意味が...;
362 名前:デフォルトの名無しさん mailto:sage [2006/10/09(月) 13:40:11 ] >>359 自作モジュールでclosesocketを使わなければうまく行く。 (と言うか問題があればリンク時にこけるので取りあえず無視して良い)
363 名前:デフォルトの名無しさん mailto:sage [2006/10/09(月) 13:40:14 ] >>361 どう回避したいのかいってないから、警告を表示したくないと思われても仕方ない罠
364 名前:デフォルトの名無しさん mailto:sage [2006/10/09(月) 13:41:04 ] >>363 知らんのなら出てくんなや。と言う正論。
365 名前:デフォルトの名無しさん mailto:sage [2006/10/09(月) 13:51:04 ] 知った上で書き込めるのはエスパーだけ!
366 名前:デフォルトの名無しさん mailto:sage [2006/10/09(月) 13:53:03 ] >>365 そこそこ回答が上がってるわけですがw
367 名前:デフォルトの名無しさん mailto:sage [2006/10/09(月) 13:56:45 ] じゃぁ、それで満足しておけよw
368 名前:359 [2006/10/09(月) 13:57:12 ] >>362 >>と言うか問題があればリンク時にこけるので取りあえず無視して良い) なるほどー 今のところ、モジュール自体は動いているし Makeがエラーを吐いてとまることもないので 実用上問題はないかも・・・と とりあえず postgresの関数の内部(PQfinishとか接続を切る系?) などの中で該当関数が使われてないかをみて影響範囲を絞り込んでみます。 ありがとうございます。 >>363 そうですねー 重複しているclosesocket関数が、内部的に衝突・上書きされずに共存する回避の仕方 がないかということです。
369 名前:デフォルトの名無しさん mailto:sage [2006/10/09(月) 14:17:22 ] #ifndef __WIN32__ #define closesocket close #endif みたいな感じだと思うけどねー。
370 名前:デフォルトの名無しさん [2006/10/10(火) 14:59:06 ] 任意の長さの文字列データをファイルから読み込み、辞書順に並び替えて最終結果のみを表示するプログラミングを作成せよ。ただし、データは改行で区切られており、文字列の最大長を64、データの最大個数を1000とする。 っていう問題が学校で出たんですけど、誰か教えてくれませんか。
371 名前:デフォルトの名無しさん mailto:sage [2006/10/10(火) 15:00:13 ] >>370 先生に聞け
372 名前:デフォルトの名無しさん mailto:sage [2006/10/10(火) 15:20:36 ] 辞書順の定義が謎だね。出題者(センセ)は分かってるんだろうか。 アルファベットだけでも aAbBなのかAaBbなのかabABなのか ABabなのかはロカールによって違う。 ロカール指定で済むなら、strcmpの代わりにstrcollを使えば LC_COLLATEを見てくれるので話ははやいが。
373 名前:デフォルトの名無しさん mailto:sage [2006/10/10(火) 16:01:45 ] UNIX関係ない質問に答えている人って馬鹿なんでしょうか?
374 名前:デフォルトの名無しさん mailto:sage [2006/10/10(火) 16:04:31 ] 関係ない上に重箱の隅w
375 名前:デフォルトの名無しさん mailto:sage [2006/10/10(火) 22:22:53 ] 釣りだろ。373に答える奴は馬鹿かとも言ってるわけだから。
376 名前:デフォルトの名無しさん mailto:sage [2006/10/11(水) 02:34:40 ] >>370 system("sort");
377 名前:デフォルトの名無しさん mailto:sage [2006/10/11(水) 04:56:51 ] >>376 おそれいった。
378 名前:デフォルトの名無しさん mailto:sage [2006/10/11(水) 23:15:38 ] >>文字列の最大長を64 ぬるい。 どうせなら文字列は可変長、リストに格納しつつソートとか のほうが実践的
379 名前:デフォルトの名無しさん mailto:sage [2006/10/11(水) 23:51:43 ] >>378 実戦で底までせなあかん局面がない。
380 名前:デフォルトの名無しさん mailto:sage [2006/10/12(木) 01:00:06 ] メモリ資源の乏しい計算機でも実行できるというメリットがある
381 名前:デフォルトの名無しさん [2006/10/19(木) 11:41:06 ] コマンド実行で誤って*******(アスタリスク7文字)を入力したら subjectの入力となりました。 mailコマンドを実行したわけでもなく原因がわかりません。 ご教授よろしくお願いします。
382 名前:デフォルトの名無しさん mailto:sage [2006/10/19(木) 11:46:27 ] echo ******* とかやってみ。たぶん先頭にMailがいるんじゃないか?
383 名前:デフォルトの名無しさん mailto:sage [2006/10/19(木) 11:53:58 ] >>381 鼬害。シェルにおける'*'の意味を考えれば、何が起きたか判るはず。
384 名前:デフォルトの名無しさん [2006/10/19(木) 22:05:28 ] >>383 それを説明しろ できねんだろ?
385 名前:デフォルトの名無しさん mailto:sage [2006/10/20(金) 00:17:47 ] ありゃりゃ?そこにからむのか?w
386 名前:デフォルトの名無しさん [2006/10/21(土) 22:48:10 ] すみません。どなたか教えてください。 cout << "こんにちは" << endl; を含むコードをコンパイルし、実行したところ、"こんにちは"の部分が文字化けして、読めません。 OSはCent OS4.3です。
387 名前:386 [2006/10/21(土) 22:49:39 ] どうしたら、日本語の出力ができるようになるんでしょうか?
388 名前:デフォルトの名無しさん mailto:sage [2006/10/21(土) 23:03:29 ] >387 ロケールを設定。 ttp://www.google.co.jp/search?q=C%2B%2B+locale
389 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 11:34:31 ] 常にウインドウを最前面に配置したいのですが、 それはどのようにして実現できるのでしょうか?
390 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 12:06:50 ] >>389 ウィンドウ環境によって異なります。
391 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 12:42:58 ] >>390 汎用的な方法は無いのでしょうか?
392 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 13:00:05 ] >>391 window managerにそう指定する。
393 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 13:19:10 ] >>392 どこが汎用的なんだ? >>391 やったことないけど、Windowが隠されたら最前面にマップするようにしたら?
394 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 13:54:08 ] > Windowが隠されたら最前面にマップ 2つのアプリがそれやり出したらとっても楽しいことになりそうだな
395 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 13:54:25 ] そもそもXWindowかどうかさえ判らないのに汎用的な方法なぞあるわけがない。
396 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 13:57:40 ] >>394 重なったWindowのプロパティ見れば?
397 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 14:01:27 ] >>396 素朴な疑問だが、どんなウインドウシステムを仮定している?
398 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 14:10:56 ] >>397 汎用的な方法なんだから何も仮定してるわけないだろ。 それでプロパティってのが何のことなのかはさっぱりわからんが
399 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 14:16:43 ] XならWMに対してポリシーのヒントみたいのん設定するんじゃないっけ あとはWM次第みたいな
400 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 14:22:38 ] >>399 それ>>392 じゃないの? 違いは「Xなら」と「あとはWM次第」って予防線?
401 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 14:26:03 ] ああ、そうなんだけど、なんか妙な方向に流れてるから多少具体的に言ってみました
402 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 17:50:02 ] 環境がわからないのに汎用的な方法もクソも無いだろうに…
403 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 20:27:21 ] >>402 環境を選んでる時点で汎用ではないだろ
404 名前:デフォルトの名無しさん mailto:sage [2006/10/23(月) 23:08:26 ] ウィンドウのない環境まで想定したら汎用的な方法などありえない、で終わってしまうな
405 名前:デフォルトの名無しさん mailto:sage [2006/10/26(木) 05:06:24 ] cursesならキャラクタ端末でもウィンドウが
406 名前:デフォルトの名無しさん mailto:sage [2006/10/26(木) 07:44:01 ] 質問した奴はげんなりしてるだろうなw
407 名前:デフォルトの名無しさん [2006/10/26(木) 15:31:08 ] Xのプログラムで質問です。 外部からの指示により、スクリーンサイズと同じサイズの背景透 過なウィンドウを作成したいのですが良い方法はありませんか? やりたいことは、画面上は他のウィンドウが表示されているけど 画面をクリックしたらそのイベントを他のウィンドウに渡さず透 過なウィンドウで受けとって座標位置にあった処理をしたいので す。 デプス1のピクスマップをつくってXShapeCombineMask()を使 用したら透明なウィンドウはできたのですが、画面クリックする と透過された他のウィンドウがイベント拾っちゃいました(TT
408 名前:386 mailto:sage [2006/10/29(日) 15:15:49 ] >>388 レスが遅くなりましたが、ありがとうございます。 なお、ロケール設定後も文字化けして表示してしまって いました。その後、SSHクライアントが日本語に対応して いなかったためだと分かり、やっと解決しました。
409 名前:デフォルトの名無しさん mailto:sage [2006/10/29(日) 18:07:23 ] >>407 xwininfoのソース嫁
410 名前:デフォルトの名無しさん mailto:sage [2006/11/01(水) 16:26:12 ] >>409 それは XGrabPointer使えってことだよね。>>407 が考えていることとは微妙に違う気がする。
411 名前:デフォルトの名無しさん mailto:sage [2006/11/01(水) 19:49:03 ] >>407 XShapeで作成したウィンドウは、下のレイヤのウィンドウを透過しているのではなくて、ビットマスクによって自身の ウィンドウの形状を変更(クリッピング)している。ウィンドウが無いとみなされているので、下のレイヤのウィンドウに イベントが通知される。 参考になりそうなのはkinput2等、IMのソース。 ・class=InputOnly, override_redirect=True なウィンドウを作成すると、非表示のウィンドウでマウス入力が取れる。 ・非表示のウィンドウはフォーカスを持たないため、キー入力を取るためには別途 XGrabKeyboard すれば桶。
412 名前:デフォルトの名無しさん [2006/11/02(木) 22:15:24 ] TCP サーバーソケットで、受信メッセージからDestination IP addressの取得するのは、どうすればよいでしょうか? 一応今までは、UDPだったので、RAWソケットを使ってIPパケットを見ていたのですが、 今度、TCPでもやることになってしまいました。 RAWソケットを使わず、取得する方法は無いでしょうか?
413 名前:デフォルトの名無しさん [2006/11/02(木) 22:26:55 ] >>412 Packet Socket
414 名前:デフォルトの名無しさん mailto:sage [2006/11/02(木) 22:30:26 ] acceptのときに得られるんでない?
415 名前:デフォルトの名無しさん mailto:sage [2006/11/02(木) 22:41:49 ] >>412 ×受信メッセージから ○受信ソケットから getpeeraddr(2)
416 名前:デフォルトの名無しさん mailto:sage [2006/11/02(木) 23:35:44 ] getsockname
417 名前:デフォルトの名無しさん mailto:sage [2006/11/04(土) 10:27:33 ] >>412 質問を明確にしたほうがいいんじゃない? 受信パケットのDestinationってことは、自ノードのアドレスってことだよね 複数アドレスがある場合に特定する方法があれば俺も知りたい(以前調べてわからんかった)
418 名前:デフォルトの名無しさん mailto:sage [2006/11/04(土) 11:08:42 ] >>417 ギャグですか?
419 名前:412です [2006/11/04(土) 14:18:42 ] すみません。レス遅れました。 getsocknameで、自分の情報(受信ソケットの場合Destination IPを取得)ということですね。 どうもありがとうございます。 >>417 そうです。受信パケットのDestinationってことです。もう少しこの部分を強調すれば 良かったですね。 >>413 パケットソケットだと、RAW ソケットになるとおもいますが、私の勘違い?
420 名前:デフォルトの名無しさん mailto:sage [2006/11/05(日) 12:20:08 ] ファイルやディレクトリが存在するかどうかを調べるにはどうしたらよいでしょうか?
421 名前:デフォルトの名無しさん mailto:sage [2006/11/05(日) 12:40:52 ] stat
422 名前:デフォルトの名無しさん mailto:sage [2006/11/05(日) 12:55:23 ] >>421 ありがとうございます。やってみます。
423 名前:デフォルトの名無しさん mailto:sage [2006/11/09(木) 14:50:43 ] close(2)が失敗した場合、ファイルデスクリプタはまだ有効なんでしょうかね? つまりもう一度closeを呼ぶべきかということですが。 EBADF, EINTRの場合は自明として、それ以外の場合は?
424 名前:デフォルトの名無しさん mailto:sage [2006/11/09(木) 23:12:35 ] 中のワークエリアを開放するのは一番最後だろうから、 生きてるんじゃないかい。
425 名前:デフォルトの名無しさん mailto:sage [2006/11/09(木) 23:20:26 ] stat(2)が正統だろうけど、ENOENTが返るならなんでもOKかも。access(2)とか。
426 名前:デフォルトの名無しさん mailto:sage [2006/11/10(金) 00:18:02 ] >>424 ,425 複数のプロセスがopenしてる可能性を考えたことはないのか? システムリソースとプロセスリソースは別物だって考えたことはないのか? Unix系前提で話をすれば... o closeすればプロセスリソースは破棄. o 該当資源を最後にcloseしたやつは待たされるかもしれんが プロセスリソースは破棄されている(システムコールから戻ってくれば) o 残ったI/O処理は破棄される(ドライバが正常/以上完了すれば) o ドライバの作りによっては, プロセスはゾンビになってkillすらできない o 最悪の場合システムダウン
427 名前:デフォルトの名無しさん mailto:sage [2006/11/10(金) 07:18:21 ] おちんぽ^^
428 名前:デフォルトの名無しさん mailto:sage [2006/11/10(金) 12:16:43 ] >>426 複数のプロセスがopenしていても、close したプロセスでは ファイルディスクプリタは無効になるんじゃない? だから>>425 は別に問題ないように思うけど。
429 名前:デフォルトの名無しさん mailto:sage [2006/11/10(金) 12:21:40 ] お前ら流れよく読め。425は423じゃなく420への回答だろ。
430 名前:デフォルトの名無しさん mailto:sage [2006/11/10(金) 12:23:53 ] >>423 もう一度呼ぶべきかどうかは俺にはわからんが、気になるなら 成功かEBADFのどちらかになるまでリトライすりゃいいんじゃね?
431 名前:デフォルトの名無しさん mailto:sage [2006/11/10(金) 12:24:10 ] >>426 が>>424 ,425にまとめて説教してるのが謎
432 名前:デフォルトの名無しさん mailto:sage [2006/11/15(水) 20:35:50 ] >>426 しらんぷりしてりゃいいんだよ
433 名前:デフォルトの名無しさん mailto:sage [2006/11/18(土) 18:51:54 ] close(2)が失敗するような状況で何ができるの?
434 名前:デフォルトの名無しさん mailto:sage [2006/11/18(土) 21:33:25 ] 警告メッセージを吐いておくくらいかな
435 名前:デフォルトの名無しさん mailto:sage [2006/11/19(日) 00:32:14 ] ファイルデスクリプタは放置?
436 名前:デフォルトの名無しさん mailto:sage [2006/11/19(日) 02:17:14 ] ファイルデスクリプタが間違ってたらclose(2)は失敗するけど 間違ったファイルデスクリプタはどうしようもないやん
437 名前:デフォルトの名無しさん mailto:sage [2006/11/23(木) 09:53:13 ] デーモンとか常駐するプログラムの終了処理ってどうすればいいんでしょう? シグナルを受け取ったら終了処理、っていう感じでいいんでしょうか
438 名前:デフォルトの名無しさん mailto:sage [2006/11/23(木) 10:26:44 ] SIGTERMのハンドラで正常終了処理。 例えば、Debian GNU/Linuxだと、 start-stop-daemonコマンドで--stopすることになっているけれど、 この時の送られるシグナルはディフォールトだと、SIGTERM。 FreeBSDでshutdownする時も、SIGTERMが送られる。 kill(1)のディフォールトがSIGTERMだかね。
439 名前:デフォルトの名無しさん mailto:sage [2006/11/23(木) 10:32:11 ] ありがとうございます!
440 名前:デフォルトの名無しさん mailto:sage [2006/11/24(金) 08:29:20 ] シグナルは非同期なので、ハンドラでフラグを立てて 適切な時にフラグをチェックすると楽
441 名前:デフォルトの名無しさん mailto:sage [2006/11/24(金) 09:41:33 ] デバッグ時には、コントローリングターミナルを切り放さずに、 フォアグラウンドで実行することが多いから、 Ctrl-Cで止めた時の、SIGINTも同じハンドラにしておくと便利。
442 名前:デフォルトの名無しさん [2006/11/27(月) 08:46:54 ] >>440 シグナルが非同期、というのは メインスレッドでハンドラが実行される ということですよね?
443 名前:デフォルトの名無しさん mailto:sage [2006/11/27(月) 09:03:23 ] >>442 どのスレッドがシグナルを受け取るかはOSにより異なる
444 名前:デフォルトの名無しさん mailto:sage [2006/11/27(月) 15:34:27 ] シグナルマスクで制御できんじゃね?
445 名前:デフォルトの名無しさん mailto:sage [2006/11/27(月) 19:15:05 ] それではpthread_createからpthread_sigmaskまでの間が危険。 普通はメインスレッド以外ではpthread_killでメインスレッドにシグナルを ルーティングするだけにして、そちらで処理する。 SEGVとかは原因となったスレッドに通知されるのでその限りではないが。
446 名前:デフォルトの名無しさん mailto:sage [2006/11/27(月) 19:28:59 ] スレッド作るまえに全部ブロックしといて、そのあと専用スレッドでsigwaitしてりゃいんじゃね?
447 名前:デフォルトの名無しさん mailto:sage [2006/12/02(土) 00:39:35 ] 今開発中の環境でディスクに書き込む速度を調節したいのですが RAID5の書き込みで、400MB/secも速度が出てしまいちょっと 長い時間データの読み書きを1プロセスが行うだけでIOを占拠してしまいます。 そこで1プロセスで使用できるディスクの速度を75MB/sec固定にしたいのですが どうやってやればいいのかご存知の片いませんか?
448 名前:デフォルトの名無しさん mailto:sage [2006/12/02(土) 01:32:53 ] OS が何だか知らないけど、複数プロセスで書き込めば勝手に分散されるでしょ。
449 名前:デフォルトの名無しさん mailto:sage [2006/12/02(土) 01:33:23 ] >>447 で、あんたの使っているOSは?
450 名前:デフォルトの名無しさん mailto:sage [2006/12/02(土) 01:55:54 ] HPです
451 名前:デフォルトの名無しさん mailto:sage [2006/12/02(土) 02:00:53 ] >>448 それだと平均75MB/sec出ないのですよ Readだけで合わせても、30MBと150MBとか わかれてしまって困ってます。均一に資源を割り当てたいが どうすればいいのかさっぱりわかりません
452 名前:デフォルトの名無しさん mailto:sage [2006/12/02(土) 02:23:06 ] dd で同じオプションで2並列で書き込んでも大きな差が出るの?
453 名前:デフォルトの名無しさん mailto:sage [2006/12/02(土) 08:14:13 ] 流れ切ってすいません…。 設定ファイルを読み込み、解析するためのライブラリはないでしょうか?
454 名前:デフォルトの名無しさん mailto:sage [2006/12/02(土) 08:58:22 ] >>453 あります。 うちのプロジェクトではみんなが好き勝手に設定ファイルを作りたがるので、 切れて共通で使えるようなライブラリを提供してフォーマットを固定にしました。
455 名前:デフォルトの名無しさん mailto:sage [2006/12/02(土) 12:45:51 ] >>453 XMLで書けばいいじゃん 最終的にノード単位で結合すればいいんだし もし設定ファイル読むのに遅いとかいいだしたら 勝手にやって暮れだが
456 名前:デフォルトの名無しさん mailto:sage [2006/12/04(月) 09:32:42 ] 手で書くのが前提の設定ファイルならXMLはお勧めできない。 YAMLあたりで。
457 名前:デフォルトの名無しさん mailto:sage [2006/12/04(月) 18:18:36 ] 手で書くのだって、XML扱えるテキストエディターの方が多い。
458 名前:デフォルトの名無しさん mailto:sage [2006/12/05(火) 05:23:11 ] >>453 C なら libConfuse とかってライブラリがあるよ。 あとは Boost の program_options とかどうよ?
459 名前:デフォルトの名無しさん [2006/12/05(火) 12:08:08 ] 質問です。 普段Microsoft Visual C++を使って数値演算をしているのですが、 演算サーバーの方が処理が早いということで、UNIXを使い始めたところ、 Visual C++で走るプログラムがUNIXとなると実行結果に『NaNQ』が出てきてしまいます。 ソースは同じものを使っているはずなのに。。。 UNIXでのコンパイルは成功しています。 原因としては何が考えられるのでしょう??
460 名前:デフォルトの名無しさん mailto:sage [2006/12/05(火) 12:26:53 ] OS の名前もコンパイラの名前もプログラミング言語の名前も処理の内容も書いてないから 当てずっぽうだけど、改行コード/バイトオーダー/データモデルの何れかじゃない。 取り敢えず改行コードを LF のみに変換してみては?
461 名前:デフォルトの名無しさん mailto:sage [2006/12/05(火) 12:42:58 ] スマソ。言語は C++ だったか。
462 名前:デフォルトの名無しさん mailto:sage [2006/12/05(火) 12:54:12 ] >>459 普通にどっかで桁落ちしてるんじゃねぇの?
463 名前:デフォルトの名無しさん [2006/12/05(火) 13:06:31 ] このような事ができるようなプログラムを1時間以内で教えて下さい。お願いします 1:4個の1桁の数字からなる順列を乱数で生成 (4個の数字は全て異なる) 2:4個の数字の順列を入力 3:生成した順列と入力の順列を比較 (数と位置があっている「hit]) (数はあるけれど位置が違う「blow]) 4:hit数とblow数を表示 5:順列があたるまで入力を繰り返す 実行例 Number?:0123 Hits:0,Blows:1 Number?:0124 Hits:0,Blows:0 Number?:3567 Hits:3,Blows:0 Number?:3568 Hits:3,Blows:0 Number?:3569 Hits:4,Blows:0 Trials:5
464 名前:デフォルトの名無しさん mailto:sage [2006/12/05(火) 13:08:49 ] >>463 宿題スレ行けよ
465 名前:デフォルトの名無しさん mailto:sage [2006/12/05(火) 14:09:51 ] >>459 そういうときはFPUのCWを再設定しろ。 ってばっちゃがいってた。 どうでもいいけどQNaNじゃないの?
466 名前:デフォルトの名無しさん mailto:sage [2006/12/09(土) 16:31:42 ] WindowsのGDI+並に高機能で、主にUNIXで動く、 画像ファイルの読み書き・描画などを行うライブラリはありますか?(GDよりも高機能で できればC/C++等で使えるものでありたいのですが、GIMPのスクリプトとかになるのでしょうか。
467 名前:デフォルトの名無しさん mailto:sage [2006/12/09(土) 17:11:33 ] UNIX板でいきなりGDI+といわれても…
468 名前:467 mailto:sage [2006/12/09(土) 17:13:10 ] ごめん。UNIX板ではなかった。 で、なにそれ?
469 名前:デフォルトの名無しさん mailto:sage [2006/12/09(土) 17:48:10 ] >>466 cairoとかになるのかなぁ
470 名前:デフォルトの名無しさん mailto:sage [2006/12/09(土) 17:53:05 ] 何やりたいかによるんでわ? 画像開いてちょっと加工するならImageMagickとか・・・
471 名前:デフォルトの名無しさん [2006/12/12(火) 13:17:21 ] linux上でプロセス情報を取得するプログラムを作成したいと思っています。 検索して調べたところ task_structという構造体にプロセス情報が格納されているということは分かったのですが、 検索したサイト先であげられているヘッダファイル "include/linux/sched.h" 内に task_structに関する記述が無いのです。 上記構造体を利用するためには、 何か別の手段をとらないといけないのでしょうか? カーネルバージョンは"2.4.21-20.EL"です 分かる方いましたらよろしくお願いします。
472 名前:デフォルトの名無しさん mailto:sage [2006/12/12(火) 13:24:27 ] Linuxの事は良く知らんけど、それってカーネル内のデータ構造と違うの? /procとか見ただけじゃいかんの?
473 名前:デフォルトの名無しさん mailto:sage [2006/12/12(火) 13:36:11 ] ユーザーレベルでそういう情報が見られるように procファイルシステム というのがあるわけだが。
474 名前:471 mailto:sage [2006/12/12(火) 14:03:15 ] >>472-473 レスありがとうございます。 プログラム中からカーネルのプロセス情報を取得するのはムリなのでしょうか?
475 名前:デフォルトの名無しさん mailto:sage [2006/12/12(火) 14:07:55 ] >>474 お礼だけ言って内容は無視するのかよ!
476 名前:471 mailto:sage [2006/12/12(火) 14:44:05 ] >>475 申し訳ないです。 やりたいことなのですが psコマンドで表示されるプロセスのプロセス名を全て取得し、 指定したプロセス名が存在したらそのプロセス開始時間を取得する。 という処理をC言語で実装したいのです。 なので>>471 の内容で質問をしました。 >>472-473 さんの仰るように/procを参照しようとすると 何らかの手段で全プロセスのプロセス番号を取得する必要があると思うのですが c言語でそのようなことは可能なのでしょうか?
477 名前:デフォルトの名無しさん mailto:sage [2006/12/12(火) 14:50:00 ] これでも読んだら? ttp://www.linux.or.jp/JM/html/LDP_man-pages/man5/proc.5.html
478 名前:デフォルトの名無しさん mailto:sage [2006/12/12(火) 14:50:49 ] /proc/[0-9]*/cmdlineを全てfopenして読め。 該当するのが見つかったら、 /proc/該当するPID/statを読んで、start_timeを調べろ。 /usr/src/linux-*/fs/proc/array.cを読めばどれか分かる。
479 名前:デフォルトの名無しさん mailto:sage [2006/12/12(火) 17:27:38 ] >>476 psのソース嫁
480 名前:デフォルトの名無しさん mailto:sage [2006/12/12(火) 19:01:17 ] psの出力を使ったほうが。
481 名前:デフォルトの名無しさん mailto:sage [2006/12/12(火) 19:07:45 ] Linuxなら/proc覗くのが普通なんじゃないの?
482 名前:デフォルトの名無しさん mailto:sage [2006/12/12(火) 22:55:57 ] >>476 > >>472-473 さんの仰るように/procを参照しようとすると > 何らかの手段で全プロセスのプロセス番号を取得する必要があると思うのですが > c言語でそのようなことは可能なのでしょうか? それが/procを参照するってことだ。 opendir() & readdir()
483 名前:デフォルトの名無しさん mailto:sage [2006/12/13(水) 05:48:39 ] readdir()するくらいならlsの出力でも…… と書き掛けて気付く。それだったらpsでいいね。
484 名前:デフォルトの名無しさん mailto:sage [2006/12/14(木) 22:29:15 ] UNIXでは標準コマンドの出力加工して使うのって WindowsでDLL呼び出すのと同じくらいふつーに使う気がする
485 名前:デフォルトの名無しさん mailto:sage [2006/12/14(木) 22:35:46 ] proc読もうがps呼ぼうが、どっちでもいいけど、 見に行ったときにそのプロセスがまだある保証はないから気をつけよう。
486 名前:デフォルトの名無しさん mailto:sage [2006/12/14(木) 23:04:57 ] それは当たり前だろう
487 名前:デフォルトの名無しさん mailto:sage [2006/12/15(金) 01:31:34 ] >>484 しかしそれを意図して書式化されていない場合とかlsのようにオプションに 気をつけないと情報ロスが存在しうる場合は注意が必要だったりするし、 やっぱあまり普通には使わないな。 スクリプトなんかでそれで済んじゃう場合はそれでもいいけど。 特にpsの出力なんかパースするくらいなら素直に/procを読むか kvm_なんたらを使う方が変なところで悩まなくてよい。
488 名前:デフォルトの名無しさん mailto:sage [2006/12/15(金) 02:03:35 ] >psの出力なんかパース もしかして、フォーマットを木目細かく指定できることをご存知内のだろうか。
489 名前:デフォルトの名無しさん mailto:sage [2006/12/15(金) 07:27:53 ] ここもtips自慢大会か
490 名前:デフォルトの名無しさん mailto:sage [2006/12/15(金) 09:30:27 ] NGワーオ:バッドノウハウ
491 名前:デフォルトの名無しさん [2006/12/16(土) 10:58:01 ] pc8.2ch.net/test/read.cgi/tech/1164951094/298 > 分かりやすくMakefileの書き方が載ってるサイトがあれば教えてください GNU makeのinfoがいいと思います。入門にも、リファレンスにもできる。 ↓まずはこの節から。 Makefile入門 www.ecoop.net/coop/translated/GNUMake3.77/make_2.jp.html#SEC4
492 名前:デフォルトの名無しさん mailto:sage [2006/12/16(土) 14:08:41 ] >>491 ありがとうございます。 今から挑戦してきますね。
493 名前:466 mailto:sage [2006/12/19(火) 07:45:47 ] kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3218.txt これを理解しないと次の授業からついてこれなくなるといわれたのですが、 何をしているのかが全くわかりません。どなたかコメントで解説つけていただけないでしょうか。
494 名前:デフォルトの名無しさん mailto:sage [2006/12/19(火) 08:02:04 ] 二進木の操作
495 名前:デフォルトの名無しさん mailto:sage [2006/12/19(火) 09:23:16 ] UNIX関係ねーし。 LOOP1: fprintf(stdout," followed by any nonnumeric character:"); if(scanf("%d",&x) != 1){ goto LOOP1END; } Insert(&root, x); goto LOOP1; LOOP1END: ワロタ
496 名前:デフォルトの名無しさん mailto:sage [2006/12/19(火) 09:34:13 ] whileを知らんのか
497 名前:デフォルトの名無しさん mailto:sage [2006/12/23(土) 05:50:37 ] fopenを使って書かれたプログラムを、ofstreamを使って書き換えています。 ファイル記述子の必要な関数fsyncを使いたいのですが、ファイル記述子は どのように取得すればよいのでしょうか?
498 名前:デフォルトの名無しさん mailto:sage [2006/12/23(土) 10:34:36 ] fileno (3)
499 名前:デフォルトの名無しさん mailto:sage [2006/12/23(土) 11:05:58 ] こうかな? stream.rdbuf()->fd()
500 名前:デフォルトの名無しさん mailto:sage [2006/12/23(土) 11:35:47 ] ↑いやうそです。どこでもつかえるわけじゃないらしい。
501 名前:デフォルトの名無しさん mailto:sage [2006/12/23(土) 14:39:44 ] support.microsoft.com/kb/148505/ja windowsだとこうみたいだね。
502 名前:デフォルトの名無しさん [2006/12/24(日) 23:34:32 ] ところで、 /proc/<pid>/stat/utime /proc/<pid>/stat/stime ってどの関数がどのくらいの周期で 書き込んでいるのでしょうか?
503 名前:デフォルトの名無しさん mailto:sage [2006/12/24(日) 23:50:09 ] スケジューラが、CLOCK_TICK_RATEで。
504 名前:デフォルトの名無しさん [2006/12/25(月) 00:00:32 ] >>503 scheduler_tick でしょうか?それとも schedule ? それらしき箇所が見あたりません。 できれば、何という関数で書き込んでいるのか教えてください。
505 名前:デフォルトの名無しさん mailto:sage [2006/12/25(月) 01:04:11 ] そういうのって、読み出すときに値(カウンタ)を取得して返すんじゃないのか?
506 名前:デフォルトの名無しさん mailto:sage [2006/12/25(月) 11:30:47 ] ほんとにファイルがあるわけじゃないしねぇ・・・
507 名前:デフォルトの名無しさん mailto:sage [2006/12/25(月) 11:33:27 ] カウンタが更新されるタイミングを聞いていると思ったが、 /procを勘違いしている可能性もあるのか。
508 名前:デフォルトの名無しさん mailto:sage [2006/12/25(月) 12:45:24 ] procfsのソース嫁
509 名前:502です [2006/12/25(月) 12:46:56 ] ■505さん >そういうのって、読み出すときに値(カウンタ)を取得して返すんじゃないのか? cat /proc/<PID>/stat を実行した時に cat が値を読み込むと言うことでしょうか? ■506さん >ほんとにファイルがあるわけじゃないしねぇ・・・ たぶん、その辺が理解できていないのだと思われます。 #自分で書くのもなんですが。 ■507さん >/procを勘違いしている可能性もあるのか。 勘違いしています。もし、その辺のことが詳しく記載されている 書物があればご教示下さい。 すみません。(;。;)
510 名前:デフォルトの名無しさん mailto:sage [2006/12/25(月) 12:54:16 ] >>509 /procは本当のファイルじゃなくて、カーネル内の情報を取り出すための仕組み。 それらを読もうとすることはカーネル内のデータを取り出す事に相当する。 そこらへんはドライバレベルでうまいことやってるので、 読み込んでるプログラムからは本当のファイルなのか、 /procのような仮想的なファイルなのかは見分けがつかない。
511 名前:デフォルトの名無しさん mailto:sage [2006/12/25(月) 12:55:48 ] /proc以下のファイルは、(procファイルシステムは) ファイルじゃなくて、ファイルのように振る舞うもの。 ファイルだって実際ファイルがあるんじゃなくて、 ファイルシステムがあるかのようにdisk I/Oしてるんだしね。
512 名前:502です [2006/12/26(火) 00:36:31 ] ■510さん、511さん 有り難うございます もう少し修行を積んで再度出直します。
513 名前:デフォルトの名無しさん mailto:sage [2006/12/28(木) 20:16:54 ] iconv の変換ディスクリプタが指している converter が保持している 変換の状態 (shift の状態など) を,丸々コピー (clone) して 新しいディスクリプタを作成することってできないですよね?できないですよね……
514 名前:デフォルトの名無しさん mailto:sage [2006/12/28(木) 20:26:49 ] iconv_duplicate関数があるよ ウソ
515 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 02:08:18 ] 自前の暗号処理をしようと思って crypt_des.c を見てるんですが export されているのは crypt_des だけなんですけど do_des とか des_chipher とかを export しなおして 自分のプログラムから使っても大丈夫ですか? コメントには輸出規制が云々と書かれているのでちょっと心配です。
516 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 02:47:38 ] 北朝鮮とかリビアに輸出する予定がなければ大丈夫
517 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 10:22:49 ] 輸出規制のほうもexportと出てくるからややこしいな。
518 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 19:33:54 ] crypt_desは実際にはDESそのものを使っているとは言えないところを グレーゾーンにして上手く逃げているんじゃないかな だからdo_desを勝手に使うとまずいと思うよ export禁止なのが輸出禁止なのか文字通りexport禁止なのかが良く分からないね 対象は米国外輸出だったと思うから北朝鮮とかリビアは関係ないんじゃないかな
519 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 19:48:16 ] 法律が変わって同盟国には輸出OKになったんじゃなかったっけ? IE5.01あたりで暗号強度が128bitになったのはそのおかげだし
520 名前:デフォルトの名無しさん mailto:sage [2007/01/04(木) 08:23:13 ] くだらない質問ですいませんlll 親プロセスに対するシグナルは全ての子プロセスにも送られるんでしょうか?
521 名前:デフォルトの名無しさん mailto:sage [2007/01/04(木) 19:45:11 ] 送られない。送りたいなら「シグナル プロセスグループ」でぐぐれ。
522 名前:デフォルトの名無しさん mailto:sage [2007/01/04(木) 20:03:00 ] 送られない
523 名前:デフォルトの名無しさん mailto:sage [2007/01/04(木) 20:05:12 ] 送りたいなら
524 名前:デフォルトの名無しさん mailto:sage [2007/01/05(金) 01:02:15 ] 親が子プロセス生成時にid全部残しておいて 自分でシグナルハンドリングしてしまえばいい
525 名前:デフォルトの名無しさん mailto:sage [2007/01/05(金) 04:38:32 ] ありがとうございます!
526 名前:デフォルトの名無しさん [2007/01/11(木) 00:53:23 ] デーモンについて質問です。 デーモンプロセスを作ろうと思って childをforkして親プロセスを終了させたりとか 詳解UNIXプログラミング通りにやりました。 どうやらうまくいったっぽいのですが、 できたプログラムがすぐにExitして終了してしまいます。 while(1) とかでループしたりとかすると、cpu使用率が90%以上になってしまいました。 目標としては、STDINからの入力を待って、いろいろ処理した後 STDOUTに結果を返して再び入力待ちに移行するデーモンを作りたいのですが、 SIGIOを感知するまでpauseするというところまではなんとなくわかった (つもり)なのですが、 参考になるソースコードや何かヒントだけでもいただけませんでしょうか よろしくお願いします。
527 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 01:03:58 ] sleep(1)とか呼ぶと100%にはならないかな
528 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 01:23:41 ] select(2)は?
529 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 01:43:08 ] STDINから読もうとしたらブロックする(止まる)でしょ 非同期IO使ってるんじゃなければSIGIOは関係ないんじゃないの
530 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 02:17:38 ] >>526 > 参考になるソースコード tail -f とかどうよ。
531 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 11:53:54 ] デーモンだから標準入出力閉じてるに7300スティーブンス
532 名前:デフォルトの名無しさん [2007/01/11(木) 20:14:52 ] ぽまえらどこで髪切ってんの? 俺は当然ここだぜ。www.unix.co.jp/
533 名前:526 mailto:sage [2007/01/12(金) 00:32:43 ] どうもです。 >>527 pause()でどうやらcpu使用率0%で静止してくれました。 sleep(1)だと一瞬でsleepがとかれるみたいで・・ >select(2) manをよんでみましたーまだよく理解できてませんが試してみます。 >tail -f ううむなるほど、ありがとうございます。srcをあさってみます >>529 そうですね... なんとなくソケットのListenみたいなもののほうが近い気がしてきました。 スティーブンス本のネトワク2巻、IPCあたりを読み込んでみます。 ありがとうございましたー
534 名前:デフォルトの名無しさん mailto:sage [2007/01/12(金) 06:06:30 ] 関係ない横レスですいませんが 他のスレッドの終了を待つような処理は while(スレッドの終了フラグ){ sleep(1); } とかいう感じで待つしかないんでしょうか?
535 名前:デフォルトの名無しさん mailto:sage [2007/01/12(金) 06:11:06 ] pthreadならjoinとか状態変数で合図するのを待つとか
536 名前:デフォルトの名無しさん mailto:sage [2007/01/12(金) 06:34:33 ] pthreadです ちょっと調べてみましたがデタッチについても理解していませんでした とりあえず上の質問はナシということでお願いします
537 名前:デフォルトの名無しさん mailto:sage [2007/01/20(土) 02:55:58 ] 日本語を使えるcursesで標準のものってあるんでしょうか?
538 名前:デフォルトの名無しさん [2007/01/22(月) 00:04:02 ] UNIX上で稼動するCのプログラムを作っていますが、その際 C言語のソースをWindows PCにてCVS管理しています。 下記のような段取りでやっているのですが、初心者のため、 詳しい皆さんはどんな手順で行っているのか知りたいと思います。 効率よくできる方法、一般的な方法(下記のような手順はおかしい、etc)等、 もしあればご教授いただきたく。 @必要なソースをチェックアウトし、Windows PCにて修正(エクリプス使用) A修正したファイルをFTPでUNIXサーバにアップロード BUNIX上でmakeを使用しコンパイル CUNIX上で稼動確認し、問題なければソースをチェックイン 使用している環境は。。。 CVS用マシン ・・・ Windows XP ソース修正用マシン ・・・ Windows 2000 実際に稼動するサーバ ・・・ HP-UX 11i v2
539 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 00:18:43 ] 漏れなら5分で不機嫌になって15分でブチ切れそう。
540 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 00:19:04 ] >>538 ・Unix上で編集しない理由は? ・稼動確認前にコミットしない理由は? ・最終確認をexport版で行なわない理由は?
541 名前:デフォルトの名無しさん [2007/01/22(月) 00:26:47 ] 全部秀丸を遣っているオレにはなんともいえん
542 名前:デフォルトの名無しさん [2007/01/22(月) 00:39:23 ] >>540 稼動確認前にコミットはしねぇだろ。 複数人で開発しているのならなおさら。 チェックアウトしてテストしようとして担当外のところが問題で うごかなかったら普通きれるぞ。 後なんだexport版って?
543 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 00:44:24 ] とりあえず、HP側のビルドするディレクトリをWin2kにマウントしとけば、 いちいちftpする手間がなくなってストレスがかなり減るぜ。
544 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 00:46:37 ] >>542 >export版 cvs exportで取り出したもの。CVSディレクトリがつかないから、リリース用に使うのに都合がいい。 >稼動確認前にコミット 何のためにブランチがあるとお思いで? 稼動確認を行なった版が管理されないとしたら、稼動確認のエビデンスをどうやって残すの? #まぁ、コンパイルが通るかどうか位は当然コミット前にやるとして。
545 名前:デフォルトの名無しさん [2007/01/22(月) 00:49:10 ] 全部viを遣ってるオレにはなんとも言えん
546 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 00:53:16 ] 544はあまり相手にしないほうがよさげ
547 名前:デフォルトの名無しさん [2007/01/22(月) 01:00:06 ] わざわざcvs exportして確認する必要ないだろ。 ブランチはなんの関係があるんだ? コミットの度にブランチ切ってんのか?笑
548 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 01:15:05 ] >>547 安定するまではブランチで作業するし、他人はそのブランチを使わない。 それだけのこと。 最終版をexportでやるのは、開発機とリリース機が違うときに便利。 それ以外では、リリース版をアーカイブするときにCVSディレクトリが邪魔にならずに済む程度のメリット。
549 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 01:17:56 ] そういう豆知識が求められてる場面じゃないからw
550 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 08:59:05 ] マメ知識だったのかw
551 名前:デフォルトの名無しさん mailto:ググってもヒントすら見つからないorz [2007/01/22(月) 15:04:08 ] CentOS 4.4 x86_64で以下のようなプログラムを走らせると、 errno=22(Invalid argument) のエラーになってしまいます。 #include <errno.h> #include <sys/quota.h> int main( void ) { int result; struct dqblk quotaStatus; result = quotactl( QCMD(Q_GETQUOTA,USRQUOTA), "/dev/hda8", 500, (caddr_t)"aStatus ); printf("result: %d, errno: %d: %s¥n", result, errno, strerror(errno)); return 0; } /dev/hda8(/home) に /home/aquota.user /home/aquota.group は存在します。 UID 500のユーザも存在します。repquota -a や edquota admin も問題ありません。 quotaの設定は以下のような手順で行いました。 /etc/fstab の /home のところに defaults,noatime,usrquota,grpquota を記述 mount -o remount /home touch /home/aquota.user touch /home/aquota.group chmod 600 /home/aquota.* quotacheck -mugv /home quotaon -auvg どなたか原因分かりませんか?
552 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 15:32:42 ] 納品するシステムのコンパイル時に、単純にコピーされるのを防止するため ハードウェアIDなどを組み込んでコンパイルしたいのですが、 ハードウェア依存で、できるだけ高速で取得でき、 、呼び出し時間の短いシステムコールなどはありますでしょうか?
553 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 18:28:00 ] >>552 激しく環境依存なので OS 次第じゃないかな。 dmesg とか sysctl とかの出力は使えそうですか?
554 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 18:49:07 ] HDのmbrのシリアル番号を見ているソフトがある 他にはNICのMACアドレスとか 替えられない訳じゃないけど
555 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 19:23:27 ] >>552 機械の故障でユーザが代替品を使用せざるを得ない場合などに備えて、 マシン側で変更できるものが望ましい。 たとえばNICのMACアドレスなんかはそれを見てるものが昔からあるので ほとんどのもので変更可能になっている。
556 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 19:38:59 ] コピー防止だけどそのレベルで大丈夫?
557 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 20:16:09 ] ドングルでもつけてioctlで叩けば〜
558 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 21:44:19 ] >>553-557 どうもありがとうございます。 システムが飛んだら再コンパイル必須の使い切りシステムなので、HDDのmbrから調べてみます。
559 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 21:46:18 ] ディスクまるごとコピーするツールがあるけど大丈夫?
560 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 21:50:51 ] >>559 まずいです 通常は変更不能のものってありますか?
561 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 21:54:00 ] CPUID
562 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 00:18:55 ] >>560 そこまで厳密に制限したいのであれば、ハードウェアの 色々な情報をまとめて md5 してみるとかどうでしょう? もちろん md5 の値をさらに可逆の暗号処理すると良いですね。
563 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 00:44:37 ] md5sumで十分でしょ。 cat /proc/cpuinfo とか lspci -vs 00:00.0 とか そんなのをmd5sumすれば?
564 名前:562 mailto:sage [2007/01/23(火) 01:35:14 ] まぁ md5 で十分とは思うのですが、strings(1) とかを使うと 色々と漏れちゃうので、ちょっとした計算式でシフトできたりすると 良いかなぁと思ったのです。気にしすぎかな?
565 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 02:45:20 ] そのくらいしたほうがいいと思います
566 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 04:22:37 ] MD5をわざわざ文字列にしたりしなけりゃ、少なくともstringsで出てきたりはしないと思うんだけど。
567 名前:551 mailto:sage [2007/01/23(火) 06:07:52 ] 自己解決しました。 #include <sys/quota.h> の前に #define _LINUX_QUOTA_VERSION 2 を付けてやればOKでした。
568 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 07:32:24 ] >>562 もしLAN常時接続が可能ならサーバー側にDB用意して アクティベーションしないと使えないようにするとか
569 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 08:27:05 ] つ[LisenceManager]
570 名前:デフォルトの名無しさん [2007/02/04(日) 17:49:07 ] execl()と、execlp()の違いを教えてください。 初心者ですまそ
571 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 17:55:13 ] ttp://www.linux.or.jp/JM/html/LDP_man-pages/man3/exec.3.html ttp://www.paw.hi-ho.ne.jp/takadayouhei/technic/5.html
572 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 17:55:19 ] p付はPATHから探してくれる。
573 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 17:55:24 ] >>570 pがつくかつかないか。つまり、path探索をするかしないか。
574 名前:570 [2007/02/04(日) 17:58:16 ] >>572 >>573 つまり、pが付いたらコマンドライン引数だけでいいってことでしょうか?
575 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 18:02:37 ] 第1引数をフルパスで書く必要があるか、PATHにあるから名前だけでいいか、 てこと。
576 名前:570 [2007/02/04(日) 18:04:19 ] >>575 なるほど〜分かりました。 ありがとうございます
577 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 18:27:35 ] おまえら優しいな
578 名前:デフォルトの名無しさん mailto:sage [2007/02/07(水) 18:16:19 ] gcc(g++)にはVC++におけるReleaseビルドとDebugビルドのような概念はないんでしょうか?
579 名前:デフォルトの名無しさん mailto:sage [2007/02/07(水) 18:25:52 ] VC++のリリースビルドとデバッグビルドの違いを理解してからおいで。
580 名前:デフォルトの名無しさん mailto:sage [2007/02/07(水) 18:26:41 ] オプションに-O2(とかそのほか最適化オプション)つければReleaseビルド。
581 名前:デフォルトの名無しさん mailto:sage [2007/02/07(水) 18:29:04 ] デバッグ/リリースごとの条件コンパイルのためのプリプロセッサ シンボルもあるだろうね。 あと、-gオプション。
582 名前:デフォルトの名無しさん mailto:sage [2007/02/07(水) 19:09:40 ] 最近のVCはReleaseでもデバッグ情報ついてるよ。
583 名前:578 mailto:sage [2007/02/07(水) 20:53:56 ] ありがとうございました!
584 名前:デフォルトの名無しさん mailto:sage [2007/02/07(水) 22:37:33 ] sspとか
585 名前:デフォルトの名無しさん mailto:sage [2007/02/09(金) 05:26:16 ] セッションを大量に張るアプリケーションのソケットの処理にAIOを使うってのはどうなんでしょう? スレッドベースのハンドラを使うとたくさんのソケットがある分スレッド生成にコストがかかりそうですし シグナルベースよりはepoll()やkqueue()の方が効率的なのかなーと思ってはいるんですが 最近AIOに興味を持ってこんなことを妄想してたんですが皆さんはどう思われます?
586 名前:デフォルトの名無しさん mailto:sage [2007/02/09(金) 20:31:47 ] aioってkqueueで待てた気がするけど。
587 名前:デフォルトの名無しさん mailto:sage [2007/02/10(土) 05:05:17 ] 確かにEVFILT_AIOってのがありますねぇ。 便利でいいなぁ。Linuxにもこんなシステムコールあればいいのに。
588 名前:538 [2007/02/10(土) 07:00:49 ] >>539−550 アドバイスありがとうございます。 特に、マウントするというやり方は、当方まったく気がつきませんでした。 いろんなご意見いただいてありがたかったです。 今後も効率いい作業方法を意識していろいろtryしてみます
589 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 06:14:56 ] どうもaio_read()呼ぶと内部でpthread_create()が呼ばれてる感じ スタック使い切って死にそうなので大量のセッション管理には向かないのかな
590 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 08:06:43 ] 内部で、て……。aio_readはシステムコールだぞ。 なんでユーザプロセスのスレッドなんか生成しなきゃならん。
591 名前:デフォルトの名無しさん mailto:sage [2007/02/16(金) 16:07:36 ] >>589 それはWin9xのWinsock2-overlappedI/O実装
592 名前:デフォルトの名無しさん [2007/02/20(火) 00:48:16 ] fifo と unix ドメインソケット、どう使い分けたらいいのかを教えてください。
593 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 01:30:34 ] fifoは親子関係のないプロセス間で使うのに便利
594 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 01:53:08 ] unixドメインソケットも親子関係のないプロセスで使うと便利!
595 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 15:17:14 ] fifoはunixドメインソケットを使って実装されている 事もある
596 名前:デフォルトの名無しさん [2007/02/21(水) 00:39:37 ] whileとforの違いがよくわからないんでお願いします。 あと、最後に;(セミコロン)をつけるのは何のときで、つけないのが何のときか教えてください。 教科書見てもイマイチよくわからなくて・・・
597 名前:デフォルトの名無しさん mailto:sage [2007/02/21(水) 00:50:04 ] >>596 とりあえず使おうとしてる言語はなんなのか言ってみ シェルのことか?
598 名前:デフォルトの名無しさん mailto:sage [2007/02/21(水) 00:54:39 ] あ、すんません。C言語です。 めっちゃ基礎的なことだけどおねがいします。
599 名前:デフォルトの名無しさん mailto:sage [2007/02/21(水) 01:08:32 ] whileもforも繰り返し行う処理(ループ)を行わせるものだが、 while (式) 文 「式を評価(値を求めること)し、それが0でない場合は 文を実行」 を繰り返し行う。 for (式1; 式2; 式3) 文 式1を評価する。 そのあとは、 「式2を評価し、それが0でない場合は 文 を実行。ついで式3を評価」 を繰り返し行う。 つまりは、 式1; while (式2) { 文; 式3; } とほぼ同じ意味。 なお、文とは - 式に;を付けたもの - { 複数の文 } のどちらか。forもwhileも文は1つしかかけないので、複数の文を 繰り返し処理したい場合は { } で囲む。 (実際には1つであっても囲んで構わないし、ヒューマンエラーを避ける 意味ではそのほうが好ましい)
600 名前:デフォルトの名無しさん mailto:sage [2007/02/21(水) 01:10:09 ] C言語なら俺に聞け(入門篇) Part 8 pc10.2ch.net/test/read.cgi/tech/1171946674/ こっち向きだろうね。
601 名前:デフォルトの名無しさん mailto:sage [2007/02/21(水) 01:11:29 ] >>599 ありがとう!なんとなくわかったような・・・わからないような・・・ もっかい教科書見直してみるわ。 >>600 あ、そんなスレあったのか。こんどからはそっちで。
602 名前:デフォルトの名無しさん mailto:sage [2007/02/21(水) 01:12:40 ] 訂正 式1; while (式2) { 文; 式3; } ↓ 式1; while (式2) { 文 式3; } まぁ空文が1つあるかないかだけど。 あと「それが0でない場合」しか書かなかったが、0になったら 繰り返しを終えて次に進む。
603 名前:デフォルトの名無しさん mailto:sage [2007/02/21(水) 20:12:39 ] forは式を省略できるが、whileはできないってのも。 永久ループを作るときに、forなら for(;;)文 で大丈夫だけど、whileだと while(1)文 の様に書かないといけない。 これは1を評価するという冗長な意味を持つので、for(;;)の方がよく使われてる。 (;;) <- これが顔文字みたいでかわいいし。
604 名前:デフォルトの名無しさん mailto:sage [2007/02/21(水) 21:31:32 ] >>603 最後の2文はおまいの思いこみだw 面白いけどw
605 名前:デフォルトの名無しさん mailto:sage [2007/02/21(水) 21:41:24 ] while (1)はイデオム化しているので、読むほうも「1が0でない限り」 などとは読まないから問題ない。 生成されるコードも大差ない。 MacOSX 10.4.8, gcc 4.0.1 (Intel) でやってみたら、 while (1) { puts("hello"); } / for (;;) { puts("hello"); } いずれも 「文字列のアドレスをスタックに積んでputsをcallしてループの頭にジャンプ」 という全く同じコードになった。
606 名前:デフォルトの名無しさん mailto:sage [2007/02/21(水) 21:49:27 ] for(;;)は無限ループを表すためだけにANSIが規格化した代物。
607 名前:デフォルトの名無しさん mailto:sage [2007/02/21(水) 22:37:36 ] FreeBSD6.2だと grep -R 'for *(;;)' /usr/src | wc -l 2322 grep -R 'while *(1)' /usr/src | wc -l 883 だから、やっぱりfor(;;)の方が優勢と思う。 確かにwhile(1)はイデオム化してるから問題はないと思うけど、 もしも、全く最適化をしないコンパイラがあれば、少しだけ無駄なコードになるはず、、 まぁそんなことは重要じゃないので、見た目のいい方を選べばいいと思います。
608 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 19:42:26 ] 以下のMakefileの $(OBJS): $(HEADS) Makefile 行は何をしているのでしょうか? ttp://www-or.amp.i.kyoto-u.ac.jp/algo-eng/db/template/Makefile.nsrc1bin
609 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 21:02:27 ] >>608 スレ違い。
610 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 21:25:06 ] >>608 make makes many problems pc11.2ch.net/test/read.cgi/tech/1029599472/ あたりか? 一応答えておくと、 $(OBJS)内のファイルに依存性を追加しているだけ。 この行自体は何もコンパイルしたりしない。 「$(HEADS)のファイルいずれかかMakefileが書き換えられたら $(OBJS)のすべてのファイルはコンパイルし直しとなる」という宣言。
611 名前:608 mailto:sage [2007/03/01(木) 21:52:57 ] >>610 良くわかりましたありがとうございます 教えて頂いたスレにも書き込もうか迷ったのですが 過疎っており、都合上解答をできるだけ早めに頂きたかったので こちらで質問させていただきました 助かりました >>609 死ねカス 代替案出せないなら黙ってろ
612 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 22:51:45 ] カスにカス呼ばわりされてもなぁ。makeスレは過疎ってたって巡回している人は沢山いると思うのだが。
613 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 22:58:01 ] >>612 ごめんなさい core吐きまくっててイライラしてて言い過ぎた 次は教えてもらったスレで紳士的に質問しますね
614 名前:デフォルトの名無しさん mailto:sage [2007/03/02(金) 22:03:55 ] gccのプリプロセッサだけを使いたかったので、子プロセスでcppを起動して パイプで出力を受け取ったのですが、EOFが来ません。 メインのプロセスはboost::iostream::file_descriptor_sourceで子プロセスの 出力を読み込んでいます。 どなたかお知恵を…
615 名前:デフォルトの名無しさん mailto:sage [2007/03/02(金) 22:13:13 ] 入力を閉じる
616 名前:デフォルトの名無しさん [2007/03/17(土) 01:01:16 ] ヘタレ組込みPGです。 下記のようなプログラムが既存のものであるんだけど、sigactionをセットした上でスレッドをぼこぼこ作り、各スレッドにシグナル待ちをさせるコードがあるんだけどシグナルハンドらの関数は処理を何もしていません。 これってどういうことを狙ってるとき、処理なしハンドラを設定してるかわからないんですが、教えてもらえませんか? void main(void) { act_SIGINT.sa_handler = funcA; act_SIGINT.sa_mask = *sigset; act_SIGINT.sa_flags = SA_RESETHAND; sigaction(SIGUSR1,&act_SIGINT,NULL) for(int i=0;i<5;i++) { pthread_create(); } funcB(); // 実処理 } funcA{ // 処理なし } funcB{ // 何か処理 pthread_kill(スレッドID,SIGUSR1); }
617 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 01:33:49 ] どっか別の場所でsigactionしなおしてるんじゃね?
618 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 13:12:48 ] 自作のshared objectを作って、その中の関数を呼ぶ別のプログラムを書いたんだが どうやらshared objectの中にバグがあるようで、落ちる。 shared objectの中でgdbを使ってどこで落ちたのか調べたいのだから shared objectを呼び出してるプログラムにgdbを適応してrunしてもshared objectの中まで 入ってくれない。 shared objectの中身をgdbでデバッグしたい場合はどうすればいいんでしょうか? 教えてください
619 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 00:37:58 ] >>618 > 自作のshared object のコンパイルオプションは???
620 名前:デフォルトの名無しさん [2007/03/29(木) 06:38:54 ] プログラムが現在使用しているトータルメモリ量を取得する方法を教えてください
621 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 07:40:28 ] 先ずはあなたの言う、「プログラムが現在使用しているトータルメモリ量」を定義してください。
622 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 08:40:48 ] >>620 /procを使う perlならProc::ProcessTable::Process
623 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 11:38:11 ] >>621 プログラムが確保したヒープとスタックと 内部でmallocしようとしてるサイズでいいんじゃね? まあmallocで100ギガ確保しても使わなければ メモリは使われないからそれを消費量というかどうかは 定義しなきゃだなぁ
624 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 14:10:03 ] mallocした量とmalloc用のヒープ量(sbrk次第?)はまた違うかもしれない。 管理用のデータもあるだろうし。
625 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 19:24:14 ] >>620 getrusage(2)
626 名前:デフォルトの名無しさん [2007/04/10(火) 21:53:49 ] Windowsきたねえ!UNIXきれい! でもWindows使いたい!UNIX使いたくない! ふしぎ!!
627 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 08:11:21 ] エロゲがみんなUNIXで動いたらどうでしょう。
628 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 13:02:39 ] あるプログラムをFORTRANからCに書き換えています。 FORTRAN内の配列(かなり大きい)を、Cで同じサイズで確保しようとすると、 実行時に確保できない旨のエラーが出てしまいます。 両方とも同じマシン上で動かしているので、空き領域自体はあると思うのですが、 何か良い方法はないでしょうか?
629 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 13:05:23 ] ↑エスパー専用
630 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 13:13:58 ] >>628 newをつかってみたら?
631 名前:630 mailto:sage [2007/04/12(木) 13:14:49 ] 動的に確保した方が、大きな値を取れたはず
632 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 13:17:36 ] エスパー登場
633 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 13:23:25 ] >>628 ソースコンバータで事は足りないの?
634 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 14:01:29 ] スタック上に確保しようとして溢れてるってことか。 それならmalloc()とかでヒープに確保しないと。
635 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 14:38:50 ] んな面倒なことしないでも、staticで宣言すりゃいいんでないかい。
636 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 20:37:23 ] ulimit でスタックのサイズをでかくする
637 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 21:25:10 ] limitで制限かけてあると思うけどな。 環境変数でも貼ってくれ。
638 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 18:44:13 ] 64bitマシンで32bitの整数を扱いたいのですが、int寄りも小さくshortよりも大きい整数はないのでしょうか? C99を使うしかないのでしょうか?
639 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 19:17:07 ] OSとコンパイラは? gccのx86_64版でsizeof(int)は4だよ。
640 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 19:24:49 ] >>638 LP64,LLP64,ILP64あたりでググれ。
641 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 04:41:26 ] intってマシン長じゃないの?
642 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 05:12:16 ] >>641 違うこともあるお⊂二二二( ^ω^)二⊃。x86_64とか。
643 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 06:55:21 ] >>641 そうじゃない例はいくらでもあるが。
644 名前:質問。 [2007/05/02(水) 03:01:44 ] あるプログラムから別のプログラムを立ち上げて、 その標準入出力を掴むプログラムをC言語で作りました。 forkで子スレッドを作って呼び出し先プログラムを実行、 パイプでそのstdin,stdoutを呼び出し元から読み書きするまでに至ったのですが、 呼び出し先としてsshやftpを立ち上げてみると、ログインパスワード要求時の 「Password:」 の表示が標準出力じゃないみたいで、 呼び出し元プログラムを通さず、画面に出てきてしまいます。 一体何故でしょうか? またこれの解決手段は何かありますか?
645 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 03:13:03 ] stderrじゃね?
646 名前:質問。 mailto:sage [2007/05/02(水) 03:25:07 ] >>645 いや、それもしっかり呼び出し元に送ってるんですが・・・。
647 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 04:27:16 ] >>644 ssh などは /dev/tty にプロンプトを書いてる。
648 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 04:31:39 ] >>644 たぶん君のやりたいことには、 ttyrecやscriptのソースが参考になる。
649 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 05:25:13 ] >>644 > あるプログラムから別のプログラムを立ち上げて、 > その標準入出力を掴むプログラムをC言語で作りました。 そしてこの仕様に(ry
650 名前:質問。 mailto:sage [2007/05/02(水) 07:27:32 ] ネットでいくらか調べてみたけど。。。 sshの自動ログインのパスワード入力突破はみんな悩んでるみたいね。 専用の鍵を作るだとかとても面倒なことになりそうな勢い。 さて、そろそろ寝るかorz
651 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 07:31:36 ] そんなもん誰も悩んでないよ。 ssh-agent使えばいいんだから。 プログラミングですらない。
652 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 07:33:58 ] マウスを操作して自動的にアプリのボタンをクリックするプログラムを作成するくらい不毛な話だ
653 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 07:50:53 ] それだってtcl/tkのtestsuitsにあるけどなw
654 名前:648=651=653 mailto:sage [2007/05/02(水) 17:01:00 ] そこでexpectですよ、となるわけかな?
655 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 00:29:57 ] そこでExpectですよ → そしてTclが嫌になる → Perl/Ruby/Pythonとかのexpect風モジュールに逃げる → 本家本元のexpectほどのエレガントさや機能がなくてガクーリ → でもTclの糞さにInline::Tclに逃げたりRuby+Expectとかのハイブリッドコードを書き出す → 他人には理解不能に いやほんとRubyのシンタックスならTclなみにエレガントにExpectできると 思うんだけどね。ベタなコマンドライン的記法にマッチしてるから。
656 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 01:17:02 ] マジアフォだな。 マウスカーソルを横取りして駆動するドライバとか変な苦労しそう。 キーボードコントローラを乗っ取ってキー入力してみたりとか、GPUプログラミングして表示内容を取得とか。
657 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 21:52:44 ] 質問をさせていただきます。 UNIX上で動く簡単なftpデーモンを作っています。 アクティブモードでクライアントとデータをやり取りするデータコネクションを繋ぐために、 FTPのPORTコマンドで受け取ったクライアントのIPアドレスとポート番号をsocket関数に渡して ソケットを作り、connect関数でコネクションを繋ぎました。 ここで20番ポートを使ってデータコネクションを繋ぐように本に書いてあったのですが、 サーバー側のポート番号はどこかで指定するのでしょうか? 制御コネクションの接続の時にはbind関数で21番ポートを指定しましたが、それにあたるような 処理がconnect側にも必要なのでしょうか? どこかで根本的な勘違いをしてるのか、調べても解答を探すことができませんでした。 お手数ですが、どなたがご助言をいただけないでしょうか?
658 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 00:03:42 ] >>657 アクティブモードのデータコネクションは、FTPサーバからクライアントにコネクションを張りに行くわけだから 制御コネクションとは接続方向が逆って辺りは理解している? まぁ、詳しくはネットワークスレを読めばリンクが出てくると思うけど。
659 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 01:19:45 ] RFCちゃんと読んでる?
660 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 06:09:45 ] >>657 サーバー側のポート番号を指定するのはPASVの場合
661 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 00:25:23 ] PORTとかEPRTのばあいは黙ってconnectすればいい。 PASVとEPSVの場合は、bind-listen-acceptして待ち受けてればいい。
662 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 01:19:48 ] >>658 その時のsrc portの話だと思われ。 >>657 制御コネクションを21番でbindしてlistenしたように、 データコネクションは20番でbindしてconnectすればいい。 bindせずにconnectすると適当なportが使われる。
663 名前:657 mailto:sage [2007/05/12(土) 01:27:58 ] >>658-662 たくさんのご助言、ありがとうございました。 bindはacceptする側だけだと思い込んでいて、データコネクション側では20番ポートでbindしていませんでした。 さっそく、bindしてみます。 それでは失礼いたします。
664 名前:デフォルトの名無しさん [2007/05/14(月) 21:30:04 ] javaファイルをpostscriptに変換して印刷しようとして a2ps test.java と入力したのですが、印刷されませんでした。 なぜですか?
665 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 21:47:58 ] >>664 今時の a2ps は, 出力をかってに lpr あたりに食わしてくれるのか?
666 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 00:27:25 ] はい