サーバ版などでターミナルが日本語に対応していない場合があります.
その場合,apt-getとかを実行すると何がなんだかわからない文字の羅列が流れていきます.
その対策として以下をbashrcなどに記述します.
case $TERM in
linux) LANG=C ;;
*) LANG=ja_JP.UTF-8 ;;
esac
Makefileに以下を追加する(引用元
CHOST =x86_64-pc-linux-gnu
CFLAGS = -march=core2 -O2 -pipe
CXXFLAGS = ${CFLAGS}
停止しているPCをネットワークから起動することが可能なWake On Lan(wol)という機能を使ってみたいと思います.
この機能は,クライアントからマジックパケットと呼ばれる魔法の呪文をホスト(起動させたいPC)へ送ることでホストを起動させることができます.
設定の準備として,ハードウェアの確認を行います.
まず,ホストのBIOS設定で「ネットワークからの起動を許可」などのWOLに関連しそうな項目を有効にします.
最近のものは大丈夫だと思いますが,NIC自体がWOLに対応していない場合もあるのでその辺りも確認が必要です.
$ sudo apt-get install eththool
この場合,eth0を確認している
$ sudo ethtool eth0
で,Supports Wake-on: が g ならサポートしている
$ sudo ethtool -s eth0 wol g
ただし,このコマンドは再起動時に無効になるため,常時WOLを有効にしておくためにはこのコマンドを起動毎に実行する必要があります.$ sudo vi /etc/rc.local
sudo ethtool -s eth0 wol g
exitより上に書く
$ sudo apt-get install wakeonlan
他のOSからもマジックパケットを送ることができます.$ sudo wakeonlan -i <ホストのIPアドレス> <ホストのMACアドレス>
これでWOLが利用できるようになるはずですb以前にBoostを用いてスレッドを立てましたが,これまたBoostのライブラリを使って簡単にスレッドセーフを実現する方法をメモしておきます。
#include <boost/thread.hpp>
#include <boost/bind.hpp>
boost::mutex mtx;
void hoge1(int &a){
boost::mutex::scoped_lock lock(mtx);
for(int n=0; n<3; ++n){
std::cout << "hoge1:" << a+n << std::endl;
}
std::cout << std::endl;
return;
}
void hoge2(int &b){
boost::mutex::scoped_lock lock(mtx);
for(int n=0; n<3; ++n){
std::cout << "hoge2:" << b+n << std::endl;
}
std::cout << std::endl;
return;
}
int main(int argc, char **argv){
int c = 0;
boost::thread thr1(boost::bind(&hoge1, c));
boost::thread thr2(boost::bind(&hoge2, c));
thr1.join();
thr2.join();
return 0;
}
これを実行するとhoge1:0
hoge1:1
hoge1:2
hoge2:0
hoge2:1
hoge2:2
という感じになってくれると思います.