1

送っています

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

結果は

res: 65280

何が問題になる可能性がありますか?

4

1 に答える 1

2

この値は、子プロセスが255の値で正常に終了したことを示します。

これは、次の場合に発生する可能性があります。

  • /bin/shが見つかりませんsetxkbmapでした。(:これは間違っている可能性があります。私のPCでは、/bin/shその場合は127を返します。)
  • setxkbmap$DISPLAYDISPLAYが設定されていない場合を含め、でXサーバーを開くことができませんでした

他にもたくさんの可能性があると思います。stdoutでエラーメッセージを確認してください。

systemLinuxでの戻り値を解釈するときは、次のようにします。

#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";
  }
}
于 2012-07-05T15:45:27.963 に答える