MAC COCOA call command 调用终端控制台程序
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 调用终端控制台程序的更多相关文章
- Mac/Windows开发跨平台.NET Core 控制台程序
自从微软开始在Github上开源搞.NET Core后,.NET的跨平台逐渐就成真了.多年使用各种语言,说实话还是csharp用起来最舒服.不过现在的工作环境里使用它的机会比较少,大部分时候只是用来写 ...
- Mac OS X上用CoreCLR运行一个真正的.NET控制台程序
这个真正的控制台程序来自corefxlab,名叫CoreClrHelloWorld,是一个跨平台的.NET控制台演示程序,可以显示微软.Linux.苹果的logo. CoreClrHelloWorld ...
- C#:控制台程序调用中间库创建窗体
1.类库项目引用System.Windows.Forms并添加引用后,才可创建窗体. 2.控制台应用程序调用中间库(DLL)中的方法创建窗体:中间类库使用反射下的Assembly加载包含窗体的类库及创 ...
- 『片段』ShellHelper 控制台程序 的 程序调用(支持输入命令得到返回字符串输出)
背景: > 之前做 OGG 时,被 OGG的配置 恶心到了.(OGG是啥,这里就不解释了) > 总之就是一个 控制台程序,总是得手动执行一堆命令,每次都得输入 —— 实在是打字打累了. & ...
- mac 发布.net Core2.0 控制台程序
安装.net core2.0 环境,略 新建文件夹 TestA, 存放项目 TestA 在 TestA 文件夹下,创建控制台程序: dotnet new console(会自动生成 TestA.csp ...
- Ubuntu16.04使用sublime text3编写C语言后,实现编译并自动调用bash终端运行程序
实现编译并自动调用bash运行程序只需要新建自己的.build文件就OK 依次打开: tools->building system->new building system 后,把下面的内 ...
- svc6 控制台程序利用SoapToolkit3.0调用WebService
1. 首先要安装SoapToolkit3.0安装包并安装(我的安装目录为:C:\Program Files\Common Files) 2. 新建vc控制台程序(空项目),项目名称:WinConsol ...
- 在Mac下运行ASP.NET Core应用程序
在Mac下运行ASP.NET Core应用程序 通过参照.NET Core相关官方文档,在我的Mac电脑上用Visual Studio Code创建了我的第一个ASP.NET应用. 开发环境搭建 首先 ...
- Mac下运行ASP.NET Core应用程序
Mac下运行ASP.NET Core应用程序 在Mac下运行ASP.NET Core应用程序 通过参照.NET Core相关官方文档,在我的Mac电脑上用Visual Studio Code创建了我的 ...
随机推荐
- 定时PING下IP地址,检测该服务器是否还活着。 smokeping
http://oss.oetiker.ch/smokeping-demo/?displaymode=n;start=2014-10-16%2007:00;end=now;target=SIP
- C++中的动态类型与动态绑定、虚函数、运行时多态的实现
动态类型与静态类型 静态类型 是指不需要考虑表达式的执行期语义,仅分析程序文本而决定的表达式类型.静态类型仅依赖于包含表达式的程序文本的形式,而在程序运行时不会改变.通俗的讲,就是上下文无关,在编译时 ...
- Oracle临时表on commit preserver rows和on commit delete rows区别
Oracle 临时表:在 Oracle 中创建一张表,这个表不用于其他的什么功能,主要用于自己的软件系统一些特有功能才用的,而当你用完之后表中的数据就没用了. Oracle 的临时表创建之后基本不占用 ...
- 【最大流,二分图匹配】【hdu2063】【过山车】
题意:裸的求二分图匹配 建立一个源点 连向一边所有的点 容量为1; 另外一边点都连向汇点 容量为1; 二分图的边容量也为1 源点汇点求一遍最大流即可 #include <cstdio> ...
- asp.net linq查询环境搭建
本文是以sqlserver2008为数据库,vs2013为开发工具来介绍的. 要搭建这样一个数据库的操作环境,首先建立一个类库项目 然后在这个类库项目中添加几个类:DBDataContext数据库上下 ...
- IBM WebSphere MQ的C#工具类以及源码(net)
简单的介绍一下MQ常用的对象 Queue Manager 队列管理器 主要负责管理队列.通道等,类似与Oracle中的Oracle实例的概念,在一台服务器中可以定义多个Queue Manager. Q ...
- Oracle 启用块跟踪
Oracle 启用块跟踪,语法示例如下: alter database enable block change tracking using file '/u01/app/oracle/oradata ...
- C#修改 Excel指定单元格的值
/// <summary> /// 将指定字符串写入指定单元格中 /// </summary> /// <param name="data">要 ...
- (转)python struct简介
最近在学习python网络编程这一块,在写简单的socket通信代码时,遇到了struct这个模块的使用,当时不太清楚这到底有和作用,后来查阅了相关资料大概了解了,在这里做一下简单的总结. 了解c语言 ...
- poj3292-类素数筛选法
#include<iostream>using namespace std;const int N=1000002;int array[N]={0};int main(){ int n; ...