« 2005年10月02日 | メイン | 2005年10月04日 »
2005年10月03日
ハイバネーションできない
先日研究室で使っているPCのメモリを増設したことを書きましたが、その後ハイバネーションできないというトラブルに見舞われています。[Windowsのシャットダウン]ダイアログから[休止状態]を選択して実行すると、上のように「システムリソースが不足するため、APIを終了できません」という警告が表示されて、ハイバネーションすることができないのです。
1 GB 以上の RAM を搭載したコンピュータは負荷の高い状況下で休止状態に入れない
1 GB 以上の RAM を搭載したコンピュータの休止に関する問題
MSのKnowledge Baseを検索したところ、該当するものが見つかりました(上がWindows 2000、下がWindows XP向けの情報)。どうも1GB以上のメモリを積んでいて、複数のプロセスを実行中で負荷の高い状態だと休止状態への移行に失敗するようです。解決策は最新のService Packを当てること。あはは、既にSP2適用済みの私にどうしろと……。
自宅のPCもメモリを1GB積んでいますが、こんな風にハイバネーションに失敗したことはないんですけどね〜。ノートPCではないから致命的ではないとはいえ、ここ数年休止状態を常用していた私にとってOSの起動に時間がかかるのが苦痛でなりません。かといってせっかく増やしたメモリを減らす気にもなれませんし、どうしたものか。
(追記)
この問題、私の環境では解決しました。詳しくはこちらを参照。
投稿者 sai : 02:03 | コメント (8) | トラックバック
コマンドライン引数の処理
この2ヶ月ほどCUIのプログラムを組んでいるんですが、内部の処理がだいぶできあがってきたこともあって、次に起動時に渡すコマンドライン引数の処理をどうしようかな〜と考えています。当然一から解析するプログラムを作るなんて無駄なことはするつもりありません。車輪の再発明ほど愚かなことはありませんので。
そんなわけで定番のgetoptでも使おうかと思って調べていたところ、boost::program_optionsなんてものを発見。どうやらboost 1.32で入ったものらしく、リファレンスを見る限りなかなかよさそうなので試してみました。
仕様としては、実行ファイル(foo.exe)を起動する際に入力ファイル(input-file)を一つ指定し、オプションで出力用ディレクトリ(-o, --output-path)を指定でき、またヘルプ(-h, --help)、バージョン情報(-v, --version)の表示用のオプションも用意する、といったものを考えてみました。プログラムはほとんどチュートリアルと一緒ですが、こんな感じ。
これで、
foo.exe -h foo.exe --help foo.exe -v foo.exe --version foo.exe input.dat foo.exe -o c:\output input.dat foo.exe --output-path c:\output input.dat
といった処理ができました。