如何从C ++代码与命令行程序进行交互

时间:2018-12-02 03:48:07

标签: c++ sql command-line

对于我的计算机科学课程最终项目,我需要与SQL数据库进行交互。唯一的问题是,我的教授不会为我安装SQL c ++ API。没有API,有没有办法我仍可以与SQL交互?

1 个答案:

答案 0 :(得分:1)

如果我正确理解了您的问题,则希望您的程序能够启动子进程(在这种情况下为SQL命令行程序),然后能够读取从子进程的{ {1}}和/或stdout,然后将文本写入子进程的stderr,就像用户交互运行该程序一样。

答案是肯定的,尽管需要一些工作,但可以这样做。在Linux / Unix / MacOSX下,您可以调用forkpty()来生成子进程-父进程将获得一个套接字(通过stdin的第一个参数),您可以使用该套接字与子进程进行通信进程的标准输入和标准输出。然后,在子进程中,可以调用execvp(或其变体之一)在该进程中运行SQL程序;

在Windows中,它有点复杂-您需要设置一些管道,然后调用CreateProcess()来启动子进程,并通过这些管道与其进行通信。 Microsoft在该主题上有一个页面(包括示例代码)here