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. linux的NetworkManager服务(转)

    在开启NetworkManager服务的情况下,在终端下敲“service network restart”命令: 正在关闭接口 eth0: 设备状态:3 (断开连接) [确定] 正在关闭接口 eth ...

  2. xcode 5与ios 7的屏幕适配问题

    #define DEVICE_IS_IPHONE5 ([[UIScreen mainScreen] bounds].size.height == 568) float height = DEVICE_ ...

  3. entity framework如何控制并发

     entity framework如何控制并发 针对字段http://msdn.microsoft.com/en-us/library/vstudio/bb738618(v=vs.100).aspx ...

  4. 代码管理git总结

    1. http://blog.csdn.net/teresa502/article/details/7388834 pwd 当前工作目录 cd(不加参数) 进root cd(folder) 进入文件夹 ...

  5. linux下自动同步internet时间

    linux下很简单直接一句即可: ntpdate time.nist.gov ntp后面参数为internet时间服务器url或ip即可. 但是ntpdate命令需要root特权,如果做成自动运行每次 ...

  6. mahout源码分析之Decision Forest 三部曲之二BuildForest(1)

    Mahout版本:0.7,hadoop版本:1.0.4,jdk:1.7.0_25 64bit. BuildForest是在mahout-examples-0.7-job.jar包的org\apache ...

  7. sqlserver数据库三范式的理解

    从来都是听过概念,过一段时间就忘记了,根本就没有深入的理解.这次梳理一遍,用自己的方式记录一下. 1nf 原子性,不可拆分性 例如一张表里包含一个class属性(软件系,外语系,经贸系...)字段,这 ...

  8. ASP.NET怎么防止多次点击提交按钮重复提交

    今天做一个系统,由于服务器有点慢,所以常会被点击两次或三次,提交的数据就是多次了.所以要让按钮点击后,不能再次点击. 对于一个按钮,要让变成恢色的,只要this.disabled=true就可以了,可 ...

  9. Unity3D Object.DontDestroyOnLoad 备忘

    初学Untiy3D,记录备忘. public static void DontDestroyOnLoad(Object target); Makes the object target not be ...

  10. GridView专栏

    鉴于GridView的强大,鄙人突然心血来潮,想把GridView单独拿出来整理一下. (一)gridview如何加自增长列 protected void GridView1_RowDataBound ...