OJ学習ノート5
1822 ワード
OJプロジェクトが終わったら、私は2、3つの内容を整理して、プロジェクト全体のフレームワークとコード、ドキュメント、そして学習過程を整理して書きます.
最近ずっとOJを研究して、コードの1つ1つの文の过ぎて、それから自分の必要なコードを整理して、前半のjudgedファイルはすでに整理しました
の差は多くなくて、今日テストを始めます.
テスト中に以下の問題に遭遇しました.
--------2月21日問題記録--------------------------------------------------------------------------------
①テスト中にprinft文を追加し、適切な変数を出力して表示する必要があります.また、gdbがない場合、プログラムの実行過程を監視することもできます.
デバッグした私にとって、この方法は直感的で信頼できる方法にほかならない.
printf文を追加すると,この3つの文の前のprintfが正しく出力され,その後のprintfが正しく出力されないことが観察された.この3つ
文は次のとおりです.
この3つの文の意味は、システムの標準出力と入力を閉じ、エラー出力を閉じることです.
具体的な意味は文書化され、最後にまとめて書きます.
その後、私はしばらくこの言葉を注釈して、出力が正常になりました.
②次のテストを続けるときにヒント文に遭遇した:/home/judge/alread has one judged on it!
すでにjudgesが/home/judge/ディレクトリの下で働いています.この言葉はソースコードにある言葉で、コードにあります.
に表示されます.私の理解は元のjudgedがまだ働いているためで、私が利用した元のjudgedのディレクトリ構造全体は、ただ
judgedというファイルの内容を変更しましたが、停止する前のjudgedはありません.したがって、judgedファイルが/home/judge/ディレクトリをロックする準備ができている場合、
他の人にロックされていることに気づいたので、再ロックはできません.
その後、コードをよく観察すると、コードはファイルの内容を取得することによってjudgedを取得することが分かった.そのファイルは/home/judge/etc/judge.pid
あ、ファイルの詳細を見ると、ただの普通のファイル(ファイルの権限や作成者などの情報)で、pidファイルなので、どうやって見るか分かりません
直接削除して、自分で整理したコードを再実行して、OKを実行して、元のあの/home/judge/alread has one judged on itが現れませんでした!
ああ、新しいjudge.pidファイルは私が整理したコードで再作成されました.
そしてコンパイルして実行し、そのヒントが現れ、上記の手順を繰り返して解決します.
--------2月21日問題記録--------------------------------------------------------------------------------
2月21日の問題は解決しました.judgedプロセスがデータベースポーリングを行っているためです.私が設定したのは1つのプロセスだけです.
データベースをポーリングするため、再コンパイル実行中にエラーが発生しました.
解決策は、ps aux|grep judgedコマンドでこのプロセスを見つけることです.プロセス番号を表示しkill-9 xxxxで、このプロセスを殺すように命令します.
後で再コンパイルして実行すればいいです.--------4月18日問題記録---------------------------------------------------------------------------------------
最近ずっとOJを研究して、コードの1つ1つの文の过ぎて、それから自分の必要なコードを整理して、前半のjudgedファイルはすでに整理しました
の差は多くなくて、今日テストを始めます.
テスト中に以下の問題に遭遇しました.
--------2月21日問題記録--------------------------------------------------------------------------------
①テスト中にprinft文を追加し、適切な変数を出力して表示する必要があります.また、gdbがない場合、プログラムの実行過程を監視することもできます.
デバッグした私にとって、この方法は直感的で信頼できる方法にほかならない.
printf文を追加すると,この3つの文の前のprintfが正しく出力され,その後のprintfが正しく出力されないことが観察された.この3つ
文は次のとおりです.
close(0);
close(1);
close(2);
この3つの文の意味は、システムの標準出力と入力を閉じ、エラー出力を閉じることです.
具体的な意味は文書化され、最後にまとめて書きます.
その後、私はしばらくこの言葉を注釈して、出力が正常になりました.
②次のテストを続けるときにヒント文に遭遇した:/home/judge/alread has one judged on it!
すでにjudgesが/home/judge/ディレクトリの下で働いています.この言葉はソースコードにある言葉で、コードにあります.
に表示されます.私の理解は元のjudgedがまだ働いているためで、私が利用した元のjudgedのディレクトリ構造全体は、ただ
judgedというファイルの内容を変更しましたが、停止する前のjudgedはありません.したがって、judgedファイルが/home/judge/ディレクトリをロックする準備ができている場合、
他の人にロックされていることに気づいたので、再ロックはできません.
その後、コードをよく観察すると、コードはファイルの内容を取得することによってjudgedを取得することが分かった.そのファイルは/home/judge/etc/judge.pid
あ、ファイルの詳細を見ると、ただの普通のファイル(ファイルの権限や作成者などの情報)で、pidファイルなので、どうやって見るか分かりません
直接削除して、自分で整理したコードを再実行して、OKを実行して、元のあの/home/judge/alread has one judged on itが現れませんでした!
ああ、新しいjudge.pidファイルは私が整理したコードで再作成されました.
そしてコンパイルして実行し、そのヒントが現れ、上記の手順を繰り返して解決します.
--------2月21日問題記録--------------------------------------------------------------------------------
2月21日の問題は解決しました.judgedプロセスがデータベースポーリングを行っているためです.私が設定したのは1つのプロセスだけです.
データベースをポーリングするため、再コンパイル実行中にエラーが発生しました.
解決策は、ps aux|grep judgedコマンドでこのプロセスを見つけることです.プロセス番号を表示しkill-9 xxxxで、このプロセスを殺すように命令します.
後で再コンパイルして実行すればいいです.--------4月18日問題記録---------------------------------------------------------------------------------------