MAC COCOA call command 调用终端控制台程序

时间:2021-12-02 04:21:16

MAC COCOA call command 调用终端控制台程序

STEP 1

先写一个C++ DOS程序

STEP2

使用NSTask来运行,然后用NSPipe
NSData来接受运行的结果字符串。

先写一个函数:

/*******************************
Function : NSTask Class + Terminal(=Windows Command) of MAC OS X
Description :
$ ./test_was_call_command_app -sum 2 8 5
*******************************/
NSString* test_sum(int a,int b,int c)
{
NSString *path = @"/Users/test_was_call_command_app/debug/test_was_call_command_app";
NSTask *task = [[NSTask alloc] init];
task.launchPath = path;
NSMutableArray *arguments = [[NSMutableArray alloc] init];
[arguments addObject:@"-sum"];
NSString *var;
var =[ NSString stringWithFormat:@"%i",a ];
[arguments addObject:var];
var =[ NSString stringWithFormat:@"%i",b];
[arguments addObject:var];
var =[ NSString stringWithFormat:@"%i",c ];
[arguments addObject:var];
task.arguments = arguments;
//启动前,添加输出设置+++
NSPipe *pipe;
pipe = [NSPipe pipe];
[task setStandardOutput: pipe];
NSFileHandle *file;
file = [pipe fileHandleForReading];
// --- [task launch];
[task waitUntilExit];
//运行结束后,得到运行的结果字符串++++++
NSData *data;
data = [file readDataToEndOfFile]; NSString *result_str;
result_str = [[NSString alloc] initWithData: data
encoding: NSUTF8StringEncoding];
//---------------------------------
return result_str;
}

然后在MAIN函数里面调用

int main(int argc,
const char * argv[])

{

@autoreleasepool

{

NSString *rs=test_sum(7,2,20);

int rs_int= [rs intValue];

NSString *show =[NSString
stringWithFormat:@"sum : %i",rs_int ];

CFShow(show);

STEP3

測试。成功!

补充:

// [下面两行能够在MAC APP中点击button打开一个网页] +++

NSURL *web_url = [NSURL
URLWithString:@"http://www.hao123.com/"];

[[NSWorkspace
sharedWorkspace] openURL:web_url];//TEST OK!

// [下面两行能够在MAC APP中点击button打开一个网页] ---

// Launch Apple Mail [test OK!]

[[NSWorkspace
sharedWorkspace]
openURL:[NSURL
URLWithString:@"mailto://info@iphonedevelopertips.com"]];


或者:

- (IBAction)OnClick_BT_OpenURLBySearch:(id)sender

{

//打开网页的另外一种方法,传递一个var [begin] +++

NSString* searchQuery =
@"apple";

// Be careful to always URL encode things like spaces and other symbols that aren't URL friendly

searchQuery =  [searchQuery stringByAddingPercentEscapesUsingEncoding:
NSUTF8StringEncoding];

// Now create the URL string ...

NSString* urlString = [NSString
stringWithFormat:@"http://www.baidu.com/s?wd=%@", searchQuery];

// An the final magic ... openURL!

[[NSWorkspace
sharedWorkspace] openURL:[NSURL
URLWithString:urlString]];

//打开网页的另外一种方法。传递一个var [begin] ---

}