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


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

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



1 名前:名無し募集中。。。 [05/01/15 02:18:37]
UNIXおよびUNIX clone環境一般のプログラミングに関する質問スレッド

前スレ
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

関連スレ
Cygwin使っている人いますか? その13 (UNIX板)
pc5.2ch.net/test/read.cgi/unix/1099157755/
Cygwin使っている人いますか? 3 (Windows板)
pc5.2ch.net/test/read.cgi/win/1090131123/

関連板
pc5.2ch.net/unix/
pc5.2ch.net/linux/


89 名前:デフォルトの名無しさん mailto:sage [05/02/17 04:16:35 ]
呼び側で、引数それぞれにつき、BUFSIZぶん確保。
返り値は、エラーの有無。

おもしろかった。

int hoge(char *cmd, char *b)
{
    FILE *fp;
    int ret;

    cmd[strlen(cmd) - 1] = '\0'; /* 改行がくっついてる、と、仮定 */
    printf("cmd: %s\n", cmd);
    if ((fp = (popen(cmd, "r"))) == NULL) {
        perror("popen");
        return (1);
    }
    if ((ret = fread(b, 1, BUFSIZ, fp)) < 1) {
        printf("no output from \"%s\"\n", cmd);
    } else if (ret < 0) {
        perror("fread");
        pclose(fp);
        return (1);
    }
    pclose(fp);
    return (0);
}


90 名前:デフォルトの名無しさん mailto:sage [05/02/17 04:42:42 ]
??ちょとまずかった??

    if ((ret = (fread(b, 1, BUFSIZ, fp))) < 1) {
        fprintf(stderr, "no output from \"%s\"\n", cmd);
        if (ferror(fp)) {
            perror("fread");
            pclose(fp);
            return (1);
        }
    }

...すみません。もうやめます。

91 名前:デフォルトの名無しさん mailto:sage [05/02/17 06:11:03 ]
どうしてUNIX厨のソースはこんな醜いんだろう

92 名前:デフォルトの名無しさん [05/02/17 07:40:22 ]
それがUNIXクオリティ

93 名前:デフォルトの名無しさん [05/02/17 12:54:54 ]
>>91
それは厨だからさ。

94 名前:デフォルトの名無しさん mailto:sage [05/02/17 13:22:01 ]
>>91
お前のレベルが低いだけだろ


95 名前:デフォルトの名無しさん [05/02/17 13:56:20 ]
すみません。よろしければ教えてください。

mailxでメールを送信する際に
添付ファイルをつけて送信することは可能なのでしょうか?

どこぞやにUNIXじゃ添付できないって書いてあったんですけれども
もしできそうならおしえていただけますでしょうか?

96 名前:デフォルトの名無しさん mailto:sage [05/02/17 13:57:04 ]
帰れ

97 名前:デフォルトの名無しさん [05/02/17 13:58:42 ]
>>95
板違い



98 名前:デフォルトの名無しさん mailto:sage [05/02/17 13:59:16 ]
あらら、答えられないなら黙ってればいいのにw
UNIX厨っていつも余計な事するよね

99 名前:95 [05/02/17 14:04:38 ]
もうしわけないです、どこの質問すればいいですか?
誘導願いしますw

UNIXの環境上からmailxで添付ファイルの送り方
があればききたいのですけれども




100 名前:デフォルトの名無しさん mailto:sage [05/02/17 14:05:32 ]
なんでマニュアル読まないの?

101 名前:デフォルトの名無しさん [05/02/17 14:06:43 ]
マジレスすると
$ man mailx

102 名前:デフォルトの名無しさん mailto:sage [05/02/17 14:08:06 ]
$ man ko

103 名前:95 [05/02/17 14:08:38 ]
manなんてインストールしてません
おねがいします
教えてください

104 名前:デフォルトの名無しさん mailto:sage [05/02/17 14:10:09 ]
マニュアル熟読しないと使えない時点で糞だよね
UNIXなんて捨てたら?

105 名前:デフォルトの名無しさん mailto:sage [05/02/17 14:11:45 ]
man入れてないんだったらオンラインマニュアルでもなんでもあるだろが
考えろよ

