1 名前:デフォルトの名無しさん mailto:sage [2005/05/24(火) 13:14:50 ] UNIXおよびUNIX clone環境一般のプログラミングに関する質問スレッド 前スレ 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 関連スレ Cygwin使っている人いますか? その14 (UNIX板) pc8.2ch.net/test/read.cgi/unix/1107587275/ Cygwin使っている人いますか? 3 (Windows板) pc8.2ch.net/test/read.cgi/win/1090131123/ 関連板 pc8.2ch.net/unix/ pc8.2ch.net/linux/
191 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 15:31:47 ] 俺は新手のパフォーマンスだと思う(w
192 名前:デフォルトの名無しさん [2005/06/16(木) 15:32:06 ] >>189 馬鹿かおまえは アビバに行けよ
193 名前:デフォルトの名無しさん [2005/06/16(木) 15:35:45 ] >>191 つーか新手の荒らしだろ イヤガラセ
194 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 15:40:52 ] >void main ここまで読んでやめた
195 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 15:41:41 ] >>192 いや、アビバに行くとか以前に日本語の勉強が必要だろ。
196 名前:133 [2005/06/16(木) 15:52:31 ] >>194 すみません。通常intですね。理解しています。 あと不要な変数が残っていました。すみません
197 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 15:56:37 ] >>196 他人の意見は聞かない、ftw()のマニュアルページを読んでその程度しか理解できてない、 そんな調子ならいっそ人間止めたほうがいいよ。
198 名前:133 [2005/06/16(木) 15:58:20 ] >>197 厳しい御指導ありがとうございます。
199 名前:デフォルトの名無しさん [2005/06/16(木) 16:01:54 ] >>198 気色わるい謙虚さだな ほめ殺しの類似のイヤガラセか? 慇懃不礼みたいな
200 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 16:39:32 ] スルーした方がいいって。
201 名前:デフォルトの名無しさん [2005/06/16(木) 16:57:52 ] アビバに行ってもプログラミングは教えてくれないと思う。 とマジレス
202 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 17:00:11 ] さっそく [アビバ プログラミング] でググってみますた。
203 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 17:31:04 ] アミバ最強
204 名前:133 [2005/06/16(木) 17:35:07 ] 私の理解力では上記のコーディングしかイメージが浮かばなかったので おそらく間違いとして認識している具体的なコードの指摘を受けれれば ftwの使い方も理解できるようになれるかと思っております。 教えていただいたページや、その他も参照してみましたが この関数について、実際の使用例があまりにも少なく、皆様のスキルを お借りし、理解を深めようとおもいました。迷惑だったなら申し訳ありません。
205 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 17:35:39 ] 一行に数字が書いてあるファイルが或とします 1 2 3 等、それは複数あります これを、hoge[]に変数1つにつき一行の値を入れて行きたいのですが このコードをかいていただけないでしょうか?
206 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 17:41:56 ] いただけません。
207 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 17:42:40 ] @hoge = <>;
208 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 18:02:00 ] >>207 そっか、言語指定無かったもんな
209 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 18:02:29 ] hoge[] と書いてあるわけだが
210 名前:205 mailto:sage [2005/06/16(木) 18:03:28 ] すいません C言語です
211 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 18:06:10 ] #include <stdlib.h> int main(void) { system("perl -e '@hoge = <>;'"); return 0; }
212 名前:205 mailto:sage [2005/06/16(木) 18:08:21 ] perlは入っていません また、systemとかは使わずに C言語しか、使わずにそのひとつのファイルで完結するように システムコール以外の呼出はしないようにお願いします
213 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 18:08:50 ] 断る。
214 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 18:08:52 ] unixらしい宿題ですね
215 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 18:10:22 ] hoge[NR] = $1; って書きにきたら時既に遅しw
216 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 18:11:42 ] >>212 >C言語しか、使わずにそのひとつのファイルで完結するように >システムコール以外の呼出はしないようにお願いします ストリーム系ライブラリは使っちゃいけないの?
217 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 18:11:48 ] 答えない奴は2chをみないで下さい
218 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 18:13:05 ] スレ違いだから宿題スレに行けよ
219 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 18:13:17 ] 標準ライブラリの読み込みは可能です
220 名前:デフォルトの名無しさん [2005/06/16(木) 18:18:45 ] >>219 またおまえか アビバに行けっつのがわからんのか
221 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 18:21:30 ] >>218 , >>220 >>217
222 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 18:43:25 ] void hage(int hoge[], char const *fn){ int fd = open(fn, O_RDONLY); struct stat s; fstat(fd, &s); {const char *fbuf = mmap(0,s->st_size, PROT_READ,MAP_PRIVATE,fd,0);const char *p; int i=0; hoge[i]=0; for(p=fbuf; p!=&fbuf[s->st_size]; p++) { if( '0'<=*p&&*p<='9' ){hoge[i]=hoge[i]*10+*p-'0'; } else if( hoge[i] ){ i++; hoge[i]=0;}} munmap(fbuf,s->st_size);close(fd);}} エラーチェックは省略。コンパイルは掛けてない。システムコールのみ使用。数字はASCIIに従うこと。
223 名前:205 mailto:sage [2005/06/16(木) 18:43:39 ] 誰かお願いします
224 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 18:44:54 ] あ、sはポインタや無かった。脳内コンパイルはあかんなぁ。やっぱし。
225 名前:205 mailto:sage [2005/06/16(木) 18:48:41 ] fopenを使ってお願いします
226 名前:デフォルトの名無しさん [2005/06/16(木) 18:52:47 ] まじめに答えてるやつは 宿題やらされてるのがわからんのか
227 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 18:57:21 ] >>226 誰ひとり真面目に答えてないのがわからんのか?(w
228 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 18:58:27 ] void hage(int hoge[], const char *fn){ FILE* fp = fopen(fn, "r"); struct stat s; fstat(fileno(fp), &s); {const char *fbuf = mmap(0,s.st_size, PROT_READ,MAP_PRIVATE,fileno(fp),0); const char *p;int i=0; hoge[i]=0; for(p=fbuf; p!=&fbuf[s.st_size]; p++) { if( '0'<=*p&&*p<='9' ){hoge[i]=hoge[i]*10+*p-'0'; } else if( hoge[i] ){ i++; hoge[i]=0;}} munmap(fbuf,s.st_size);fclose(fp);}} ほい。fopen版。これ以上条件を小出しにするようなら、おいらは対応しないから。
229 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 19:00:13 ] うっせぇーばーか
230 名前:デフォルトの名無しさん [2005/06/16(木) 20:12:14 ] >>205 スレ違い pc8.2ch.net/test/read.cgi/unix/1062659209/l50
231 名前:133 [2005/06/16(木) 23:56:29 ] 私のところも何とかお願いできませんか?
232 名前:デフォルトの名無しさん mailto:sage [2005/06/17(金) 00:05:53 ] >>138 の文字列部分のコマンド入力で済むことを、わざわざCで書かなければいけないってのが、 「ちょっと見てやろうか」という気持ちを全く起こさせない原因なのだよ
233 名前:デフォルトの名無しさん mailto:sage [2005/06/17(金) 00:31:41 ] /* それでもCでやる馬鹿 */ #define CMD_STR "find %s>%s" void func(const char * targetDir, const char * outputFile) { if (targetDir == NULL || outputFile == NULL) { return; } char * buf = malloc(strlen(targetDir) + strlen(outputFile) + sizeof(CMD_STR)); if (buf == NULL) { return; } sprintf(buf, CMD_STR, targetDir, outputFile); system(buf); free(buf); }
234 名前:デフォルトの名無しさん mailto:sage [2005/06/17(金) 00:48:08 ] system()で呼び出すだけでは、それこそまったく意味が無いな。 より実用的でありがちなのはpopen()を使う例だろう。
235 名前:133 [2005/06/17(金) 00:55:03 ] すみません。すべてネタをばらします。実はですね VBで作った画面があるんですが、機能詳細はWindows端末から ボタンを押してあるリモート側DIRの下にあるファイル一覧を取得して リダイレクトした結果をダウンロードする仕組みがあるのです 要はLIB管ツールのプログラム納品資材確認機能だったのですが、以前 私が担当していた環境はVMSマシンでした。ところが今年から UNIX管理資材とかLINUX管理資材とかが出現してきて以前のVMSの 総合的な動作を丸々流用して使いまわししないといけなくなったのです VB画面のボタンからUNIXへリモート処理する仕組みは丸々流用できるので そこで明示的にコールしているVMS上においているDIR情報取得ツールを UNIXとかLINUXで同じように動くように作成したいのです。可能でしょうか?
236 名前:デフォルトの名無しさん mailto:sage [2005/06/17(金) 00:57:40 ] find
237 名前:133 [2005/06/17(金) 00:59:16 ] findでは半年前のファイルに対しての情報で時刻部が欠落してしまうのです もちろんソラリス10だとLSの--full-timeで問題なく落とせるわけですが
238 名前:デフォルトの名無しさん mailto:sage [2005/06/17(金) 01:02:08 ] >>235 そんならpopen(3)でfind(1)を呼ぶのが一番ラクだな FILE *fp; char buff[8192]; snprintf(buff, "find ......); FILE *fp = popen(buff, "r"); while (fgets(buff, sizeof buff, fp)) { ..... } pclose(fp); こんな感じだ
239 名前:デフォルトの名無しさん mailto:sage [2005/06/17(金) 01:03:32 ] >>237 なら取得できたファイル名に対してstat()すればよかろ
240 名前:133 [2005/06/17(金) 01:08:47 ] >>238 その手法は一度調べてみます。ありがとうございます。 >>237 上部の私が貼ったソースで既にstatが見受けられると思いますが statのメイン部分では問題なくfullTimeを取得できる結果を得ていますので その個別にstatを行うための拠点DIRにおいてそれぞれ処理する方法を お伺いしている次第なのです。 指定したDIR配下の詳細データを列挙したくおもいます
241 名前:デフォルトの名無しさん [2005/06/17(金) 01:17:22 ] 自分で出来ないなら仕事辞めれ 他のまともな人に雇用を譲れ
242 名前:133 [2005/06/17(金) 01:24:23 ] それはごもっともかもしれません 自分で解決して生きていかねばならない世の中ですから いつまでも他人に甘えて生きていけるわけではありません 重々承知です。
243 名前:デフォルトの名無しさん mailto:sage [2005/06/17(金) 01:36:28 ] つか今の時代ネットが随分便利になってるし キーワードもらえればそれで十分でしょ? 宿題○投げ学生サンじゃないんだしさ、給料貰ってんでしょ、それで? といいつつ。 >>240 stat()の引数に指定するパス名はフルパスか、カレントディレクトリからの 相対パスでなければならない。 popen()でfind(1)を実行する場合に、カレント以外のディレクトリを 指定したんなら、そのディレクトリのフルパスにfind(1)から出力 されたパスを足せばいいでしょ。 そんぐらいは、できるよね?
244 名前:デフォルトの名無しさん mailto:sage [2005/06/17(金) 06:54:17 ] ダメ男にあれこれやってやると、ますますダメな奴を作る事になるぞ ああ、それが狙いか?
245 名前:デフォルトの名無しさん mailto:sage [2005/06/17(金) 07:37:54 ] なんかSolarisでfulltimeで取得できる云々をみて思い出したが、>>133 は前スレの>>970 か同じ職場のやつかな。 >>980 のソースを弄るだけでいいと思うが。
246 名前:デフォルトの名無しさん mailto:sage [2005/06/17(金) 07:58:21 ] >>153
247 名前:デフォルトの名無しさん mailto:sage [2005/06/17(金) 08:01:21 ] 235と153が激しく矛盾している点について。
248 名前:デフォルトの名無しさん mailto:sage [2005/06/17(金) 08:04:00 ] >>245 漏れもそれを思い出していますた。
249 名前:デフォルトの名無しさん mailto:sage [2005/06/17(金) 08:56:39 ] 狼少年あらわる
250 名前:デフォルトの名無しさん [2005/06/17(金) 10:23:16 ] みんな気をつけろ! コイツはとんだクワセ者だぞ!
251 名前:デフォルトの名無しさん mailto:sage [2005/06/17(金) 10:35:13 ] だからスルーしとけと言ったのに。
252 名前:デフォルトの名無しさん mailto:sage [2005/06/17(金) 12:36:36 ] もう来ないだろ。俺は面白かったから文句無い
253 名前:デフォルトの名無しさん mailto:sage [2005/06/17(金) 13:02:08 ] >>244 イイんじゃね? 仕事ができないクズは、一度どうしようもないくらい追い込まれないと治らないから(笑)。
254 名前:デフォルトの名無しさん mailto:sage [2005/06/19(日) 10:15:48 ] ftw(3)なんて関数あるんだ、知らなかった。 ほんのちょっと楽が出来るという微妙な関数だな、これ #include <stdio.h> #include <ftw.h> int func(const char *path, const struct stat *st, int type) { printf("%s is ", path); switch(type){ case FTW_F: printf("File\n"); break; case FTW_D: printf("Directory\n"); break; } return 0; } int main(int ac, char **av) { ftw(av[1], func, 10); }
255 名前:デフォルトの名無しさん mailto:sage [2005/06/19(日) 15:32:49 ] 微妙というか発想はLisperっぽいね。
256 名前:133 [2005/06/20(月) 00:42:41 ] ありがとうごさいました。うまく動きそうです。 感謝します。皆さまの数々の親身な対応に頭があがりません。ありがとうございました。
257 名前:デフォルトの名無しさん mailto:sage [2005/06/20(月) 01:38:27 ] オオカミがきたぞ
258 名前:デフォルトの名無しさん mailto:sage [2005/06/20(月) 17:58:25 ] 良く分かってないので変な質問かもしれませんが… mkdir -p /xxx/xxxx 2> /dev/null この 2> ってどういう意味なのでしょう?
259 名前:デフォルトの名無しさん mailto:sage [2005/06/20(月) 18:05:41 ] man pipe
260 名前:デフォルトの名無しさん mailto:sage [2005/06/20(月) 18:10:26 ] www.google.co.jp/search?hl=ja&lr=lang_ja&q=2
261 名前:デフォルトの名無しさん mailto:sage [2005/06/20(月) 18:11:04 ] >>258 ファイル記述子の2番への出力をりだいれくと。
262 名前:デフォルトの名無しさん mailto:sage [2005/06/20(月) 18:11:50 ] >>258 n> file は、ファイルディスクリプタ n を file にリダイレクトする。 ファイルディスクリプタ 2 は標準エラーに割り当てられているから、 その例では、mkdir の標準エラーへの出力を /dev/null にリダイレクトして 捨てている。
263 名前:デフォルトの名無しさん mailto:sage [2005/06/20(月) 18:14:46 ] >>261-262 ありがとうございます
264 名前:デフォルトの名無しさん mailto:sage [2005/06/20(月) 18:21:14 ] >>258 よ >>259 が1番正確な答えをいってるのになぜ感謝をせん >>261->>262 お前等も甘やかすな スレ違い以上に板違いだろが 痔になって死ね
265 名前:デフォルトの名無しさん mailto:sage [2005/06/20(月) 18:24:28 ] 黙れホモ野郎
266 名前:デフォルトの名無しさん mailto:sage [2005/06/20(月) 18:26:50 ] > >>259 が1番正確な答えをいってるのになぜ感謝をせん それを言うなら man sh あたりだろwwww
267 名前:デフォルトの名無しさん mailto:sage [2005/06/20(月) 18:34:57 ] うは ほんとに man pipeに載ってるね
268 名前:デフォルトの名無しさん [2005/06/20(月) 19:05:43 ] APUE 読めってことだね
269 名前:デフォルトの名無しさん mailto:sage [2005/06/20(月) 22:19:49 ] >>268 高い。厚い。 あの手の本は電車の中で読めるように5冊ぐらいに分けて欲しいよ。
270 名前:デフォルトの名無しさん [2005/06/20(月) 22:38:25 ] www.amazon.co.jp/exec/obidos/ASIN/4894712059/ 非常にハイレベルです, 2003/06/01 レビュアー: 本音のレビューアー (プロフィールを見る) 東京都 Japan 中途半端なレベルのエンジニアが買うと痛い目を見ます。 プログラミングのセンスがあり、ネットワーキングについてもそれ相応の知識と経験がある方が読むと、骨の隋まできっちりと把握できるでしょう。 非常に高価な本なので、一度本屋で目を通してから買うことをお勧めします。
271 名前:デフォルトの名無しさん mailto:sage [2005/06/20(月) 22:47:41 ] AdvancedWindowsの方がためになるし、高い。
272 名前:質問です [2005/06/20(月) 23:54:26 ] 質問です、 共有ライブラリの検索パスが通っているディレクトリを調べるには どうすればよいのでしょうか?
273 名前:デフォルトの名無しさん mailto:sage [2005/06/20(月) 23:57:49 ] ld.so.conf
274 名前:デフォルトの名無しさん mailto:sage [2005/06/21(火) 00:10:40 ] $ echo $LD_LIBRARY_PATH | awk -F: '{ for (i = 1; i <= NF; i++) { print $i } }'; ldconfig -p | tail +2 | awk '{ print $NF }' | xargs -n 1 dirname | sort | uniq こんなかんじ?
275 名前:デフォルトの名無しさん mailto:sage [2005/06/21(火) 00:26:42 ] まー、OSによって違うしね
276 名前:質問です [2005/06/21(火) 00:30:22 ] >>273 ありがとうございます。/etc/ld.so.confにそれらしきリストが見つかりました。 ただそれにパスを加えて再起動しても、コンパイル時パスが通ってないようで苦戦しております
277 名前:質問です [2005/06/21(火) 00:37:02 ] 共有ライブラリを作りたいのですが、うまくいきません、問題点がわかりましたら教えて下さい。 ・共有ファイル側makefile(ソースファイル2つあります): tws.so:tws_envvalue.o tws_time.o g++ -shared tws_envvalue.o tws_time.o -o tws.so tws_envvalue.o:tws_envvalue.cpp g++ -fPIC -c tws_envvalue.cpp -o tws_envvalue.o tws_time.o:tws_time.cpp g++ -fPIC -c tws_time.cpp -o tws_time.o install: cp -f *.h /usr/include/tws/ cp -f tws.so /usr/lib/ (makeでコンパイルした後make install でsoファイルを移動しています。) ・利用ファイル側 cgi_env.cgi:cgi_env.o g++ -l /usr/lib/tws.so cgi_env.o -O3 -o cgi_env.cgi cgi_env.o:cgi_env.cpp g++ -c cgi_env.cpp -D LINUX -o cgi_env.o install: cp cgi_env.cgi ../../public_html/ このようにすると。利用ファイル側コンパイル中 g++ -l /usr/lib/tws.so cgi_env.o -O3 -o cgi_env.cgi /usr/bin/ld: cannot find -l/usr/lib/tws.so と出力され、あるはずのtws.soが認識されません。一体何が悪いのでしょうか。 gcc バージョンは 3.2.2 20030222 (Red Hat Linux 3.2.2-5)と出ました。
278 名前:デフォルトの名無しさん mailto:sage [2005/06/21(火) 00:48:15 ] gcc -Lディレクトリ名 -o a.out foo.o bar.o -lライブラリ名
279 名前:デフォルトの名無しさん mailto:sage [2005/06/21(火) 00:49:12 ] >>277 -ltwsなんじゃないの?
280 名前:デフォルトの名無しさん mailto:sage [2005/06/21(火) 01:00:47 ] -L/usr/lib -ltwsだと /usr/lib/libtws.(so|a) をさがすのでは -Lも-lもつけないで g++ foo.o bar.o /usr/lib/tws.so -o unko とか?
281 名前:質問です [2005/06/21(火) 01:14:46 ] >>280 さんのご指摘がビンゴでした、そのまんまの記述で無事コンパイル&使用が出来ました。 >>278 >>279 さんも合わせてお礼申し上げます、助かりました。
282 名前:デフォルトの名無しさん mailto:sage [2005/06/21(火) 08:55:54 ] ウンコー
283 名前:デフォルトの名無しさん mailto:sage [2005/06/24(金) 17:27:56 ] 教えてください。Cソースコードでテキストファイルに結果を書込みしたいのですが どうすれば良いでしょう??
284 名前:デフォルトの名無しさん mailto:sage [2005/06/24(金) 17:39:22 ] system("echo hoge > hoge.txt");
285 名前:デフォルトの名無しさん mailto:sage [2005/06/24(金) 17:39:52 ] ソースコードでは相当に難しい
286 名前:デフォルトの名無しさん mailto:sage [2005/06/24(金) 17:49:09 ] cintで実行したら、ソースコードで書き込んだと言うことにならないか? というかスレ違いです、>>283 さんよ。 UNIX独自じゃないしね。(binaryならあれだけども)
287 名前:デフォルトの名無しさん mailto:sage [2005/06/24(金) 22:45:48 ] ソースコードでファイルに書くのは無理でした。 プログラムの実行結果の値をプログラム中から指定したファイルに 書き込みたいです。 exit(1); とか main の中の return -1; とかの 1や -1のことです。 どのような方法が可能でしょうか?
288 名前:デフォルトの名無しさん mailto:sage [2005/06/24(金) 22:55:46 ] return の意味わかってるか?
289 名前:デフォルトの名無しさん mailto:sage [2005/06/24(金) 22:56:42 ] int main () { pid_t pid; int st; switch((pid = fork())) { case -1: abort(); case 0: break; default: waitpid(pid, &st, 0); WriteToFile(WEXITSTATUS(st)); _exit(0); } ... /* 実際の処理 */ }
290 名前:デフォルトの名無しさん mailto:sage [2005/06/24(金) 22:58:25 ] >>288 の答えの方が的確だな
291 名前:デフォルトの名無しさん mailto:sage [2005/06/24(金) 23:41:31 ] 基本的にPerlしか判らないんですが、ネットワークの負荷試験&自分の為に CでSocketプログラムを作りたいと思いました。 簡単なTCPで通信をするプログラムは出来たのですが 負荷試験目的でパケットサイズを小さいのから大きいのを指定して 遅れる様にしたいと思います。 この場合は送る文字で制限するのが効率が良いのでしょうか? また、1500バイト以上の文字列をランダムなバイト数で送る為には やはり送る時のバッファサイズ(?)で何とかするのがスマートなんでしょうか? なんか書いていて他にどうするんだって気になって来ましたが 普通のFTPとかはどういう単位でパケットサイズを決めているのでしょうか? 環境 : linux,solaris,FreeBSD,HP-UX for GCC