2017-05-24 4 views
0

私の目的は、スレッドのIDとスレッドとプロセスのコードを実行しているJavaScriptを調べることです。私はこれを提供する関数を見つけることができないので、私は以下のように基本的なCコードを使用し、emscriptenを使ってJSコードに変換します。以下に示すように Cコードである: -getscidとgetppid関数のemscriptenコード

#include <stdio.h> 
#include <pthread.h> 
#include <sys/types.h> 
#include <unistd.h> 

int main(){ 

    printf("I am %x and process %d called by %d\n", pthread_self(), getpid(), getppid()); 
    return 0; 
} 

コードtranspilesをエラーなししかし、私は実行任意のブラウザでJavaScriptのための同じ結果を得る、結果はである私は午前8時と42により呼ばれるプロセス1。誰もがなぜこれが起きているのか教えてもらえますか?

答えて

1

少なくともブラウザでは、スレッドIDとプロセスIDがJavaScriptに公開されていないため、それらを取得する方法はありません。明らかにemscriptenは本質的にちょうど "return 42;" 42はいい数字だからです。このようなシステムの内部にアクセスすることができますネイティブバイナリ(Cまたは他の言語からコンパイルされた)が、何ができないのブラウザのJavaScript VM内で実行されている -

これは、プログラミング言語の問題ではありません。 JavaScriptコードを手作業で書くか、C(またはDartやTypescriptなど)からコンパイルするかは関係ありません。

もちろん、VMの内部で動作するプログラムで外部情報を利用できるようにすることができます。 Date.now()はオペレーティングシステムから現在の時刻を取得し、その値をJavaScriptの土地に渡します。 getpid()/getppid()相当のブラウザをブラウザに追加したい場合は、Web標準化プロセスを実行する必要があります。 node.jsに興味がある場合(または独自のV8組み込みアプリケーションを実装している場合)、こうした情報を提供するネイティブアドオンを開発することができます。

関連する問題