在我的C代码中执行程序

时间:2013-06-14 13:52:05

标签: c multithreading terminal system-calls

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

用户首先键入./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()之后)

2 个答案:

答案 0 :(得分:2)

要实现您想要的目标,您需要使用popen(),而不是system()

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

然后,您可以通过此文件描述符与该程序通信。

您的代码应该看起来像(实际上没有编译):

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

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


fprintf(file, "command1\n");

//...

pclose(file);

答案 1 :(得分: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