日記

日本語の勉強のためのブログ

C言語

【libbpf/C言語】eBPFのuprobeでprintfをフックしてみる

以下のステップで進む。 uprobeの概要、使用法 eBPFプログラムの作成 ユーザ空間プログラムの作成 コンパイル、動作確認 1. uprobeの概要、使用法 eBPFにはシステムコールや関数にフックする機能があるが、用途によって大きく2つに分かれる。 kprobe:カーネ…

関数ポインタとそのキャストについて

調べてわかったことをまとめる。 関数ポインタ その名の通り、関数を指すポインタ。次のように定義する。 // long型の引数を2つ受け取り、long型の値を返す、varという関数へのポインタ long (*var)(long, long); ちなみに*varを囲むカッコを外してしまうと…

【C言語】変数内の複数行文字列をfor文で一行ずつ読み込む方法

分かりづらいタイトルで申し訳無い… やりたいこと 例えば 1,2 3,5 3,7 ... のような複数行の文字列が入った変数txtが与えられたとしよう。つまり、 char *txt = "1, 2\n3, 5\n3,7\n"; といった形で与えられている状況を想定する。 このとき、 int i, n, leng…

【C言語】scanf時の改行の処理に苦労した

AtCoder Beginner Contest 191のC - Digital GraffitiをC言語で解いたときのはなし。 例として以下の入力が与えられていた。 5 5 ..... .###. .###. .###. ..... これを以下のコードで読み込もうとすると、最終行(.....の部分)を読み込むことができなかっ…

【C言語】「ポインタと整数の比較を行なっています」

今日出たエラーについてメモ。 出たエラー ポインタと整数の比較を行なっています[デフォルトで有効] if (letter == "c") count++; ^ 文字列リテラルの比較結果は不定です[-Waddress] (注:letterはchar型変数) 解決 文字をくくるのはシングルクォーテーシ…