106 名前:デフォルトの名無しさん mailto:sage [05/02/17 14:13:13 ]
つーかおまえがmanなんて見ても参考にならねーと思う
あきらめろ

107 名前:95 mailto:sage [05/02/17 14:14:06 ]
ばーか



108 名前:デフォルトの名無しさん [05/02/17 14:14:20 ]
ここはプログラミングのスレであって、ツールの使い方のスレではない。

109 名前:デフォルトの名無しさん mailto:sage [05/02/17 14:15:16 ]
シグナルってシグナルハンドラからすぐにリターンしないとだめ?
そのまま延々と処理を続けてもいい?


110 名前:95 mailto:sage [05/02/17 14:15:25 ]
なんだかんだと言い訳ばっかでつかえねーやつら。
氏んだらいいと思うよ。

111 名前:104 mailto:sage [05/02/17 14:15:27 ]
はいはいそうですね
そのとうりです
だからもうUNIXと言う文字があるところにはかかわらなくていいですよ
じゃぁね ばいばい

112 名前:デフォルトの名無しさん [05/02/17 14:16:37 ]
いやでも、
UNIXで挫折って、わかる気がするなあ。
ずっと意味不明なコマンドの文字列打ってたら頭おかしくなりそうだし、
ずっと真っ暗なコンソール眺めてると鬱になりそうじゃん?
かといって思想のまるでないXは、オタ絵とただ沢山コンソール開くしか脳ないし、
こんなの与えても娯楽を常に要求する一般人は見向きもしない。
そもそもWebでしか見掛けない、哀れなOS、というのが一般人の見解だし。
そうそう、最近LindowsがUNIXの印象かなり悪くしたよね。
この事件でUNIXはビジネスで成功できないことがまた証明されてしまったわけだ。
昔からUNIXは関係者同士で常に足を引っ張って成長しない。
お金の匂いしないよね。全然。
そんなOSだから、挫折が常態であるのは必然なんだと思う。

113 名前:デフォルトの名無しさん mailto:sage [05/02/17 14:18:01 ]
>>109
いいよ
Xのメセージは全部シグナルだし

114 名前:デフォルトの名無しさん mailto:sage [05/02/17 14:25:17 ]

元95です。偽者発生してもうきけるふんいきじゃないですね。残念です。

man 英語だったんでうーんって感じだったんですけど
あとSHELLからコマンドで毎日定時に送るようにしたかったんですけど、

まあがんばって訳してみます。

結果あらしてすみませんw

115 名前:デフォルトの名無しさん [05/02/17 14:33:24 ]
ここは役立たずの巣窟

116 名前:デフォルトの名無しさん mailto:sage [05/02/17 14:36:52 ]
95は何を使ってるんだ?
話はそれからだ

117 名前:デフォルトの名無しさん mailto:sage [05/02/17 14:45:51 ]
オソル オソル キイテミル
現在実行中のプロセスが「自分自身」の絶対パスを知る方法ってありますか?
適当な path がとおってる環境下で、$ hoge <arguments...> とやったときに、
そのプログラムのなかで、hoge が /usr/bin/hoge なのか /usr/local/bin/hoge
なのかを知る方法でつ。
argv[0] を拾っても、上記の例だと hoge が得られるだけだし・・・



118 名前:デフォルトの名無しさん mailto:sage [05/02/17 14:53:28 ]
>>117
Linux なら自身のpidを取得して/proc/pid/exe辺りを見ればいいんだけど。
man 5 proc で説明でると思う。他のOSの場合どうするのかは知らん。

119 名前:デフォルトの名無しさん mailto:sage [05/02/17 14:55:34 ]
>>117
普通に考えると、ない。

120 名前:114 mailto:sage [05/02/17 15:40:39 ]
SunのSolaris 8です

これでこたえなってます?

121 名前:デフォルトの名無しさん mailto:sage [05/02/17 15:42:08 ]
>>118
ほんとUNIXって使えないね

