送っています
std::string cmdStr = "setxkbmap us";
int res = system( cmdStr.c_str() );
結果は
res: 65280
何が問題になる可能性がありますか?
この値は、子プロセスが255の値で正常に終了したことを示します。
これは、次の場合に発生する可能性があります。
/bin/sh
が見つかりませんsetxkbmap
でした。(注:これは間違っている可能性があります。私のPCでは、/bin/sh
その場合は127を返します。)setxkbmap
$DISPLAY
DISPLAYが設定されていない場合を含め、でXサーバーを開くことができませんでした他にもたくさんの可能性があると思います。stdoutでエラーメッセージを確認してください。
system
Linuxでの戻り値を解釈するときは、次のようにします。
#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";
}
}