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] ---

}


MAC COCOA call command 调用终端控制台程序的更多相关文章

  1. Mac/Windows开发跨平台.NET Core 控制台程序

    自从微软开始在Github上开源搞.NET Core后,.NET的跨平台逐渐就成真了.多年使用各种语言,说实话还是csharp用起来最舒服.不过现在的工作环境里使用它的机会比较少,大部分时候只是用来写 ...

  2. Mac OS X上用CoreCLR运行一个真正的.NET控制台程序

    这个真正的控制台程序来自corefxlab,名叫CoreClrHelloWorld,是一个跨平台的.NET控制台演示程序,可以显示微软.Linux.苹果的logo. CoreClrHelloWorld ...

  3. C#:控制台程序调用中间库创建窗体

    1.类库项目引用System.Windows.Forms并添加引用后,才可创建窗体. 2.控制台应用程序调用中间库(DLL)中的方法创建窗体:中间类库使用反射下的Assembly加载包含窗体的类库及创 ...

  4. 『片段』ShellHelper 控制台程序 的 程序调用(支持输入命令得到返回字符串输出)

    背景: > 之前做 OGG 时,被 OGG的配置 恶心到了.(OGG是啥,这里就不解释了) > 总之就是一个 控制台程序,总是得手动执行一堆命令,每次都得输入 —— 实在是打字打累了. & ...

  5. mac 发布.net Core2.0 控制台程序

    安装.net core2.0 环境,略 新建文件夹 TestA, 存放项目 TestA 在 TestA 文件夹下,创建控制台程序: dotnet new console(会自动生成 TestA.csp ...

  6. Ubuntu16.04使用sublime text3编写C语言后,实现编译并自动调用bash终端运行程序

    实现编译并自动调用bash运行程序只需要新建自己的.build文件就OK 依次打开: tools->building system->new building system 后,把下面的内 ...

  7. svc6 控制台程序利用SoapToolkit3.0调用WebService

    1. 首先要安装SoapToolkit3.0安装包并安装(我的安装目录为:C:\Program Files\Common Files) 2. 新建vc控制台程序(空项目),项目名称:WinConsol ...

  8. 在Mac下运行ASP.NET Core应用程序

    在Mac下运行ASP.NET Core应用程序 通过参照.NET Core相关官方文档,在我的Mac电脑上用Visual Studio Code创建了我的第一个ASP.NET应用. 开发环境搭建 首先 ...

  9. Mac下运行ASP.NET Core应用程序

    Mac下运行ASP.NET Core应用程序 在Mac下运行ASP.NET Core应用程序 通过参照.NET Core相关官方文档,在我的Mac电脑上用Visual Studio Code创建了我的 ...

随机推荐

  1. spark快速入门之最简配置 spark 1.5.2 hadoop 2.7 配置

    配置的伪分布式,ubuntu14.04上 先配置hadoop,参见这个博客,讲的很好 http://www.powerxing.com/install-hadoop/, 但是我在配的过程中还是遇到了问 ...

  2. 【LeetCode练习题】Climbing Stairs

    Climbing Stairs You are climbing a stair case. It takes n steps to reach to the top. Each time you c ...

  3. 【LeetCode练习题】Minimum Window Substring

    找出包含子串的最小窗口 Given a string S and a string T, find the minimum window in S which will contain all the ...

  4. js LocalStorage

    此对象主要有两个方法:保存数据:localStorage.setItem(Key, value);读取数据:localStorage.getItem(Key);Key:表示你要存入的键名称,此名称可以 ...

  5. ping网络故障

    网络的应用已渐渐深入我们的工作和生活,它带给了我们各方面的便利.因此,这种种的便利致使很多人对网络产生依赖性.那么,当电脑不能上网时,我们如何才能准确地判断电脑问题出在哪里?又如何能快捷地解决这故障? ...

  6. caffe源代码分析--data_layer.cpp

    dataLayer作为整个网络的输入层, 数据从leveldb中取. leveldb的数据是通过图片转换过来的. 网络建立的时候. datalayer主要是负责设置一些參数,比方batchsize.c ...

  7. .NET系统架构改造的经验和教训

    转自: http://robbinfan.com/blog/43/rid-off-dotnet-experience 在互联网行业,基于Unix/Linux的网站系统架构毫无疑问是当今主流的架构解决方 ...

  8. cassandra + lucene集成

    Stratio’s Cassandra Lucene Index Stratio’s Cassandra Lucene Index, derived from Stratio Cassandra, i ...

  9. C语言strcmp()函数:比较字符串(区分大小写)

    头文件:#include <string.h> strcmp() 用来比较字符串(区分大小写),其原型为: int strcmp(const char *s1, const char *s ...

  10. IntPtr问题

    public aaa(IntPtr myPtr,int left, int top, int width, short height) 这里myPtr应该是对应到一块内存,你需要查看aaa函数是如何把 ...