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中点击按钮打开一个网页] +++

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

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

// [以下两行可以在MAC APP中点击按钮打开一个网页] ---

// Launch Apple Mail [test OK!]

[[NSWorkspace
sharedWorkspace]
openURL:[NSURL
URLWithString:@"mailto://[email protected]"]];

或者:

- (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 调用终端控制台程序

时间: 2024-10-13 05:38:03

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

MAC COCOA一个简单的多线程程序

功能: 实现多线程:2个线程同时工作,一个用时间计数器,一个用来打印信息 STEP1 XCODE ->New Application ->Cocoa中的Command Line 自动增加: #include <CoreFoundation/CoreFoundation.h> STEP2 // // main.c // test_runloop1 // // Created by DMD on 20/6/14. // Copyright (c) 2014 EDU. All right

MAC COCOA一个简单的多线程程序[2]

MAC COCOA一个简单的多线程程序[2] 使用RUNLOOP计数,实现一个时间计数器和事件at the same time 运行. STEP 1 H CODE: // // EDUAppDelegate.h // test_runloop_multithread // // Created by DMD on 23/6/14. // Copyright (c) 2014 EDU. All rights reserved. // #import <Cocoa/Cocoa.h> @interf

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

1. 首先要安装SoapToolkit3.0安装包并安装(我的安装目录为:D:\Program Files\MSSOAP\) 2. 新建vc控制台程序(空项目),项目名称:WinConsole6InvokeWebService,添加一个c++源文件(main.cpp),将SOAP安装目录下的lib文件D:\Program Files\MSSOAP\Lib\mssoap30.lib复制到项目文件夹下. 3.添加源代码: #include <stdio.h> #include <iostre

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

这个真正的控制台程序来自corefxlab,名叫CoreClrHelloWorld,是一个跨平台的.NET控制台演示程序,可以显示微软.Linux.苹果的logo. CoreClrHelloWorld代码如下(代码中省略了拼接logo的字符串,完整代码见这里): using System; internal class Program { private static void Main(string[] args) { if (args.Length == 1 && args[0] ==

调用控制台程序的方法以及注意事项

我们常常用遇到调用第三方库,但是该库文件没有做好内存管理,会发生内存泄露的情况. 这个时候我们可以在控制台中调用该库,然后在代码中调用控制台程序,以此控制台的来管理内存. public class ConsoleMethod { private static int _time = 10 * 60 * 1000; public static string InvokeConsole(string parameter, string programName, string programAddre

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

1. 首先要安装SoapToolkit3.0安装包并安装(我的安装目录为:C:\Program Files\Common Files) 2. 新建vc控制台程序(空项目),项目名称:WinConsole6InvokeWebService,添加一个c++源文件(main.cpp) 3.main.cpp源代码 #include <stdio.h> #include <iostream> #include <vector>   #import "msxml4.dll

Mac OS X下的终端基本命令

Mac OS X 启用超级用户的方法 Root user,又名超级用户,是一个权力最高的Unix 账户,Root 的账户能在整个系统里任何部份进行任何"操作",包括:拷贝档案.移动/移除档案.执行程序等.所以,通常 Root 的账户都只会指派给高级专业的用户使用.因此,苹果把Root user 隐藏在MacOS X 里.但有时候我们不得不启用Root用户以便于实现某些操作,可以通过以下三种方法把启动Root账户.方法一:把Mac OS X 的安装光盘放入到光驱中,用光盘启动系统,在安装

Mac OS X Terminal:终端使用初级教程

最近学习苹果认证的<Mac OS X Support Essentials>教程,看到 Command Line 一节有很多实用的知识,下面选取一部分翻译 + 笔记,整理成此文. 你可以整天驾驶汽车而不用知道如何修理它们,但是如果你希望当一个维护员,你就需要知道事情是如何运作的.同样的事情也发生在了 Mac OS X 上:你可以一直使用 Mac 而不用知道如何修理它,但是如果你想对系统做一些维护或解决一些问题,那么你需要知道如何使用 command-line. 为什么要使用命令行/如何开启命令

ios/mac/COCOA系列 -- UIALertVIew 学习笔记

最近在学习ios开发,学习的书籍<ios7 Pragramming cookbook>,做笔记的目的以后方便查看.笔记形式是小例子,将书上的例子书写完整. UIAlertViewClass 的使用场景 1,向用户以一个警告的形式显示信息. 2,让用户确认一些动作 3,让用户输入用户名和密码 4,让用户输入一些文本,这些文本在程序被使用 例1   实现简单显示一些警告信息 新建一个 Single View Application 简单工程,工程名字维AlterView,扩展前缀CB   代码如下