目次 †
下位ページ †
mmap †
- 参考
- 機能:ファイルとメモリの同一視(仮想メモリ技術)
- 読み込み専用なら,メモリから読み出しがそのままファイル読み出しに相当.
- 書き込み専用なら,メモリへの書き込みがそのままファイル書き込みに相当.
- メリット
- カーネルとコピープログラムの間でデータのコピーが発生しないので,高速.
- iostreamなんて使うよりはよほど早い.
printfのバッファクリア †
#include <stdio.h>
#include <stdlib.h>
int main(void)
for (i = 0 ; i < 3; i++) {
printf("*");
fflush(stdout);
sleep(1);
}
}
void*のoffset †
#include <stdio.h>
int main(void)
{
void* a = (char*)0x01;
a = (void*)((char*)a + 0x0F);
printf("%p\n", a);
}
non-blocking read †
- readでO_NONBLOCKよりも,selectでread可能かどうかを見る方がまとも
- RDWRで開けるので,non-blockingしながらwriteもできるので
- man select
低位関数のエラー †
- errnoに出力される
- 表示の方法
- perror(問答無用で標準出力に出てしまう)
- strerror(char*となるので,その後どうにかできる)
日付からUNIX TIMEを得る †
#include <ctime>
#include <cstdio>
#include <cmath>
int main(void)
{
int y = 2015;
int m = 5;
struct tm t;
time_t timer;
timer = mktime(&t);
for (int d = 3; d < 30; d++) {
t.tm_year = y - 1900;
t.tm_mon = m - 1;
t.tm_mday = d;
t.tm_hour = t.tm_min = t.tm_sec = 0;
timer = mktime(&t);
printf("%d %d (%ld)\n", d, (int)round((double)timer/60/60/24), timer);
}
}
ブラウジング †
- curlとlibxmlを使う.
- ログイン情報は,httpクッキー情報を付記する必要がある(超面倒)
sprintfの型は非常に厳密 †
- sprintfの型は非常に厳密で,1と1.0の違いで数字化けを起こすので要注意
文字列検索と文字列分解 †
- "1:100H2"もしくは"1:100"が入力の文字列ttargから100と2を抽出するかっこいい方法
char* s = "1:100H2";
double r0, Rh;
char* colon;
if((colon = strstr(s, ":")) != 0)
if(strstr(colon+1, "H") != 0)
sscanf(colon+1, "%lfH%lf", &r0, &RH);
else
sscanf(colon+1, "%lf", &r0);
数学関数の速度 †