122 名前:デフォルトの名無しさん mailto:sage [05/02/17 16:03:21 ]
>>114
だから、ここはプログラミング質問スレなんだから
プログラムの使い方を聞くなってば。

123 名前:デフォルトの名無しさん mailto:sage [05/02/17 16:09:39 ]
>>111
>そのとうりです
とうり?

124 名前:デフォルトの名無しさん mailto:sage [05/02/17 16:33:36 ]
>>118 ありがd 調べてみまつ。
>>119 確かに >>118 さんに教えて頂いた方法は「普通」の方法っぽくはないですね。
もっと簡単に出来そうなんだけど・・・
以下のような動作するコマンドって、珍しいものですか?
usage:
 hoge (-f <conf file>)
-f で設定ファイルが指定されればそのファイルを使うけど、オプション指定なしで起動された
場合は、hoge 自身が置かれているディレクトリ直下の conf file を使います(default)。
みたいな・・・

125 名前:デフォルトの名無しさん mailto:sage [05/02/17 17:25:45 ]
>>95 氏は自分のやりたいことが分かっていないんじゃないかな。
ここで聞くより mailx と MIME でググると少しは幸せになったのに。


126 名前:デフォルトの名無しさん mailto:sage [05/02/17 17:25:45 ]
>>117
確実に(どんな場合でも)取得する方法はない。
起動後にchroot(2)してたらパスが存在しないことすらありえるし。

127 名前:デフォルトの名無しさん mailto:sage [05/02/17 17:44:02 ]
>>124
「hoge 自身が置かれているディレクトリ直下の……」というようなことは
「しない」っていうのがUNIXでの流儀なんですよ。
デフォルトのパスは定数として埋め込むのが安全です。




128 名前:デフォルトの名無しさん mailto:sage [05/02/17 17:47:50 ]
>>124 >>127 さんの言う通りじゃ。どこぞのOSの悪い習慣は捨てなされ。

いくつか流派があるが、GNU流の設定ファイルの置き場のお作法はこうじゃ
ttp://www.sra.co.jp/wingnut/standards/standards-ja_7.html#SEC54


129 名前:デフォルトの名無しさん mailto:sage [05/02/17 18:17:03 ]
>>128
そんなに悪いものかな?
まあ、郷に入りては郷に従え、と。

130 名前:デフォルトの名無しさん mailto:sage [05/02/17 18:33:07 ]
そもそも1つのファイルは複数の場所に存在できるんだから、
「自身が置かれているディレクトリ」なんて特定できるわけがない。

131 名前:デフォルトの名無しさん mailto:sage [05/02/17 18:35:51 ]
↑馬鹿?

132 名前:デフォルトの名無しさん mailto:sage [05/02/17 18:39:31 ]
>>129
動作を既定する設定ファイルなら、利用者ごとに設定できるようにするべき。
実行モジュールと同じディレクトリに置くという悪しき習慣の弊害は、
Win95時代のソフトウェアがAdministratorでないと設定を変えられない+
利用者ごとに設定できないという形でも現れている。

また、環境に依存するような設定ファイルなら、アプリケーションに埋め込むか
システムで管理するデータベースなどに登録するのがいい。
ここでもやはり、実行モジュールと同じディレクトリに置くというメリットは殆ど無い。

133 名前:デフォルトの名無しさん mailto:sage [05/02/17 18:41:21 ]
>>130
ああそうか、そういう問題もあるね。今まで気付かなかったよ。

134 名前:デフォルトの名無しさん mailto:sage [05/02/17 18:55:36 ]
>>132
つーか一体いつの時代のWindowsとアプリを批判してるんだよ・・・

135 名前:デフォルトの名無しさん mailto:sage [05/02/17 18:57:37 ]
>>132
95くらいだとまだシングルユーザーだったからなぁ……
確かにそういう習慣はあったけれど今ではそれなりに改善されてるよ。
まだ昔の習慣引きずってるアプリケーション多いけどね。
普段Windowsしか使ってなかったから気付かなかったよ。参考になった。ありがとう。

