[表示 : 全て 最新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


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
何を言ってるのだ、お前は。






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

前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