我发送
std::string cmdStr = "setxkbmap us";
int res = system( cmdStr.c_str() );
,结果是
res: 65280
可能是什么问题?
答案 0 :(得分:2)
该值表示子进程正常退出,值为255。
如果出现这种情况:
/bin/sh
找不到setxkbmap
。 ( note :我可能错了。在我的电脑上,/bin/sh
在这种情况下返回127.)setxkbmap
无法在$DISPLAY
打开X服务器,包括未设置DISPLAY 我确信还有很多其他的可能性。检查stdout是否有错误消息。
在Linux上解释system
的返回值时,请执行以下操作:
#include <sys/wait.h>
int res = system(foo);
if(WIFEXITED(res)) {
std::cout << "Normal exit: " << WEXITSTATUS(res) << "\n";
} else {
if(WIFSIGNALED(res)) {
std::cout << "Killed by signal #" << WTERMSIG(status);
if(WCOREDUMP(res)) {
std::cout << " Core dumped";
}
std::cout << "\n";
} else {
std::cout << "Unknown failure\n";
}
}