136 名前:デフォルトの名無しさん mailto:sage [05/02/17 19:29:19 ]
>>126-135
サンクスです。 脳内仕様を、も一回見直してみます。


137 名前:デフォルトの名無しさん mailto:sage [05/02/17 21:09:15 ]
つーかインストール先のデータ使うなんて普通にありそうだが



138 名前:デフォルトの名無しさん mailto:sage [05/02/17 21:36:16 ]
>>137 守ってね。管理面倒になるから。
www.pathname.com/fhs/pub/fhs-2.3.html


139 名前:デフォルトの名無しさん mailto:sage [05/02/18 00:13:21 ]
自己解凍書庫とか作れないじゃん


140 名前:デフォルトの名無しさん mailto:sage [05/02/18 00:24:45 ]
>>139
そこでsharですよ

141 名前:デフォルトの名無しさん mailto:sage [05/02/18 01:04:11 ]
つーかシェルでは自分自身取得できるってことじゃん
無茶苦茶だな

142 名前:デフォルトの名無しさん [05/02/18 01:09:34 ]
馬鹿が多いな
自己パス得られないのはUNIXの欠陥の1つだよ

こいつ(>>138)こんなリンク張れば騙される奴がいるとでも思ってんだろうなw

143 名前:デフォルトの名無しさん mailto:sage [05/02/18 01:15:35 ]
UNIXはそういう便利関数が標準化される前に廃れちゃったからね。
POSIXにもないってのは失敗かもな。

144 名前:デフォルトの名無しさん mailto:sage [05/02/18 01:19:47 ]
まー、それでもなんとかなってるから別にいいけどね。

145 名前:デフォルトの名無しさん mailto:sage [05/02/18 01:21:20 ]
>>141
シェルとCで機能の同期が取れてないのはヤバイ
創作の妨げでしかない


146 名前:デフォルトの名無しさん mailto:sage [05/02/18 01:23:14 ]
はい、これでUNIXのヤバさが1つわかりましたね

147 名前:デフォルトの名無しさん mailto:sage [05/02/18 01:27:05 ]
ハイハイ



148 名前:デフォルトの名無しさん mailto:sage [05/02/18 01:30:22 ]
WindowsではAPI一個呼べば済む問題が、
UNIXでは流儀やら互換性やら実現不能やらで大騒ぎ
たしかにアフォすぎる

149 名前:デフォルトの名無しさん mailto:sage [05/02/18 01:33:30 ]
ファイルシステムのセマンティクスからして違うのに無視して騒ぐバカがいるな。


150 名前:デフォルトの名無しさん mailto:sage [05/02/18 01:35:17 ]
ム板なんてWin厨ばっかなんだからしょうがないべ。


151 名前:デフォルトの名無しさん mailto:sage [05/02/18 01:35:57 ]
こんどは意味論で擁護か
おめでたい頭だな
UNIX板で普及スレとか立ってたけど
こんなアフォばっかじゃ永久に無理

152 名前:デフォルトの名無しさん mailto:sage [05/02/18 01:42:16 ]
それ結構昔だね。
おれも無理だと思う。

153 名前:デフォルトの名無しさん mailto:sage [05/02/18 01:45:20 ]
まあ、ファイルがバラけるのを良しとしない人は多い気がする。
2chでそういう便利関数集めた汎用ライブラリ作らない?
主要UNIX環境で動くようなやつを。
完全PDSで。

154 名前:デフォルトの名無しさん mailto:sage [05/02/18 01:50:15 ]
PDSて・・・
PC98出身のフリーウェア作者かい?

155 名前:デフォルトの名無しさん mailto:sage [05/02/18 01:50:35 ]
じゃあ、とりあえず
・Linux、*BSD、SunOS等のメジャーな奴のやり方教えてくれ
Linuxでのやり方は上に書いてたっけ。

156 名前:デフォルトの名無しさん mailto:sage [05/02/18 01:51:50 ]
シェルスクリプトならフルパスが得られるんだから、バイナリでもフルパスが
欲しいなら
#! /bin/sh
dir=$(dirname $0)
exec ${dir}/../lib/hoge/hoge.bin "$@"
みたいにするだけだよ。
jdk とか firefox とかでも使ってる、割とメジャーな手法。

