从系统调用执行时,setxkbmap返回65280

时间:2012-07-05 15:33:56

标签: c++ c

我发送

std::string cmdStr = "setxkbmap us";
int res = system( cmdStr.c_str() );

,结果是

res: 65280

可能是什么问题?

1 个答案:

答案 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";
  }
}