UNIXプログラミング質問すれ
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNG0153デフォルトの名無しさん
NGNGUnixでは拡張子は基本的にはファイルの種類と関係ないよ。
0154デフォルトの名無しさん
NGNGカーネルは関知しないが、
コマンドは拡張子を気にするだろ。
makeとかCコンパイラとか。
0155デフォルトの名無しさん
NGNG.cだったらCのソースで、.hだったらヘッダファイルだとでも?
0156デフォルトの名無しさん
NGNG0157デフォルトの名無しさん
NGNGUNIXでWin32で言うところのDLLみたいことをやりたいんですが、
LoadLibrary()とGetProcAddress()みたいな関数(とかシステムコール)は
あるのでしょうか?
0158デフォルトの名無しさん
NGNG他は知らね
0159デフォルトの名無しさん
NGNG0161デフォルトの名無しさん
NGNGなにかお勧めの書籍やWebページありますか?
0162デフォルトの名無しさん
NGNG0163デフォルトの名無しさん
NGNG関係ないっつったら、他の OS でも関係ないじゃん。
0164デフォルトの名無しさん
NGNGGNU Emacsの中でのGDBの使用
http://www.asahi-net.or.jp/%7Ewg5k-ickw/html/online/gdb-4.18/gdb_17.html#SEC150
0165デフォルトの名無しさん
NGNG0166超初心者
NGNGで開いたファイルに何か入力があるまでブロックされ、入力があったら
それをシグナル等で知る事ができるような方法はありますか?
select()ではできませんよね?
Solaris7 or 8 なのですが。
0167デフォルトの名無しさん
NGNG0168デフォルトの名無しさん
NGNGcをつくったんですけど
ccでコンパイルできません。
どうすればコンパイルできますか?
0170デフォルトの名無しさん
NGNG>エラーメッセージは?
「そのようなコマンドはありません」でした
linux初心者でcを勉強しようといれてみたんですが・・
cc test.c な感じです。。
0172デフォルトの名無しさん
NGNG0173デフォルトの名無しさん
NGNGいえ、借りてるサーバーがSolarisです。telnetでよく遊んでいます
自宅の環境はredhat7.2です
gccもコンパイルのソフトでしょうか
のちほど試してみます
0174デフォルトの名無しさん
NGNG0175デフォルトの名無しさん
NGNG0176超初心者
NGNGすみません、ちょっと書き方が悪かったのですが、
やりたいこういうことです。
hogehogeというファイルにあるプログラムからログが書かれる。
それをほぼリアルタイムに表示したい。
tail -f のようなポーリング式にはしたくない。
という事をしたいのですが、良い方法ありますか?
0177デフォルトの名無しさん
NGNGfind -n gccとかで探してみて(スイッチ-fかも)。
0178デフォルトの名無しさん
NGNGlocate gccで探してみた?
gccにパスが通っていないってのはちょっと珍しいかも。
それともコンパイルエラー?
0179178
NGNG>>177>>178
後ほど試してみます。
余談ですが、インストールするときにワークステーションの設定で
インストしたんですが、デフォルトではいってますでしょうか?(コンパイラ
もしかしたらインストールされてないのかなっておもったり
0180デフォルトの名無しさん
NGNG入れない2chVIP板。
0181デフォルトの名無しさん
NGNGSIGIOって通常ファイルに対して使えたっけ?
0182超初心者
NGNGそれはどうやって使えば良いのでしょうか?
すみません、ほんとに初心者なのです。
0183デフォルトの名無しさん
NGNGまずは『詳解UNIXプログラミング』を覚えてからでないと
ダメですか?
0184デフォルトの名無しさん
NGNG>ワークステーションの設定でインスト
うん、おれんとこもそう。だけどコンパイラはデフォで
入ってるし、パスも通ってる。というより、あえて外そう
としないかぎりインストールされるでしょ。gccって。
0185デフォルトの名無しさん
NGNGちなみにこの本でUNIXが何なのかを頭に叩き込むのがいい、
とかどっかに書いてありました。
0186デフォルトの名無しさん
NGNG0187デフォルトの名無しさん
NGNGでも他にまともな本がない・・・
0188デフォルトの名無しさん
NGNGttp://www.jks.is.tsukuba.ac.jp/~daiki/func/man7/signal.7.html
あまり参考にはならないかもしれないけど、資料として。
どう使えばいいかまでは書いてないから、適切な書籍を買うなり
して、SIGNALについて勉強すればいいんでない。
0190132
NGNGどうもです。
勉強する糸口が見えてきました。
が、しかし、Linux には fcntl(2) のコマンドとして F_SETSIG という
のがあってこれを使えば指定したファイルディスクリプタから入力が可能
になった時点でシグナルハンドラが呼ばれるようなのですが、Solarisには
F_SETSIGやそれに相当するものがありません。他に方法はあるのでしょうか?
0191デフォルトの名無しさん
NGNGたとえば1msに1バイトずつ書き込まれるものを一個一個読み込みたいってわけ
じゃないだろ?
だったらポーリングで充分じゃなかろうか。
0192デフォルトの名無しさん
NGNG$ man streamio
そしたらば、I_SETSIGやSIGPOLLをサーチすれ
>>166
select(2)じゃあ、EOFにも反応しちゃうね。しなきゃしないで困るし。>EOF
0193132
NGNGウォー!!サンクスです。
ioctl(2)で出来るんですね。docs.sun.comのマニュアル見たらなんか行けそうな
気がしてきました。今手元にはCygwin(藁しかないので明日試してみます。
0194デフォルトの名無しさん
NGNG(2)って何ですか?
0195デフォルトの名無しさん
NGNG0196デフォルトの名無しさん
NGNGところでみなさん、Solaris、*BSD*、Linuxと
いろいろな環境をどのようにマスターされました?
やっぱり自分で実際に使ってみたのでしょうか?
0197196
NGNG0198デフォルトの名無しさん
NGNG使わなくて平気だろうけど、面白いよ。
0199デフォルトの名無しさん
NGNGよくいわれるけど、システムコール他は、他人が使ってるの見るのが一番いいよ。
少なくとも「完全に動作する実例」だし。
fileutils の中の部分とか、小さいアプリのソース読みまくる。
ハックしまくる。壊しまくる。
うっかり、make install してしまって、ls,cp できなくなってハマる。
他所のサーバに connect しまっくてあせる。
0200デフォルトの名無しさん
NGNGfor (i = 0; i < 10; i++)
used[i] = NO;
for (E = 0; E < 10; E++) {
if (used[E])
continue;
used[E] = YES;
for (L = 0; L < 10; L++) {
if (used[L])
continue;
used[L] = YES;
for (S = 0; S < 10; S++) {
if (used[S])
continue;
add( 0, E, L, S, c1);
add(c1, S, L, E, c2);
used[S] = YES;
for (A = 0; A < 10; A++) {
if (used[A])
continue;
used[A] = YES;
for (M = 0; M < 10; M++) {
if (used[M])
continue;
add(c2, A, A, M, c3);
used[M] = YES;
for (B = 1; B < 10; B++) {
if (used[B])
continue;
add(c3, B, B, A, c4);
used[B] = YES;
for (G = 1; G < 10; G++) {
if (used[G])
continue;
add(c4, 0, 0, G, c5);
used[G] = YES;
0201デフォルトの名無しさん
NGNG宿題スレの誤爆だろ。
0202デフォルトの名無しさん
NGNG1. 少なくとも一つUNIXでは実際に使ってみる。
2. 使うどのUNIXでもmanualは徹底的に読む。
3. さもなくば、氏ぬ
0203132
NGNGfd = open("logfile", O_RDONLY);
if (fd < 0) {
perror(TARGET_FILE);
exit(1);
}
if (ioctl(fd, I_SETSIG, S_INPUT) < 0) {
perror("ioctl");
exit(1);
}
というような感じで書いて実行すると、
ioctl: Inappropriate ioctl for device
とエラーになってしまいました。
STREAMS (see intro(3)) ioctl commands となっていたので、
intro(3) を見ると、
「「STREAMS」と「ストリーム」の違いには十分気を付けて く だ さ
い。STREAMS とは、ネットワークサービスとデータ通信ドライバの
開発をサポートするカーネル機構の一種であり、...」
となっていますが、streamioは通常のファイルに対しても使えるのでしょうか?
0204デフォルトの名無しさん
NGNGだからそれが181の疑問なわけよ。
0205デフォルトの名無しさん
NGNG./a.outのように頭に./を付けますが
どうしてpathに含めないのでしょうか?
0206デフォルトの名無しさん
NGNGじゃあ含めてみれ。
0207デフォルトの名無しさん
NGNG0208デフォルトの名無しさん
NGNG挙句の果てに実行パーミッションつけちゃって大変な事になる罠。
0209132
NGNGえーん、だめですか。
aioread(3)のサンプルってどこ探しても無いです。
簡単な例無いですか?
0210デフォルトの名無しさん
NGNG0211デフォルトの名無しさん
NGNG0212デフォルトの名無しさん
NGNGpthread_*を使いまくりなんですか?
0213デフォルトの名無しさん
NGNGふと思ったけど、DOSでもxcopy.bat(中身Deltree \*.* -Y)がカレントにあった場合やっぱり・・・。
0214デフォルトの名無しさん
NGNGgccでコンパイルしました。
そうしたらディレクトリ内に変なファイルができました。
実行したいのですがどうすればよいでしょうか
0215デフォルトの名無しさん
NGNGkorewo anki surumade yondekara shitumon shitene!
0216デフォルトの名無しさん
NGNG0217デフォルトの名無しさん
NGNGコンパイル後にa.outというファイルがつくられました。
そして実行しようとしてa.outと打ったのですが
そんなコマンドは無いといわれました
なんと打てばよろしいのでしょうか
0218デフォルトの名無しさん
NGNG0219デフォルトの名無しさん
NGNG0220デフォルトの名無しさん
NGNG> aioread(3)のサンプルってどこ探しても無いです。
http://examples.oreilly.com/posix4/p4code.tar.Z
でも、aio は176の目的には使えないと思った。
ポーリングすれ。
0221132
NGNG調べていただいてどうもです。
いろいろ考えたんですけど(調べてはいないので妄想か?)ローカルディスク上
のファイルならまだしも、NFSサーバ上のファイルのI/Oの発生をカーネルが知る
のはとても難しいと思うので無理で当然かなと思いました。
素直にポーリングします。
どもありがとうございました。
0222デフォルトの名無しさん
NGNGその通り。だからDOSは糞。
0223デフォルトの名無しさん
NGNG基本的に自分自身なわけで、それって自業自得では?
0224デフォルトの名無しさん
NGNGいろいろありすぎて訳分からん。だれか2,3簡単に説明してくれないかな。
説明はいいとしても何を使ってるか教えて下さい。
関連サイト
http://pc.2ch.net/test/read.cgi/unix/1010933537/
0225デフォルトの名無しさん
NGNGUNIXだって同じじゃん
0226デフォルトの名無しさん
NGNGおまえが調べておれに教える!
0227デフォルトの名無しさん
NGNGUNIXは多人数で同時に使えるだろ。
/tmpとか、誰でも書きこみできるだろ。
0228デフォルトの名無しさん
NGNGなんで/tmpにわざわざパス通さなきゃならないんだよ。
リアリティーがないぞ。
0229デフォルトの名無しさん
NGNG0230デフォルトの名無しさん
NGNG0231デフォルトの名無しさん
NGNGそんな話は誰もしてません。気のせいです。
0232224
NGNGPthの方はあまりパフォーマンス的には期待できないけど、
多機能ゆえにこれ使うことにします。
NGPTはまだ安定動作の保証が取れてなさそうなので、
もう少し様子を見てからにしたいと思います。
0233デフォルトの名無しさん
NGNGhttp://www.linux.or.jp/JF/JFdocs/Path-12.html
0234デフォルトの名無しさん
NGNG/tmpに絶対chdirしないならいいけど
0235デフォルトの名無しさん
NGNG「Linuxでは、パスの評価がオペレーティングシステムコールレベル
(operating system call level)で行われていることを思い出して
下さい。実行ファイルのパスが与えられているところならどこでも、
(少なくとも) /bin、/usr/binから検索される短い名前(short name)
が与えられます - 他の場所でも同様です」
ってどういうこと?
0236デフォルトの名無しさん
NGNG原文あたってみた。
Linuxではパスの評価がオペレーティングシステムコールレベルで行われる
ことを忘れてはならない。実行可能ファイルのパスを指定するあらゆる
場所において、あなたは少なくとも/binと/usr/binで検索される省略名を
使うことができる(*)。
(*)3. 一般より抜粋
execシステムコールは、 '/' を含まないファイル名を与えられた場合に
PATH環境変数を使う。例え環境にPATH変数がなかったとしても、少なくとも
/binと/usr/binディレクトリは適合するコマンドを探して検索される。
0237デフォルトの名無しさん
NGNGPATHに ./ が入ってる場合に限った説明は「クラッカーのlsコマンドを…」のところで終わってるのかな。
「オペレーティングシステムコールレベルで」の部分は、
シェルがパスの解決をしてるんじゃないよ、って意味でしょう。
だからデーモンが foo を実行するとき、(デーモンは/bin/fooを期待している)
rootのPATHに/usr/local/bin/が入ってると、
/usr/local/bin/fooが実行されちゃうよっていうことだと思う。
0238デフォルトの名無しさん
NGNG普通だから、/usr/local/bin/fooが実行されることは
ないだろう。そのへんをきっちり考慮してかかれたプログラム
だと、PATH=/bin:/usr/binって先頭で設定しなおしてから
fooを呼んでる。
0239デフォルトの名無しさん
NGNG0240デフォルトの名無しさん
NGNG0241デフォルトの名無しさん
NGNG>>237は>>233のページにそういうことが書いてあるって説明だ。モトネタ嫁。
0242デフォルトの名無しさん
NGNG大嘘じゃん。
PATHを見るのはexecファミリの中ではexeclp()とexecvp()だけで、
これはシステムコールじゃない。
PATHはあくまでもシェルを中心としたアプリケーション側での約束事。
カーネルはまったく無関係。
0243デフォルトの名無しさん
NGNG標準関数?
0244デフォルトの名無しさん
NGNG> PATH=/bin:/usr/bin:/usr/local/binの順で定義するのが普通だから、
初耳だよ。一般ユーザはPATH=/usr/local/bin:/usr/bin:/binだろ。
rootなら/usr/localが最後でもおかしくないけど。
クリティカルなシェルスクリプトは、フルパスでコマンド指定するしな。
0247デフォルトの名無しさん
NGNG普通はそれにオブジェクトファイル追加・更新していく事
になりますよね。
すると、あるとき何かの都合でその.aに入っていたオブジェクトを
Makefile等でのarコマンドの記述から外しても、.aを一度消さない限り、
外したオブジェクトが入りっぱなしになってしまいます。
Makefileの記述にあわせて、.aからも不要なオブジェクトを削除する
事って可能なのでしょうか?
それとも、Makefileに更新があったら、必ず.aを消すのが正しいんですか?
0248デフォルトの名無しさん
NGNGMakefile の更新なんて見ないで常に消せばいいじゃん。
libfoo.a: $(OBJS)
rm -f $@
ar cq $@ $(OBJS)
ranlib $@
みたいなかんじで。
0249デフォルトの名無しさん
NGNGそれだと、元々入ってるオブジェクトには変化がなくて、
内包するオブジェクトの指定が変化しただけでは更新しませんよね・・・・
0250デフォルトの名無しさん
NGNG# 以下同文
0251247
NGNG>250
いや、.aファイルその物の消し方を知りたいんじゃなくて、
.aファイル内の不要になったオブジェクトを消す方法があるのか?
それとも、.aファイルその物をMakefileの更新にあわせて常に消すのが
正しい流儀なのか?という事を聞きたかったんです。
また、わざわざ指定されなくなったオブジェクトを残すようにしているのは、
何か意図があっての仕様なのか、その辺も知りたいなと。
不要なオブジェクトを残す事に特に意味がないのに、arは追加・更新しか
しないようになっていて、それゆえ.aをわざわざ指定して消さなきゃ
いけないって、奇妙ですよね。
0252デフォルトの名無しさん
NGNGar dでは駄目?
>元々.aファイルがあったら、
俺はこういう前提ではやらないな。
make clean/allの時点で常に消されることを前提にしてる。
■ このスレッドは過去ログ倉庫に格納されています