C++ 打开终端,通过C编程执行命令

C++ 打开终端,通过C编程执行命令,c++,c,ubuntu,terminal,ubuntu-10.04,C++,C,Ubuntu,Terminal,Ubuntu 10.04,有人知道如何使用C程序打开终端并执行多个命令吗 我有一个C语言的程序和终端执行的另一组命令。我需要把它们合并成一个C语言的程序 我正在使用Ubuntu 10.04 谢谢 检查“man xterm”,参数-e。然后,在C中,您可以: 系统(“xterm-els”)您的问题可能有些误导 因为您希望在c代码中运行所有的终端命令,所以实际上可能只有这些命令的文本输入/输出。如果是,您可能不需要终端 当(终端)程序的输出是文本流时,我使用popen。它可能是最容易使用的。例如: ... const

有人知道如何使用C程序打开终端并执行多个命令吗

我有一个C语言的程序和终端执行的另一组命令。我需要把它们合并成一个C语言的程序

我正在使用Ubuntu 10.04

谢谢

检查“man xterm”,参数-e。然后,在C中,您可以:


系统(“xterm-els”)

您的问题可能有些误导

因为您希望在c代码中运行所有的终端命令,所以实际上可能只有这些命令的文本输入/输出。如果是,您可能不需要终端


当(终端)程序的输出是文本流时,我使用popen。它可能是最容易使用的。例如:

 ...
 const char* cmndStr = "ls -lsa";
 FILE* pipe = popen(cmndStr, "r");
 ...
popen指令执行cmndStr中的命令,写入命令(ls-lsa)标准输出的任何文本都会重定向到管道中,然后可供C程序读入

popen打开一个单独的进程(但没有终端,只有管道)

“Fork”是启动单独进程的另一种方式,对启动进程的std i/o进行一些控制,但我认为它不是终端


另一方面,如果您的输出不是一个简单的文本流,那么您可以使用一个仅输出的专用终端屏幕来适应特殊的输出活动。例如,当我使用ncurses时:

我以常规方式手动打开终端,并在终端中

  • 发出命令“tty”以查找设备名称,然后

  • 发出“cd”将焦点设置为工作目录

    dmoen@C5:~$tty

    /dev/pts/1

    dmoen@C5:~$cd工作

    dmoen@C5:~/工作$

然后我启动我的程序(在不同的tty中),让程序知道我希望它用于特殊输出的设备(即/dev/pts/1)。。。我通常使用命令行参数来告诉我的程序我希望它使用哪些pts或额外的终端,但是环境变量、管道、输入/输出重定向和其他选择是存在的

除了在shell中,我(最近)没有尝试过启动终端(如smrt28所建议的)。我相信这会起作用,但我不知道终端命令(示例中的ls)的输出将如何传递回您的程序。popen通常提供一个文本流

很久以前,我使用了一种叫做“pty”的设备,它的工作原理类似于终端,但我不记得如何有效地连接它


有一组“exec”命令。。。见man exec。要将它们连接回您的程序,您可能需要处理文件,或者重定向i/o。选择太多,无法在此列出



此外,您还可以使用shell管道将这些命令与c程序连接。

您正在寻找c解释器。检查这个问题您可以通过
系统
功能执行终端命令。好的,我会更具体一些-im使用gstreamer(服务器和客户端),我使用终端运行gstreamer命令(管道)。我还有一个C程序(服务器和客户端),客户端通过TCP向服务器发送一些数据。现在我需要将这些程序合并到一个C程序中,并使用C程序运行管道(客户端和服务器端)。管道命令示例(服务器端):gst launch videotestsrc!ffenc_mpeg4!rtpmp4vpay!udpsink主机=127.0.0.1端口=5000