C
スレッド使ったサンプル作るためのテンプレ #include <stdio.h> #include <stdlib.h> #include <pthread.h> void *thread_func(void *param); int main(void) { pthread_t thread; int ret = 0; ret = pthread_create(&thread, NULL, thread_func, NULL); if (ret != 0) { // pthread_creat</pthread.h></stdlib.h></stdio.h>…
$@ : ターゲットファイル名 $% : ターゲットがアーカイブメンバだったときのターゲットメンバ名 $< : 最初の依存するファイルの名前 $? : ターゲットより新しいすべての依存するファイル名 $^ : すべての依存するファイルの名前 $+ : Makefileと同じ順番の依…
printfの挙動 EOFの扱い readとwriteについて stdioの実装にreadvとwritevを使用している シグナルマスクとsetjmp/longjmp 正規表現 exitが複数回呼ばれるときの振る舞い Dynamic linkerにおけるlazy bindingの未サポート dlclose はmuslでは何もしない スレ…
拝啓 カーネルソース読んでるとよく出てくる「do {} while (0);」 これが何なのか気になったので調べてみました。 torvalds/linux 以下swap関数のようなイメージ 至るところでdo {} while(0)が存在 /** * swap - swap values of @a and @b * @a: first value…
メッセージはプロセス間でデータをストリーム的にやりとりすることが可能で、FIFOやパイプに似ていますが、メモリ上で行なわれるのでより高速です。サンプルを実装してみたのでメモ
他の人が書いた C 言語のプログラムを見ながら思ったのだが、 strcat や strcmp で文字列を切り貼りするのは止めて、 printf はフォーマット文字列をちゃんと使おう。 右寄せ・左寄せ・インデントが必要な場合でも、 1行を表示するのは1回の printf 呼び出し…
perlアプリケーションの負荷テストをやっていて関数ごとのメモリ使用量とかみたいけどどうやって出すんだ。Cなら分かるのにって場面があった。Cなら分かるって思ったはいいもののそういえばどうやって出すんだろって思ってサンプル見ながら実装してみた。 ラ…
typedef enum { MYOP_ERROR = -1, MYOP_NONE = 0, MYOP_QUIT, MYOP_WAITCHILD, /* snip */ } MyOperation_t; /** * AnalyseEvent - epoll_eventから任意のコマンドIDを導く */ MyOperation_t AnalyseEvent (struct epoll_event *event) { if (event->data.fd…
#include <stdio.h> #define NAME_LENGTH 50 typedef struct { char name[NAME_LENGTH]; int age; char gender; } Person; void PrintPerson(Person *p) { printf("name: %s\n", p->name); printf("age: %d\n", p->age); printf("gender: %d\n", p->gender); } int ma</stdio.h>…
指定したオフセットでファイルディスクリプターを読み書きするpread(2)/pwrite(2)を使ったサンプルコード #include <stdio.h> #include <unistd.h> #include <fcntl.h> #include <sys/stat.h> #include <sys/types.h> #include <assert.h> int main(int argc, char **argv) { char c; int fd, ret; fd = open("test.txt", O_R</assert.h></sys/types.h></sys/stat.h></fcntl.h></unistd.h></stdio.h>…
指定したオフセットでファイルディスクリプターを読み書きするpread(2)/pwrite(2)を使ったサンプルコード #include <stdio.h> #include <unistd.h> #include <fcntl.h> #include <sys/stat.h> #include <sys/types.h> #include <assert.h> int main(int argc, char **argv) { char c; int fd, ret; fd = open("test.txt", O_R</assert.h></sys/types.h></sys/stat.h></fcntl.h></unistd.h></stdio.h>…