0
我想讓我的node.js函數從文件中讀取,而同時在它的c程序寫入,如果這不是不可能的。 Node.js函數在c寫入時無法讀取,我想刪除該鎖。另外我需要節點功能 不會停止,直到閱讀'文件結束!'。node.js讀取txt文件,同時寫入c
C程序:
#include <stdio.h>
#include <time.h>
#include <unistd.h>
int main(int argc,char *argv[]) {
int simulationLength,simulationStep,simulationStepNum,i,time;
FILE *f;
if(argc != 3) {
printf("Bad input!\n");
return 1;
}
simulationLength = atoi(argv[1]);
simulationStep = atoi(argv[2]);
simulationStepNum = simulationLength/simulationStep;
f=fopen("exit.dat","w");
for(i=0;i<simulationStepNum;i++) {
time = rand()%10;
fprintf(f,"TStep %d, Time=%d\n",i,time);
sleep(time);
if(i%10 == 0)
fprintf(f,"Internal error!\n");
}
fprintf(f,"End of file!\n");
fclose(f);
}
Node.js的功能:
var readline = require('readline');
var fs = require('fs');
module.exports = function() {
var file = 'app/webmus/app/wemus-cluster-simulation/exit.dat';
var eof = 'End of file!';
var lineReader = readline.createInterface({
input: fs.createReadStream(file)
});
lineReader.on('line', function(line) {
if (line == eof) lineReader.close();
console.log(line);
}).on('close',function(){
process.exit(0);
});;
}
嗯,一個竅門是在追加模式下打開文件並在寫入一些數據後打開/關閉它。這就是它不會專門鎖定文件並讓節點讀出某些內容的方式。但這不是一個好的和可行的選擇。另一個解決方案是創建管道讓C寫入它並從中讀取節點。同樣,解決方案很大程度上取決於您的要求。 – Saleem