var sys = require('sys');
var exec = require('child_process').exec;
var cmd = 'whoami';
var child = exec( cmd,
function (error, stdout, stderr)
{
var username=stdout.replace('\r\n','');
}
);
var username = ?
Exec関数から外部のユーザー名を見つけるにはどうすればよいですか?
Exec関数にコールバックを渡すことができます。 exec関数がユーザー名を決定したら、ユーザー名でコールバックを呼び出します。
_ var child = exec(cmd, function(error, stdout, stderr, callback) {
var username = stdout.replace('\r\n','');
callback( username );
});
_
JavaScriptは非同期であるため、次のようなことはできません。
_ var username;
var child = exec(cmd, function(error, stdout, stderr, callback) {
username = stdout.replace('\r\n','');
});
child();
console.log( username );
_
これは、上記の関数が終了するまでconsole.log( username );
行が待機しないためです。
コールバックの説明:
_ var getUserName = function( callback ) {
// get the username somehow
var username = "Foo";
callback( username );
};
var saveUserInDatabase = function( username ) {
console.log("User: " + username + " is saved successfully.")
};
getUserName( saveUserInDatabase ); // User: Foo is saved successfully.
_
コールバックを持つ関数に「exec」ステートメントを書くことができます...このように
var sys = require('sys');
var exec = require('child_process').exec;
var cmd = 'whoami';
function execChild(callback){
var child = exec( cmd,
function (error, stdout, stderr)
{
username=stdout.replace('\r\n','');
callback(username);
}
)};
execChild(function(username){
console.log(username);
});