ããã¹ããã¡ã€ã«ã®è¡æ°ãç¥ãæ¹æ³ãšããŠãã³ãã³ãã©ã€ã³äžã§"wc -l < fileName"ãåšããŸãã
äžã®ã³ãŒãã¯ã"wc -l fileName"ãå®è¡ããäºãåºæ¥ãŸãããã®çµæã¯ã
è¡æ°ãfileName
ãšã衚瀺ãããŸããfileNameã衚瀺ãããã®ã¯éªéãªã®ã§ãè¡æ°ã ãè¡šç€ºåºæ¥ãŸãããïŒ
"wc -l < fileName"ãšå®è¡ãããšãè¡æ°ã®ã¿ã®è¡šç€ºãšãªããŸãã
ã³ãã³ãã©ã€ã³ã®ãïŒãã«è©²åœããã¡ãœãããèŠåœãããªãã®ã§ãäœããã³ããé ããªãã§ããããïŒ
å ã¿ã«ãsetStandardInput:ã䜿ãã°ãæšæºå
¥åãšãªãã®ã§äœ¿ããã®ããªãïŒãšæããŸããããé§ç®ã§ããã
@implementation unix
-(int)toalLinesAtFile:(NSString *)isPath
{
NSTask *aTask = [NSTask new]; // ã¿ã¹ã¯ãäœæ
NSPipe *pipe = [NSPipe pipe]; // ã¿ã¹ã¯ãšéä¿¡çšãã€ããäœæ
[aTask setStandardInput:isPath]; // âãããã®äœ¿ãæ¹ããééã£ãŠããïŒ
[aTask setLaunchPath: @"/usr/bin/wc"]; // ã³ãã³ãã®ãã¹ã»ãã (wc)
[aTask setArguments: [NSArray arrayWithObject: @"-l"]]; // åŒæ°ã»ãã
// [aTask setArguments: [NSArray arrayWithObjects: @"-l", isPath,
nil]]; // åŒæ°ã»ãã
[aTask setStandardOutput: pipe]; // æšæºåºåããã€ãã«ã»ãã
[aTask launch]; // èµ·å
[aTask waitUntilExit]; // çµäºãŸã§åŸ
ã€
NSFileHandle *aFile = [pipe fileHandleForReading]; // ãã€ãèªã¿åºããã¡ã€ã«ãã³ãã«
NSData *aData = [aFile readDataToEndOfFile]; // ããŒã¿ãå
šéšèªã
NSString *aString = [NSString stringWithUTF8String: [aData bytes]];
[aTask release];
NSLog(@"%@", aString);
return 0;
}
@end
以äžããããããé¡ãããŸãã
èªå·±è§£æ±ºããŸããããéšããããŸããã
çµå±ãNSTaskã§ã®èšè¿°ã諊ããããã¹ããïŒè¡ãã€èªãŸããæ¹ãã³ãŒãã£ã³ã°ã¯å°ãªãæžã¿ãŸããã
ãããªæã
{
NSString *fileContent= [NSString stringWithContentsOfFile:isPath];
NSArray *lines= [fileContent componentsSeparatedByString:@"\n"];
NSLog(@"file lines = %d", [lines count]);
return [lines count];
}
以äžããããããšãããããŸããã
2008/07/27 23:50 å è€æ¬ <tao....@gmail.com>:
# ãããç¹å®ã®äººçšã®MLããšæãããç¶æ³ã§ãã
2008/07/30 7:32 å è€æ¬ <tao....@gmail.com>:
> çµå±ãNSTaskã§ã®èšè¿°ã諊ããããã¹ããïŒè¡ãã€èªãŸããæ¹ãã³ãŒãã£ã³ã°ã¯å°ãªãæžã¿ãŸããã
> ãããªæã
> {
> NSString *fileContent= [NSString stringWithContentsOfFile:isPath];
> NSArray *lines= [fileContent componentsSeparatedByString:@"\n"];
>
> NSLog(@"file lines = %d", [lines count]);
> return [lines count];
> }
å®éã®äœ¿çšã«ãããŠããã§åé¡ããªããªãå¥ã«æ§ããŸããããäžè¬çã«ã¯
- [NSString stringWithContentsOfFile:] ã倱æããå¯èœæ§ïŒãšã³ã³ãŒãã£ã³ã°å€å®çïŒ
- ãã¡ã€ã«ã®å
šãŠã®å
容ãäžæ°ã«NSStringã«èªã¿èŸŒãããšã«ããç¡é§
- æ¹è¡ãNL以å€ã®å¯èœæ§
ãšããèæ
®ããæ¹ãããã§ããããã
ããªããã
> # ãããç¹å®ã®äººçšã®MLããšæãããç¶æ³ã§ãã
ãã¿ãŸããã
説æäžè¶³ã§ããã
以åŸãæ°ãä»ããŸãã
> å®éã®äœ¿çšã«ãããŠããã§åé¡ããªããªãå¥ã«æ§ããŸããããäžè¬çã«ã¯
> - [NSString stringWithContentsOfFile:] ã倱æããå¯èœæ§ïŒãšã³ã³ãŒãã£ã³ã°å€å®çïŒ
> - ãã¡ã€ã«ã®å
šãŠã®å
容ãäžæ°ã«NSStringã«èªã¿èŸŒãããšã«ããç¡é§
> - æ¹è¡ãNL以å€ã®å¯èœæ§
> ãšããèæ
®ããæ¹ãããã§ããããã
貎éãªãæèŠãããããšãããããŸãã
ããã®äœ¿çšç®çã¯ãããã°ã¬ã¹ããŒãªã©ã«ãã¡ã€ã«ã®ïŒïŒ¡ïŒžè¡æ°å€ãå
¥ããããã®ãã®ã§ãã
ãã¡ã€ã«ãèªã¿èŸŒãåŠã«å
¥ã蟌ãã§ãããã°è¯ãããªããšãæã£ãŠããŸãã
æ¹è¡ã³ãŒãããšã³ã³ãŒãã£ã³ã°å€å®çã«ã€ããŠã¯ãæ€èšïŒèª¿æ»ããŸãã
以äžã
2008/07/31 3:05 Yanagisawa <yana...@gmail.com>:
On Sun, 27 Jul 2008 23:50:51 +0900, å è€æ¬ wrote:
>
> æ¯åºŠã埡äžè©±ã«ãªã£ãŠãããŸããå è€æ¬ã§ãã
>
> ããã¹ããã¡ã€ã«ã®è¡æ°ãç¥ãæ¹æ³ãšããŠãã³ãã³ãã©ã€ã³äžã§"wc -l <
> fileName"ãåšããŸãã
> äžã®ã³ãŒãã¯ã"wc -l fileName"ãå®è¡ããäºãåºæ¥ãŸãããã®çµæã¯ã
> è¡æ°ãfileName
>
> ã³ãã³ãã©ã€ã³ã®ãïŒãã«è©²åœããã¡ãœãããèŠåœãããªãã®ã§ãäœããã³ã
> ãé ããªãã§ããããïŒ
> å ã¿ã«ãsetStandardInput:ã䜿ãã°ãæšæºå
¥åãšãªãã®ã§äœ¿ããã®ããªãïŒ
> ãšæããŸããããé§ç®ã§ããã
>
>
>
> @implementation unix
>
> -(int)toalLinesAtFile:(NSString *)isPath
> {
> NSTask *aTask = [NSTask new]; // ã¿ã¹ã¯ãäœæ
> NSPipe *pipe = [NSPipe pipe]; // ã¿ã¹ã¯ãšéä¿¡çšãã€ããäœæ
>
> [aTask setStandardInput:isPath]; // âãããã®äœ¿ãæ¹ããééã£ãŠããïŒ
ãªãã¡ã¬ã³ã¹ã«ããããã«ãsetStandardInput:ã«æž¡ããã®ã¯
NSFileHandleãŸãã¯NSPipeã®ã€ã³ã¹ã¿ã³ã¹ã§ããNSStringã¯æž¡ããŸããã
ãã®å Žåã ãš[NSFileHandle fileHandleForReadingAtPath:isPath]ãšããŠ
çæãããªããžã§ã¯ããæž¡ãã°æåŸ
ããåäœã«ãªããšæããŸãã
ãŸããã·ã§ã«ç°å¢ãšåæ§ã®åäœããããããšãã«ã¯å®è¡ã³ãã³ãã
-cãªãã·ã§ã³ãã€ããã·ã§ã«ã«ããŠãã³ãã³ãå
¥åãåŒæ°ã®æååãšããŠ
æž¡ãæ¹æ³ãä»ã®èšèªã§ããã䜿ãããŠãããšæããŸãã
[aTask setLaunchPath:@"/bin/sh"];
command = [NSString stringWithFormat:@"wc -l < \"%@\"", isPath];
[aTask setArguments:[NSArray arrayWithObjects:@"-c", command, nil]];
--
kimura wataru
å è€æ¬ã§ãã
> ãã®å Žåã ãš[NSFileHandle fileHandleForReadingAtPath:isPath]ãšããŠ
> çæãããªããžã§ã¯ããæž¡ãã°æåŸ
ããåäœã«ãªããšæããŸãã
æãçšãfileHandleForReadingAtPath:ãã䜿ãããšã¯ç¥ããªãã£ããåèã«ãããŠé ããŸãã
setStandardInput:ãã«ä»ããŠã¯ãç§ãªãã«èª¿ã¹ãŸãããããææã®ããã«
NSFileHandleãŸãã¯NSPipeã§ãªããšæž¡ããªãããã§ãã
cat isPath | wc -l ã®æ§ã«å®çŸããããšãããšããœãŒã¹ã³ãŒããç
©éã«ãªã£ãŠããŸãã®ãš
cat ããã®åºåãå·§ã wc ãžãšæž¡ããªãã£ããã§ãæå¿µããŸããã
> ãŸããã·ã§ã«ç°å¢ãšåæ§ã®åäœããããããšãã«ã¯å®è¡ã³ãã³ãã
> -cãªãã·ã§ã³ãã€ããã·ã§ã«ã«ããŠãã³ãã³ãå
¥åãåŒæ°ã®æååãšããŠ
> æž¡ãæ¹æ³ãä»ã®èšèªã§ããã䜿ãããŠãããšæããŸãã
>
> [aTask setLaunchPath:@"/bin/sh"];
> command = [NSString stringWithFormat:@"wc -l < \"%@\"", isPath];
> [aTask setArguments:[NSArray arrayWithObjects:@"-c", command, nil]];
ãããåºæ¥ãã®ãªããè²ã ãšå¿çšãå©ãã®ã§ãæ¯éãå®éšããŠã¿ãããšæããŸãã
貎éãªãæèŠãèª ã«æãé£ãããããŸãã
æ¯åºŠã埡äžè©±ã«ãªã£ãŠãããŸããå è€æ¬ã§ãã
æšæ(ã)æ§ã«æããŠããã ãããµã³ãã«ã³ãŒããå®éšããŠãããŸããã
[aTask waitUntilExit];
ãå®è¡åŸã«ãNSLogãprintfãæžããŠããããã°ã¿ãŒããã«ã«ã¯äœã衚瀺ãããªã
ãšèšãäžå¯è§£ãªçŸè±¡ã«æ©ãŸãããŠãããŸãã
åäœæ¡ä»¶ã¯ãXCode3.1ãPPC = G4ãGC = ON ã§ãã
ã©ãªããè§£æ±ºæ¹æ³ããåç¥ãªããæããŠããã ããªãã§ããããïŒ
ãœãŒã¹ã³ãŒãã¯ã以äžã®éã
ïŒïŒïŒïŒïŒïŒïŒïŒïŒïŒïŒïŒïŒïŒïŒïŒïŒïŒïŒïŒïŒïŒïŒïŒïŒïŒïŒïŒïŒ
//
// unix.h
#import <Foundation/Foundation.h>
@interface unix : NSObject {
}
-(int)toalLinesAtShellCommand:(NSString *)isPath;
@end
ïŒïŒïŒïŒïŒïŒïŒïŒïŒïŒïŒïŒïŒïŒïŒïŒïŒïŒïŒïŒïŒïŒïŒïŒïŒïŒïŒïŒïŒ
//
// unix.m
#import "unix.h"
@implementation unix
-(int)toalLinesAtShellCommand:(NSString *)isPath
{
NSTask *aTask = [NSTask new]; // ã¿ã¹ã¯ãäœæ
NSPipe *pipe = [NSPipe pipe]; // ã¿ã¹ã¯ãšéä¿¡çšãã€ããäœæ
NSString *command;
int returnData;
NSLog(@"TEST1"); // ããã¯ã衚瀺ããã
[aTask setLaunchPath:@"/bin/sh"];
command = [NSString stringWithFormat:@"wc -l < \"%@\"", isPath];
[aTask setArguments:[NSArray arrayWithObjects:@"-c", command, nil]];
[aTask setStandardOutput: pipe]; // æšæºåºåããã€ãã«ã»ãã
[aTask setStandardError : pError]; //ãšã©ãŒåºåå
[aTask launch]; // èµ·å
[aTask waitUntilExit]; // çµäºãŸã§åŸ
ã€
[aTask release];
NSLog(@"TEST2"); // ãããã衚瀺ãããªã
// ãã€ãèªã¿åºããã¡ã€ã«ãã³ãã«
NSFileHandle *aFile = [pipe fileHandleForReading];
NSData *aData = [aFile readDataToEndOfFile]; // ããŒã¿ãå šéšèªã
//äžæŠãæååã«çœ®ãæããŠããæ°å€å€ãååŸããã
NSString *aString = [NSString stringWithUTF8String: [aData bytes]];
NSLog(@"aString = %@", aString); // 衚瀺ãããªã
returnData = [aString intValue];
NSLog(@"returnData = %u", returnData); // 衚瀺ãããªã
return returnData;
}
@end
ïŒïŒïŒïŒïŒïŒïŒïŒïŒïŒïŒïŒïŒïŒïŒïŒïŒïŒïŒïŒïŒïŒïŒïŒïŒïŒïŒïŒïŒ
#import <Foundation/Foundation.h>
#import "unix.h"
int main (int argc, const char * argv[]) {
int ret;
id obj = [[unix alloc] init];
NSString *aFaile = @"hoge.txt";
ret = [obj toalLinesAtShellCommand:aFaile];
NSLog(@"toalLinesAtShellCommand [%d]", ret); // ãããã衚瀺ãããªã
return 0;
}
以äžããããããé¡ãããŸãã
æ¯åºŠã埡äžè©±ã«ãªã£ãŠãããŸããå è€æ¬ã§ãã
ãäžèšã®å
容ã§åãåããããããŠé ããŠãããŸããã
çŸæç¹ã§å€ã£ãŠããããšãæžãçããŠãããŸãã
1. [aTask waitUntilExit]; // çµäºãŸã§åŸ
ã€
ãããã以éã§ã¯ããããã¬ã³ã³ãœãŒã«äžã«ã¯NSLogãªã©ã®è¡šç€ºã¯ããªãã
2.ã¿ãŒããã«ã¢ããªäžã§ãäžèšã®ãœãŒã¹ããªãªãŒã¹ã¢ãŒãã«ããŠå®è¡ãããšãNSLogãªã©ã®è¡šç€ºã¯ããã
ããããã®ããšãããXCode3.1äºæ
ã®èšå®äžåã®ããã«ãæããŸããããããäžäœã©ã®ãããªå¯ŸåŠããããããã®ãå€ããŸããã
ã以äžããå ±åãŸã§ã
2008/08/12 8:11 å è€æ¬ <tao....@gmail.com>:
å è€ã§ãã
æ€èšŒãããŠããã ããæé£ãããããŸãã
ç§ã®ã³ãŒãã£ã³ã°ãã¹ã§ã¯ããªãããïŒã§ãããXcodeã®ãã¯ãšãªããšå°ã£ã¡ããŸãããã
/ã¢ããªã±ãŒã·ã§ã³/ãŠãŒãã£ãªãã£/ã³ã³ãœãŒã«ãã®æ¹æ³ã§ããã°ããæ§åãèŠãããšã«ããŸãã
2008/08/20 1:40 wang <kuroki_...@hotmail.com>:
ããªããã
2008/08/19 18:24 å è€æ¬ <tao....@gmail.com>: