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/
175 名前:133 [2005/06/16(木) 13:39:21 ] ここに貼っては駄目でしょうか?アップローダー使った事がないのです。
176 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 13:42:52 ] >>175 ダメ。絶対。
177 名前:133 [2005/06/16(木) 13:44:54 ] 大量なコードではなくおおよそ30ステップくらいですが だめでしょうか?
178 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 13:46:52 ] ダメ男が都合のいい女にしつこくしている構図だな
179 名前:デフォルトの名無しさん [2005/06/16(木) 13:56:15 ] また馬鹿がひつこいな
180 名前:133 [2005/06/16(木) 14:26:16 ] 貼るなといわれたのであれば諦めます。すみません
181 名前:デフォルトの名無しさん [2005/06/16(木) 15:07:37 ] >>180 せめてコンパイルくらい通してくれ
182 名前:デフォルトの名無しさん [2005/06/16(木) 15:08:49 ] ソースうpまだ〜 (・∀・ )っ/凵 ⌒☆チンチン
183 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 15:14:03 ] >>176 覚醒剤撲滅キャンペーン? >>178 「先っちょだけでいいからさぁ」ってやつ? >>181 同意
184 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 15:17:12 ] >177 133 2005/06/16(木) 13:44:54 >180 133 2005/06/16(木) 14:26:16 この間にアップローダの使い方くらいいくらでも調べられそうな気がするが。
185 名前:133 [2005/06/16(木) 15:18:47 ] コンパイルは通りました。いかがでしょうか?嘘ではありません
186 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 15:22:10 ] 自治厨うざい、>>133 は気にせずソース貼れ
187 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 15:24:40 ] つーか、他人のいうこと聞かないんだったら最初から貼ればいいのにね。
188 名前:デフォルトの名無しさん [2005/06/16(木) 15:27:17 ] >>185 馬鹿かおまえは もう自分で解決できるだろ うせろよ
189 名前:133 [2005/06/16(木) 15:28:01 ] 優しいお言葉ありがとうございます。それでは貼らせていただきます。 お願いします。見た感じ一覧が取得できそうだったのですが、サブフォルダ配下 のファイル列挙が行われていなさそうなのです。 2レスにわけます。 #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <stdlib.h> #include <ftw.h> #include <time.h> #include <dirent.h> int fn (const char *, const struct stat *, int); void main (int argc, char *argv[] ){ if (ftw (argv[1], fn, 10) != 0) perror ("ftw"); exit (2); exit (0); }
190 名前:133 [2005/06/16(木) 15:29:10 ] int fn (const char *name, const struct stat *statptr, int flag){ int i; char *basename; DIR *dp;/*DIRの定義*/ struct dirent *dir;/*DIRの構造体*/ struct stat buf;/*ファイル情報の構造体*/ int result;/*処理の結果戻り値*/ if (flag == FTW_D){/*ディレクトリの場合は配下の情報取得を行う*/ if ( (dp=opendir(name)) == NULL ) /*DIRを開く*/ perror( "指定されたディレクトリが存在しません。" ); while ((dir = readdir(dp)) != NULL ){/* カレントディレクトリのファイル一覧を取得 */ result = stat(dir->d_name, &buf ); if( result != 0 )/* ファイル状態情報が取得できたかのチェック */ perror( "ファイルの情報の取得に失敗しました。" ); else{ printf( "file : %s\n", dir->d_name ); printf( "size : %ld\n", buf.st_size ); printf( "Date : %s", ctime( &buf.st_mtime ) ); } } return 0; } return 0; } つっこみどころ満載だと予見しておりますが、必死に頑張りましたので 御教授お願いいたします。
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によって違うしね