我寫代碼來創建一個在線的C++編譯器在node.js中environment.Using spawn
功能我創建了一個子進程,這將編譯代碼並執行它,併發送回輸出給用戶。 但我需要將輸入發送到正在運行的C++程序。我用child.stdin.write('data');
將數據發送到孩子,但我認爲cin
在程序不接收輸入。
請幫我將輸入發送到正在運行的C++代碼。
謝謝。發送輸入數據的子進程的node.js
1
A
回答
1
你或許應該使用羣集或叉,如果你想傳遞的消息......如果你這樣做,節點將設置IPC讓你能夠通過process.send
或者溝通,你可以使用發佈/訂閱系統用於溝通渠道(Redis適用於此),如果您需要跨服務器進行通信,這也是您最好的選擇。
下面是一箇舊作腳本的例子...
var env = process.env.NODE_ENV || 'dev';
var cluster = require("cluster");
//TODO: need to adjust to use domains for this work
process.on('uncaughtException', function (err) {
console.error('GENERAL EXCEPTION IN %s: %s', process.env.WORKER_TYPE || 'MASTER',err);
if (err.stack) console.error(err.stack);
if (cluster.isWorker) {
//process.send notifies the parent process of the error
process.send({
err: {
"str": err && err.toString() || "unknown error"
,"message": err && err.message || null
,"stack": err && err.stack || null
}
});
}
process.nextTick(function(){
process.exit(666);
});
});
if (cluster.isMaster) startMaster();
if (cluster.isWorker) startWorker();
function startMaster() {
createWorker("foo");
createWorker("bar");
}
function createWorker(workerType) {
var worker = cluster.fork({"WORKER_TYPE":workerType}); //passes environment variables to child
worker.on('online',onOnline.bind(null, worker));
worker.on('message',onMessage.bind(null, worker));
worker.on('exit',onExit.bind(null, worker));
worker.workerType = workerType;
return worker;
// you can use worker.send() to send a message that
// will raise a message event in the child
}
function startWorker() {
console.log("Running Worker: %s %s", cluster.worker.id, process.env.WORKER_TYPE);
setTimeout(process.exit.bind(process,0), 5000); //close in 5 seconds
//you may want to load a specific module based on WORKER_TYPE
}
function onOnline(worker) {
console.log("Worker Online: %s %s", worker.id, worker.workerType);
//console.log(arguments);
}
function onMessage(worker, msg) {
if (msg.err) {
console.warn("Error From", worker.id, worker.workerType, msg.err);
} else {
console.log("Message From", worker.id, worker.workerType);
}
//console.log(arguments);
}
function onExit(worker, code, signal) {
console.log("Worker Exited: %s %s %s %s", worker.id, worker.workerType, code, signal);
if (env == 'dev') {
//for now just exit the whole thing (dev mode)
process.nextTick(function(){
process.exit(1);
});
} else {
//workers should simply keep working...
//fire off a new worker
createWorker(worker.workerType);
}
}
0
1,創建與輸入數據的文件。
2.創建ReadStream
打開輸入文件。
3.Pipe的ReadStream
與childprocess.stdin
。
file=fs.createReadStream('input.txt',{encoding:'utf8'});
file.pipe(childprocess.stdin);
這對我有效。
相關問題
- 1. 發送數據到子進程
- 2. Node.js - 帶spawn的子進程:無法從子進程流數據
- 3. 的Node.js - 以HTML形式發送數據的Node.js和驗證插入的數據
- 4. Node.JS硒發送密鑰輸入
- 5. Node.js子進程的自定義標準輸入
- 6. (c/C++)試圖強制EOF從父進程發送輸入到子進程
- 7. JAVA - 將數據發送到循環中的子進程
- 8. Node.js發送post請求的數據?
- 9. 通過Node.js數據報在電子發送UDP數據包
- 10. Node.js:如何將控件C發送給子進程
- 11. Ruby的子進程與node.js
- 12. 嵌入式C:不同的進程發送/接收數據到相同的輸入/輸出
- 13. Python - 輸入爲輸入到子進程的整數.Popen
- 14. 發送消息後,進入數據
- 15. 發送$ _FILE數據以形成輸入
- 16. 發送子域名到node.js
- 17. ASP.NET - 以純文本電子郵件發送輸入數據
- 18. 防止子進程的子進程寫入標準輸出
- 19. 如何發送多個輸入到遠程shell使用子進程.Popen
- 20. 發送鍵盤輸入到正在運行的進程linux
- 21. 發送輸入到劣質python進程時的慢速Mac
- 22. 如何將數據發送到進程?
- 23. SendGrid不發送電子郵件(Node.js的)
- 24. Node.js的異步發送電子郵件
- 25. 如何讓用戶在Node.js中輸入數據到產生的進程
- 26. 將數據連續發送到子進程
- 27. 使用libssh發送'輸入'到遠程進程
- 28. node.js - 快遞 - 發送數據 - 表格
- 29. AJAX發送數據到Node.js服務器
- 30. Node.js/Express POST數據未發送