c++ - 将终端的输入/输出重定向到 iOS JB 中的 gui

标签 c++ ios objective-c user-interface compiler-construction

我正在编写一个 GUI C/C++ 编辑器,它还可以使用 Cydia 附带的 GNU 编译器为 iOS 平台编译源文件。

这将是一个 Cydia 应用程序,所以一切都应该能正常工作。

要编译文件,我需要运行终端命令行,并且我正在考虑使用函数“system()”,因为我想不出其他任何东西。

我现在正在寻找一种方法,以某种方式将终端的输出和输入重定向到 GUI,但我真的不知道从哪里开始。

我读到我也许可以使用管道来做到这一点,但它并不能真正满足我的需要,因为我需要来自终端的“实时”输入和输出,而不是 .txt 仅包含终端输出的文件...

希望有人能帮助我。

最佳答案

当然。使用 popen()。像这样:

const char *cmd = [NSString stringWithFormat:@"gcc -o %1$@.o %1$@.c", sourceFileName].UTF8String;

FILE *p = popen(cmd, "r");
size_t sz;
char buf[1024];

while ((sz = fread(buf, sizeof(buf), 1, p) != 0) {
    NSString *s = [[NSString alloc] initWithBytes:buf length:sz encoding:NSUTF8StringEncoding];
    textView.text = [textView.text stringByAppendingString:s];
    [s release];
}

pclose(p);

关于c++ - 将终端的输入/输出重定向到 iOS JB 中的 gui,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14792256/

相关文章:

ios - 自定义表格单元委托(delegate)

c++ - typedef'ing 函数 *signature* (不是指向的指针),以便它可以被重用?

c++ - 检测窗口何时与来自相同或不同进程的另一个窗口重叠

c++ - 为什么结构和类定义可以在多个翻译单元上重复?

ios - 如何让Xcode中的 “Use for Development"按钮再次出现?

ios - 无法转换 UTC 时间

objective-c - 如何以任意顺序比较两个 NSArrays 的相同内容?

c++ - 使用未声明的标识符 'sample'

objective-c - Swift beta 5 中的 bridgeToObjectiveC 和 makeObjectsPerformSelector

ios - 为什么 SecItemAdd 返回 -50(无效参数)