[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 2chのread.cgiへ]
Update time : 05/09 16:30 / Filesize : 142 KB / Number-of Response : 667
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

UNIXプログラミング質問すれ Part8



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


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
シグナルを気軽に送れるところに意味がある。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<142KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef