c++ - 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;
}
已验证pipe
is notNULL
也不feof(pipe)
是NULL
。但fgets()
归来NULL
。
什么会导致这种情况?
解决方案
谢谢你的评论。我可以解决这个问题。这是由于容器内缺少用于 shell 脚本(“sh”)的库 libtinfo.so.5。将库复制到容器内的 /lib/ 后,它开始工作
推荐阅读
- opengl - 在 OpenGL 3 / GLSL 130 中设置线宽
- python-3.x - 在 CSV 模块中使用“下一步”方法
- stata - 计算滚动中值绝对偏差
- c++ - 使用具有捕获值的 lambda 对容器进行排序
- javascript - 如何删除输入标签的值
- ios - Firebase -Auth.auth().currentUser?.phoneNumber 返回 nil
- python - 如何计算每个 scikit-learn ML 模型样本的二进制日志损失
- linkedin - 为 Linkedin 创建元标记 - 发布日期“未找到”
- amazon-web-services - 我们如何将集群 ID 传递给引导自定义操作
- python - 如何使用 df.loc 和键列遍历数据框