extern C言語 ファイルを分割してコンパイルしたくなってきた時に使うextern宣言 例えば下記の3ファイルをgcc -o a.out main.c sub.cでコンパイルしようとするとエラーが出る。 /* main.c */ #include "sub.h" int main(void){ int num = 100; print(num); print(my_num); return 0; } /* sub.c */ #include "sub.h" #include <stdio.h> void print(int num){ printf("%d\n", num); } /* sub.h */ int my_num = 200; void print(int num); 理由はmain.cとsub.cの両方がsub.hをインクルードしており、my_numが重複するからだ。
Linuxでstrace, FreeBSDでktrace C言語 システムコールのデバッグ方法を探していたらstarceなるものがありました。 でもLinuxのみでしか使えないので、もうひと探ししたらFreeBSDにはktraceなるものが 存在することが判明。 「netstat -f inet」というコマンドをトレースしたい、という場合の以下使い方です。 ktrace netstat -f inet > /dev/null ktrace -C kdump > netstat.log 一行目でktraceを開始します。標準出力は捨てます。 2行目は念のためトレースをストップ。 3行目は結果を出力します。 ちなみにルートユーザ以外だとシステムコールは「execve」で終了になってしまうのでご注意ください。
C言語 PSコマンドのソースを読む。 ソースコードを読むシリーズ。WIKIにまとめてありますが、おおまかなものをエントリしておきたいのでこちらにも追記します。 psコマンドのソースコードを読みました。肝はkvm(kernel virtual memory)関連で、ここの情報を読み取るイコール「psコマンドでプロセスを表示させる」ということになります。 サンプルは以下。 #include <stdio.h> #include <stdlib.h> #include <fcntl.h> #include <kvm.h> #include <paths.h> #include <sys/param.h> #include <sys/sysctl.h> #include <sys/user.h> int main(void){ kvm_t *kd; struct kinfo_proc *kp;
PerlのモダンなOOPを学んでいく過程のメモ。 Roleについて。手っ取り早く言えばInterfaceの機能、と解釈しています。。 以下はベーシックな使い方。 #!/usr/bin/perl package Breakable; use Moose::Role; has 'is_broken' => ( is => 'rw', isa => 'Bool', ); sub break { my $self = shift; print "I have break\n"; $self->is_broken(1); } package Car; use Moose; with 'Breakable'; has 'engine' => ( is => 'rw', ); package main; use strict; use warnings; my $car = Car->new(eng
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く