157 名前:デフォルトの名無しさん mailto:sage [05/02/18 01:53:40 ]
じゃあそれ最初に言えよ・・



158 名前:デフォルトの名無しさん mailto:sage [05/02/18 01:56:54 ]
>>157
そういうシェルスクリプトを作るってことだから。
たぶん何の解決にもなってない。
UNIXは製作者側のセキュリティ保護をまったく考慮しないOS。

159 名前:デフォルトの名無しさん mailto:sage [05/02/18 01:57:51 ]
つまり嘘ファイルを掴まされてもわからんてことね。

160 名前:デフォルトの名無しさん mailto:sage [05/02/18 01:58:12 ]
それ引数にフルパス渡せばフルパスが分かるっていってるだけですから〜残念!

161 名前:デフォルトの名無しさん mailto:sage [05/02/18 02:02:25 ]
シェルスクリプトで出来ることがCで出来ないとでも思ってるのか?


162 名前:デフォルトの名無しさん mailto:sage [05/02/18 02:04:10 ]
ここはひどく汚染された釣堀ですね

163 名前:デフォルトの名無しさん mailto:sage [05/02/18 02:06:33 ]
釣り師もレッテル貼るしか能が無いしな。


164 名前:デフォルトの名無しさん mailto:sage [05/02/18 02:12:52 ]
>>134
>>132の言う問題が明確に問題視されたのは、
Windows 2000 TSEのマルチユーザアプリケーションのガイドラインができてからですね。
その時からWindows(TSEやXP)でも>>124のやり方はガイドライン違反です。
今やMac OS Xでもそうです。


165 名前:デフォルトの名無しさん mailto:sage [05/02/18 02:14:22 ]
実行可能ならパスは通っているはずだから環境変数PATHを走査して…ってwhichみたいなことをする他ないのか…

166 名前:デフォルトの名無しさん mailto:sage [05/02/18 02:16:40 ]
違反って言い方は不正確だな。
Windowsロゴを取得する際に要求される仕様だってだけ。
しかもそれはユーザーデータの保存場所の指定に関してであって
カレントディレクトリのコンフィグレーションを読むのは
.NETアプリだって普通にやってるよ。

167 名前:デフォルトの名無しさん mailto:sage [05/02/18 02:21:38 ]
>>165
パスが通ってない所のものでも実行できるべ?



168 名前:デフォルトの名無しさん mailto:sage [05/02/18 02:22:13 ]
元々UNIXは専用マシンと一緒に買わせる抱き合わせ商法。
抱き合わせ商法が許されたのは20年以上前の秋葉原ぐらいだが、
現在も生き残ってるベンダーは、今でもその商法で売っている。
まさに20年前の思想。
当然ソフトウェアの保護にはものすごく疎い。
ぶっちゃげ自分のシステム以外の事はどうでもよく、問題を認識してすらいない。
ベンダーはマシンを買ってもらえれば元が取れるからわれ関せず。
不正ユーザーにとっては、動いているソフトは勝手にクラックしてください
と言わんばかりの無法地帯。

169 名前:デフォルトの名無しさん mailto:sage [05/02/18 02:24:49 ]
>>167
それなら明確に起動時にパスを指定してるから位置がとれるだろうよ。

170 名前:デフォルトの名無しさん mailto:sage [05/02/18 02:27:18 ]
>>168
とはいえ、今のUNIX(互換OS)の主流であるLinux系やら
BSD系は通常ハードウェアについてこないぞ。

MacOSはついてくるな。

PCは、MSとの契約でWindowsを抱き合わせしないと販売できない
(Windowsを供給してもらえない、仕切り値が高くなる)ようになってる。

171 名前:デフォルトの名無しさん mailto:sage [05/02/18 02:28:16 ]
>>169
まあ1クッション置けばそうかもしれんが・・・

