SORU
14 Aralık 2010, Salı


yürütme sistemi komutu eşzamanlı olarak node.js

İçinde ihtiyacım varnode.jsişlevi

result = execSync('node -v');

bueşzamanlı olarakverilen komut satırı çalıştırın ve tüm stdout bu komut metin tarafından çiğnenmiş dönüş.

ps. Sync yanlış. Biliyorum. Kişisel kullanım için sadece.

GÜNCELLEME

Şimdi ABD çıkış kodu verir, ama stdout değil mgutz çözümü var! Hala daha kesin bir cevap bekliyor.

GÜNCELLEME

mgutzve Çözümü burada :) onun cevabı güncellendi
Ayrıca, gibişöminenin.birsözü, tek başına exec-sync modülü var

2014-07-30 GÜNCELLEŞTİRİN

ShellJS lib geldi. Bu şu an için en iyi seçenek olduğunu düşünün.


2015-02-10 GÜNCELLEŞTİRİN

EN SON!NodeJS da 0,12 destekler execSync doğal olarak.
Bakın resmi docs

CEVAP
9 HAZİRAN 2011, PERŞEMBE


execSync kütüphane bakın.

Oldukça kolay node-ffi ile ne ilgisi var. Sunucu işlemleri için tavsiye etmem, ama genel kalkınma programları için başardı. Kitaplığı yükleyin.

npm install node-ffi

Örnek komut:

var FFI = require("node-ffi");
var libc = new FFI.Library(null, {
  "system": ["int32", ["string"]]
});

var run = libc.system;
run("echo $USER");

[Haz 2012 EDİT: Nasıl STDOUT almak için]

var lib = ffi.Library(null, {
    // FILE* popen(char* cmd, char* mode);
    popen: ['pointer', ['string', 'string']],

    // void pclose(FILE* fp);
    pclose: ['void', [ 'pointer']],

    // char* fgets(char* buff, int buff, in)
    fgets: ['string', ['string', 'int','pointer']]
});

function execSync(cmd) {
  var
    buffer = new Buffer(1024),
    result = "",
    fp = lib.popen(cmd, 'r');

  if (!fp) throw new Error('execSync error: ' cmd);

  while(lib.fgets(buffer, 1024, fp)) {
    result  = buffer.readCString();
  };
  lib.pclose(fp);

  return result;
}

console.log(execSync('echo $HOME'));

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • MaximumPCMag

    MaximumPCMag

    23 Temmuz 2010
  • SaraBeautyCorner - Nails and Nail Art Designs, DIY, Fashion & Makeup Tutorial

    SaraBeautyCo

    7 EKİM 2012
  • Sergio Fernandez

    Sergio Ferna

    1 EKİM 2009