CやC++で、プログラムから他のコマンドを実行する方法はいくつかあると思います。
それらの内、system関数やpopen関数を使うのが、とりわけ簡単かと思いますが、これらを適当に選んではいけない、という事態に遭遇したので、せっかくなのでsystem関数とpopen関数の違いや選び方とかを交えながらブログのエントリにしておきます。
まず、system()とpopen()の違いを簡単に言うと、コマンドを実行する際、標準入力に書き込んだり標準出力への出力を利用したりしたい場合はpopen()を、ただ実行すれば良いだけなら、system()を使うべきです。
標準入力/出力が使える、という機能が増えているだけなら、いつでもpopenでもいいじゃないか!と思いきや、そこに罠(!?)があったのです!
続きを読む →
友達と一緒に開催している読書会の懇親会の中で、TeamGeekを別の読書会で読み終えたよ、ということを話したところ、LTしてよ!という話になりました。
ちょうどLTとかやってみたかったので、LTらしくかる~くスライドにまとめて、次の読書会の懇親会の時に、皆酔っ払ってる中、独りLTしてみました。
(ただ、LT=Lightning Talksと複数形で、短いセッションが複数あるのがホントだと思うので、独りLTってのは矛盾してるかも。。)
発表後に頂いたコメントをもとにちょっと修正しましたが、せっかくなのでSlideshareに上げました!
読書会をしていたらこの話が出てきたので、せっかくなのでまとめておきます。
C++でfork()を使ってプロセスを生成する
続きを読む →
Emacsやviなどのエディタを使い始める時、同じコマンドを何度も検索しちゃうこと、ありませんか?
CheetSheetは、カンニングペーパーをイメージしたアプリケーションで、何度も検索しちゃうようなことをメモしておくのに向いています。
ショートカットキー一つで、表示・非表示を切り替えられます。
また、表示する内容はマークダウン記法で記述することができます。
例えばEmacsを使っている時や、マークダウン記法で記述している時に…
emacsとマークダウン記法
パッと表示して、コマンドやショートカットキーを確認して
CheetSheetを表示
パッと消して、また元のアプリに戻れます。
一つのコマンドを覚えたら、新しいコマンドをCheetSheetに記載する、としていけば、色々なコマンドをすぐに覚えられるかもしれませんよ!
ダウンロードはこちら CheetSheet.zip から!
また、今後バージョンアップとかしたら、こちら にまとめて記載していくつもりです。
第1回は、JAWS DAYSとかぶってて参加できなかったため、今回が初参戦です。
今回は、Team Geek ―Googleのギークたちはいかにしてチームを作るのか の3章と4章を皆で読んでいきました。
単純に本を読むだけなら一人で読んだほうが早いのだろうけど、色々な人と一緒に読むと、各自のバックボーンから感じ方が違うので、色々な感想が聞けたり面白いディスカッションが出来て良いですな。
そんな色々なディスカッションや、本(今回の範囲の3章と4章)を読んだ感想をつらつらと。。
続きを読む →
ある日、vagrantなcentOSにSinatraを入れようと、vagrant sshした状態からgem installを行ったところ、
ERROR: Could not find a valid gem 'sinatra' (>= 0), here is why:
Unable to download data from https://rubygems.org/ - no such name (https://rubygems.org/latest_specs.4.8.gz)
てな表示が出て、インストールできませんでした。
色々試してたら、そもそもネットワークに繋がっていない模様。pingもwgetも通らんかったので。。
でも、ホストのPCは普通にネットワークにつながってる。。
こういう時は再起動だ!というわけで、一旦exitして、vagrant reloadして、もう一度vagrant sshしたら、ちゃんと繋がるようになりました。
ちゃんと原因追わなかったけど、なんだったんだろ。。。
C++で、文字列中の指定した文字列を指定した文字列に置き換えます
(自分で書いておいてなんだけど、ややこしや…)
replaceString.cpp
続きを読む →
C++で指定したディレクトリが空かどうかをチェックします
checkDirEmpty.cpp
続きを読む →
C++で、pthread_createで作ったスレッドから、クラスのstaticではないメンバ関数を呼びます。
pthreadCallMethod.cpp
実行結果
$ g++ pthreadCallMethod.cpp -o pthreadCallMethod -lpthread
$ ./pthreadCallMethod.exe
Called successfully, number = 5
C/C++で、ファイルやフォルダが存在するかどうかを、stat関数の戻り値を用いて確認します
checkExist.cpp
実行結果:
$ g++ checkExist.cpp -o checkExist
$ touch file
$ mkdir directory
$ ./checkExist
0
0
-1
投稿ナビゲーション
ryosukeによる、ためになる(かもしれない)情報など