2

我想在我的代码中使用的程序是一个命令行工具。

用户./program首先键入,然后用户可以使用程序提供的一些命令。

我想在我的源代码(myCode.cpp)中执行两个命令:

#include <stdio.h>    
#include <stdlib.h>    
int main ()
{
  int i;
  printf ("Checking if processor is available...");
  if (system(NULL)) puts ("Ok");
    else exit (EXIT_FAILURE);
  printf ("Executing command ...\n");
  system ("./program");
  system ("command1");
  system ("command2");

  return 0;
}

执行我的程序(./myCode)后,程序启动,但没有执行这两个命令。

如何执行这两个命令?

如何终止程序然后执行我的以下代码行?(之后system()

4

2 回答 2

2

要实现您想要做的事情,您需要使用popen(),而不是system().

Popen 启动一个新进程来执行您在命令中指定的程序,然后将该程序的输入或输出流映射到您自己的程序中可用的文件描述符。

然后,您可以通过这个文件描述符与这个程序进行通信。

您的代码应如下所示(未实际编译):

FILE* file = popen("/path/to/your/program", "w")

if (!file) {
  // Something not nice happened
}


fprintf(file, "command1\n");

//...

pclose(file);
于 2013-06-14T13:54:18.860 回答
1

使用popen()而不是system(),并且假设您的程序从其标准输入中获取命令,请将您的命令写入FILE*返回的popen()

FILE* pin = popen("./program", "w");
fprintf(pin, "command1\n");
fprintf(pin, "command2\n");
fflush(pin);
pclose(pin); // this will wait until ./program terminates
于 2013-06-14T14:01:54.303 回答