172 名前:デフォルトの名無しさん mailto:sage [05/02/18 02:28:36 ]
>>167
あぁ、そうか。あかんね。
カレントディレクトリとargv[0]を繋げるとか…駄目っぽい。

173 名前:デフォルトの名無しさん mailto:sage [05/02/18 02:35:26 ]
lsは常に/bin/lsでないとこまる。
たとえば/tmp/.../lsとか、./lsはあやしい。

174 名前:デフォルトの名無しさん mailto:sage [05/02/18 02:38:15 ]
そういう話じゃないだろ。

175 名前:デフォルトの名無しさん mailto:sage [05/02/18 02:40:36 ]
UNIX板には、シェルスクリプト、よくてperlやrubyスクリプトを
ネチネチいじってオナニーしてる連中しか居らんべ?

176 名前:デフォルトの名無しさん mailto:sage [05/02/18 02:42:52 ]
argv[0][0]が
・'/'なら絶対パス。
・'/'でなくargv[0]に'/'を含むなら相対パス。
・そうでないならPATHを調べる。
でどう?

177 名前:デフォルトの名無しさん mailto:sage [05/02/18 02:45:05 ]
argv[0] はただの引数
execl("/path/to/your/program", "/bin/cat", "hoge", NULL);
されたらどうするよ。



178 名前:デフォルトの名無しさん mailto:sage [05/02/18 02:46:49 ]
出来ません。デフォルトパスは~/にするよろし。
でいいじゃん。

179 名前:デフォルトの名無しさん mailto:sage [05/02/18 02:47:40 ]
>>177
もちろんお手上げ。

180 名前:デフォルトの名無しさん mailto:sage [05/02/18 02:49:16 ]
というかmain()に入ったときには
ファイルはunlinkされてるかもしれんし

181 名前:デフォルトの名無しさん mailto:sage [05/02/18 02:53:23 ]
どうしてできません。ごめんなさい。の一言がいえないのか。

182 名前:デフォルトの名無しさん mailto:sage [05/02/18 02:54:20 ]
>>180
確かにそれはそうなんだが、そこまで含めてしまうとなあ・・・
せめて自分自身の実体があった場所とか欲しいな

183 名前:デフォルトの名無しさん mailto:sage [05/02/18 02:57:09 ]
psの -o comm とか -o args は
プロセス構造体とかユーザ構造体から
取得してるのですか??

184 名前:デフォルトの名無しさん mailto:sage [05/02/18 03:05:32 ]
>>177
ところでpsコマンドで見れるのは
>execl("/path/to/your/program", "/bin/cat", "hoge", NULL);
で言うと"/path/to/your/program"?それとも"/bin/cat"?
今端末の前に居ないんで確認できないんだ。
折角自身のPIDが分かるのにそこから引き出せないのかな?

すみません、ごめんなさい、出来ないみたいです、諦めます。

185 名前:デフォルトの名無しさん mailto:sage [05/02/18 03:16:40 ]
ld.so(1)さんが、頑張ってますんで参考に。

186 名前:デフォルトの名無しさん mailto:sage [05/02/18 03:30:38 ]
>>181
ここまでの議論は既にできないことを前提に、
ではどうするかということに移ってると思うんだが。

なぜ謝る必要があるのかわからんな。
そういうことはKen ThonmsonやらPOSIX作ったやつらやらに言っとくれ。

187 名前:117 = 124 mailto:sage [05/02/18 08:35:27 ]
>>117>>124 でつ。 @自宅なので、ID 変わっとります。
自分の書き込みに、こんなにたくさんレスがついたの、初めてです。 やっと、ヒッキー卒業
できそうな気がしてきました。 釣り師の快感も理解でき(ry
とまれ、>>127 >>128 のご意見は参考になりますた。
それと、>>181。 一番、オモシロカターヨ。
ミンナ、アリガd



188 名前:117 = 124 mailto:sage [05/02/18 08:36:01 ]
↑ つーか、ID ないじゃん

189 名前:デフォルトの名無しさん mailto:sage [05/02/18 09:30:24 ]
>>184
psで見れるのはどのUNIXでもargv[0]だと思う。






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

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

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