問題タブ [libuv]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - libuvを使用した変数宣言
libuvの使い方を学ぼうとしています。Mac OS Xを使用していて、ライブラリをダウンロードしてインストールしています。小さなテストプログラムをコンパイルして実行できます。1つはコールバックループを開始し、ウォッチャーがないため終了します。もう1つはアイドル状態のウォッチャーを作成し、時間がなくなると終了します。
私はファイルioのサンプルを調べようとしていて、問題が発生しています。ファイル記述子を取得する関数の関数プロトタイプは次のとおりです。
サンプルコードを最小値にカットしましたが、それでもエラーが発生します。
私のopen_reqの宣言は、完全なコードサンプルに表示され、エラーが発生しないclose_reqの宣言とまったく同じです。コンパイラが「このスコープで「open_req」が宣言されていません」というエラーを表示したため、open_reqの宣言を追加しました。宣言を追加すると、エラーが「'void(*)(uv_fs_t)'から'void(*)(uv_fs_t *)'への無効な変換」に変更されました。宣言がmain内にあるかどうかではなく、同じエラーが発生します。宣言をポインタ宣言に変更した場合
次に、エラーが発生します。
私は実際のlibuvコードを調べて理解できるかどうかを確認しようとしていますが、コードは巨大です。http: //nikhilm.github.com/uvbook/にある「AnIntroductiontolibuv」を使用しています。これがサンプルコードの出所です。
このライブラリを試して理解するために使用できるサンプルコードの他のソースはありますか?私が宣言で間違っていることは明らかですか?libuvの使用方法に関する説明や例をどこで探すべきかわかりません。
更新の編集libuvコードのuv.hファイル。私は見つけます
私がコードで探していたものの1つは、この構造体が実際に定義されている場所です。私はgoogleを使用してtypedefを検索し、typedefを使用して名前を作成する方法について少し学びました。これにより、構造体のインスタンスを宣言するたびにstructと入力する必要がなくなります。ひどい習慣だと思う人もいれば、素晴らしいと思う人もいます。close_reqと呼ばれるタイプus_fs_tの別の宣言として、最小サンプルを取得するために削除したものの一部。宣言のフォーマットをそのフォーマットから直接コピーしました。
関数へのポインタについて何がわかるかを見ていきます。私はそれらに漠然と精通しているだけで、少なくともどこかで探し始めることができます。
uv_fs_openの関数定義を見つけました。
c - ポインター引数の前の構造体型は何をしますか?
次の構文が何をするのか知りたい:
これは単純な型チェックですか、それとももっと何かしますか? 型の周りにブラケットが必要なのはなぜですか?
http://nikhilm.github.com/uvbook/networking.html#tcpの例全体:
よろしく、ボードー
アップデート:
これは機能しますか?
c - C 構文に慣れていませんか?
他の人が書いた C コードを理解しようとしていますが、すべての構文と理解できない部分を理解していないコードに出くわしました。検索方法がわかりません。これを検索する方法と、私が遭遇する可能性のある他の同様のもの、またはその両方についての説明または情報をいただければ幸いです。問題のコードは次の行です。
r は宣言され、関数「uv_listen()」によって返される値に初期化される変数であり、128 はリテラル int パラメーターであり、on_new_connection はコールバック関数の名前であるため、関数ポインターでなければならないことを理解しています。と呼ばれるものです。server はカスタム タイプ (uv_tcp_t) の変数で、& を使用してサーバーのアドレスを参照しています。私が理解していないのは、「(uv_stream_t*) &server」です。これは、関数のパラメーターの 1 つであるように見えます。値をパラメーターとして返す関数呼び出しは理解できましたが、これは関数呼び出しのようには見えません。「uv_stream_t」は、コードで定義されている別のカスタム タイプです。
それが何を意味するかを理解するのに役立つかどうかはわかりませんが、コード行は、libuv の使用方法を理解するのに役立つように書かれたサンプル コードからのものです。
c - libuv を使用した不可解な動作、malloc および free()
サンプル コードを使用して libuv について学習すると、よくわからない副作用に遭遇しました。コードは malloc() を使用してメモリを取得し、ネットワーク上のクライアントからデータを保存してから、同じデータを送り返します。次に free を使用してメモリを解放します。これは、コールバック ループを通じて何度も繰り返されます。メモリを取得するコード行は次のとおりです。
メモリを解放する行は次のとおりです。
ただし、「Whats the word on the street?」のような長い文字列を入力すると、エコーされてから、短い文字列がエコーバックされた後、古い文字列の「Hi」フラグメントのような短い文字列が再び表示されます。たとえば、出力は次のようになります。
通りの言葉は何ですか?こんにちは、こんにちは、こんにちは。
メモリが解放されているため、古いフラグメントが再び表示される理由がわかりません。この件に関する私の考えは、malloc と free() について理解できないことがあるか、ライブラリにバグがあり、受信データに必要なサイズを決定する方法があり、長い文字列を使用した後に得られるということです。大きすぎたメモリブロックの一部としてガベージ。もしそうなら、それが私の以前の入力の断片であるという事実は単なる偶然です. これが考えられる理由ですか、それとも何か不足していますか? 他の情報はありますか。それを明確にするために含めるべきですか?
node.js - libuv でカスタム イベントを実行できますか?
libuv を試してみたいと思っていますが、ネットワーク スレッドからメイン スレッドにイベントを送信できるようにする必要があります。libuv にはこのようなことを処理するためのカスタム イベントがあると思いますが、それらを見つけることができません。
何か案は?ありがとう!
android - Android NDKでlibuvをコンパイルする方法はありますか?
現在、Android クライアント用の c/c++ を使用していくつかの機能を開発しています。
そのため、android NDK - r8 を使用してコードをコンパイルします。
コードでも libuv を使用しています。
残念ながら、Android NDK は libuv に正しく準拠できません。「pthread_」で始まる用語はすべて認識できません。
誰にもアイデアやヒントがありますか?どうもありがとう。
libuv - uv_poll_init に関するドキュメントはどこにありますか?
https://github.com/benfleis/samples/blob/master/libuv/stdio/stdio_poll.cで libuv の例を見て、それを理解しようとしています。
私はそれをほとんど理解していますが、一番下の uv_poll_init に問題があり、ドキュメントが見つかりません。
誰かがそれに関するドキュメントを教えてもらえますか?
ありがとう!
node.js - Windows で別のユーザーとして子プロセスを生成するにはどうすればよいですか?
libuvは Windows でのオプションをサポートしていないため 、別のユーザーとして実行される子プロセスをどのように生成できますか?child_process.spawn
uid
c - os x で libuv をコンパイルするためのライブラリ?
私はいくつかの libuv を学ぼうとしていますが、それについて書かれたすばらしい本があるようです。ただし、この本では、実際にコンパイルする方法については説明していません。github からプルしたコードで make を実行し、github ( https://github.com/joyent/libuv ) で説明されているように GYP でコンパイルしました。ただし、コードをコンパイルするためにどの種類のライブラリを含める必要があるのか わかりません。このコードをコンパイルしようとしました:
libuv
フォルダーから次のコマンドでコンパイルしました。
そして、次の不足しているシンボルを取得しました:
誰かが libuv のビルド方法について簡単なチュートリアルを教えてくれますか?