首页 > 解决方案 > Docker 容器中的 C++ 程序

问题描述

我在容器内使用以下函数来执行命令行参数cd /mypath && sha1sum -c mysha1sumfile,以将 /mypath 中可用文件的 sha1sum 与同一路径中 mysha1sumfile 中的值进行比较。当我将其作为二进制执行时,该命令正在运行。当我通过执行 /bin/bash (在容器内)在容器内手动尝试时,也是如此。但不能从程序中工作。

executeCmd(const char* command)
{
  string response = "";
  char buffer[256];   
  FILE* pipe = popen(command,"r");  

  if(!pipe)  {  
    response = "ERROR";  
  }  
  while(!feof(pipe)){        
    if(fgets(buffer,128,pipe) != NULL){
      response += buffer;
    }  
  }  
  pclose(pipe);  
  return response;  
}

已验证pipeis notNULL也不feof(pipe)NULL。但fgets()归来NULL

什么会导致这种情况?

标签: c++docker

解决方案


谢谢你的评论。我可以解决这个问题。这是由于容器内缺少用于 shell 脚本(“sh”)的库 libtinfo.so.5。将库复制到容器内的 /lib/ 后,它开始工作


推荐阅读