[分享] node.exe 利用child_process做些事情

node v0.5.3 版本終於出現了,先看一下原文到底做了哪些更新。

2011.08.01, Version 0.5.3 (unstable)<br></br><br></br>Fix crypto encryption/decryption with Base64. (SAWADA Tadashi)<br></br>#243 Add an optional length argument to Buffer.write() (koichik)<br></br>#657 convert nonbuffer data to string in fs.writeFile/Sync (Daniel Pihlström)<br></br>Add process.features, remove process.useUV (Ben Noordhuis)<br></br>#324 Fix crypto hmac to accept binary keys + add test cases from rfc 2202 and 4231 (Stefan Bühler)<br></br>Add Socket::bytesRead, Socket::bytesWritten (Alexander Uvarov)<br></br>#572 Don’t print result of –eval in CLI (Ben Noordhuis)<br></br>#1223 Fix http.ClientRequest crashes if end() was called twice (koichik)<br></br>#1383 Emit ‘close’ after all connections have closed (Felix Geisendörfer)<br></br>Add sprintf-like util.format() function (Ben Noordhuis)<br></br>Add support for TLS SNI (Fedor Indutny)<br></br>New http agent implementation. Off by default the command line flag --use-http2 will enable it. make test-http2 will run the tests for the new implementation. (Mikeal Rogers)<br></br>Revert AMD compatibility. (isaacs)<br></br>Windows: improvements, child_process support.<br></br>Remove pkg-config file.<br></br>Fix startup time regressions.<br></br>doc improvements<br></br>

這次更新主要的幾個重點在於,windows用戶來說最大的更動開始支援childprocess,node能夠支援childprocess之後,就可以做很多(壞)事情。

模組(Modules)幾乎都可以支援(目前專案上所使用的模組都可以支援),雖然幾經測試之後筆者這邊的npm還是無法安裝成功。但是根據上篇文章的windows模組加載方式,皆可以正常執行。

關於child_process
測試nodejs code,儲存為test.js

var exec = require('child_process').exec,<br></br> ls = exec('dir');<br></br><br></br>ls.stdout.on('data', function (data) {<br></br> console.log('stdout: ' + data);<br></br>});<br></br><br></br>ls.stderr.on('data', function (data) {<br></br> console.log('stderr: ' + data);<br></br>});<br></br><br></br>ls.on('exit', function (code) {<br></br> console.log('child process exited with code ' + code);<br></br>});<br></br>

使用node.exe v0.5.2以前,會造成錯誤無法執行

使用node.exe v0.5.3,可以正確執行cli指令

結語
child_process可以讓node.exe變成windows本地端服務的產出,這邊只是一個小小範例,當然各位的技術都比我強,說不定能產出些java xxxx.java之類的指令做出些更奇怪偉大的事情出來。

CaesarChi

Web developer, focus on website fullstack, special JavaScript, and love sharing developing experience and communicate with developers. http://about.me/clonn