我有一个码头容器,里面有CPP代码。
void SetRealtimeThreadPriority()
{
sched_param const param{ThreadPriorities::Priority()};
int result = pthread_setschedparam(pthread_self(), ThreadPriorities::Policy(), ¶m);
printf("SetRealtimeThreadPriority - result checked for assertion %d \n", result);
assert(result == 0); (void) result;
}
当我运行在ubuntu机器中有这段代码的exe时,它工作得很好,其中打印的结果是0(0)。但是当我在容器中运行它时,断言失败了。
我已经浏览了多个线程、手册页、docker运行文档和文章,并尝试使用下面的选项运行容器,但没有成功。
docker run -it --rm --cap-add SYS_NICE MyContainer
docker run --cap-add=ALL --privileged MyContainer
docker run --cap-add=ALL MyContainer
docker run -it --rm --userns host --cap-add SYS_NICE MyContainer
如何调试此问题?我在wsl ubuntu 16.04上运行码头。
发布于 2021-08-29 03:40:28
你可以插入一些代码。也许你能分辨出什么是不同的?例如,#include <sys/capability.h>
和... -lcap
链接如下:
std::cout << cap_to_text(cap_get_proc(), NULL) << std::endl;
就在呼叫pthread_setschedparam(2)
之前。它会在容器内外显示不同的东西吗?
https://stackoverflow.com/questions/68937342
复制相似问题