如何解决为什么 faketime 命令跳过代码部分
我有一个 cpp 代码,我正在尝试使用 faketime 命令运行它。我在两台相同的计算机上运行它。他们都在运行 RHEL 7。我注意到当我在一台计算机上运行我的代码时,它完全跳过了我的 popen 调用。
我的代码本质上是
char ntp[]= "192.168.1.200";
FILE *jitter;
char line[100];
char *start;
char * eol;
char pps[] = "NTPS";
jitter = popen("chronyc sources","r");
int i;
cout<<"reached here"<<endl;
while(fgets(line,sizeof(line),jitter))
{
cout<<"line is\n"<<line<<endl;
if(strstr(line,pps)){
start = strpbrk(line,"#0+-");
cout<<"PPS is "<<start<<endl;
//find new line character and replace it with comma
eol = strrchr(start,'\n');
i=eol-start;
start[i]=',';
myfile<<start;
}
if(strstr(line,ntp)){
myfile<<start;
}
}
pclose(jitter);
}
cout<<"reached here"<<endl;
但是当我使用“faketime 'last friday 5pm' ./code”运行它时,在一台计算机上它永远不会到达打印语句,而在另一台计算机上却这样做了。我在网上搜索没有成功(我没有运行近似算法,它们具有相同的编译器和 make 文件等。我实际上是在执行代码的 git pull 并运行它)。
有人知道为什么吗?
谢谢
解决方法
所以看起来问题出在 SELinux 上。显然,当 SELinux 处于强制模式时,chrony 不能很好地交互。我将其切换为宽容,现在它的行为符合预期。我可以调用 faketime 'last friday 5pm' chronyc sources
并在我的 popen 代码中使用它
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。