javascript - node.js读取txt文件,而c在其中写入

标签 javascript c node.js

如果这不是不可能的话,我希望我的node.js函数从文件中读取,同时c程序在其中写入。 Node.js 函数在 c 写入时无法读取,我想删除该锁。我还需要 Node 功能 在读取“文件结束!”之前不会停止。

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);
    });;   
}  

最佳答案

您还可以通过刷新内容将更改推送到文件:

for(i=0;i<simulationStepNum;i++) {
    time = rand()%10;
    fprintf(f,"TStep %d, Time=%d\n",i,time);

    // flush data from buffers to disk.
    fflush(f);

    sleep(time);
    if(i%10 == 0)
        fprintf(f,"Internal error!\n");
}

我确信,这应该可以解决您的问题。同样,如果您在 *nix 环境中,命名管道最适合此类工作。

关于javascript - node.js读取txt文件,而c在其中写入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36000902/

相关文章:

javascript - Node.js EXDEV 重命名错误

javascript - 如何从自定义按钮调用数据表 csv 按钮

javascript - 多个 if-else 不起作用

javascript - Knockout.js:更新使用映射插件加载的对象

c语言解释,涉及整数计算

node.js - Firestore 事务在单个事务中更新多个集合

javascript - react useEffect 和异步获取

python - 为什么负数在求平方时常常需要括号才能得到预期的结果?

c - 为什么 printf 在 C 中返回一个 int 而不是 size_t

node.js - Nightmare HTTPS 选项 : ignoreSslErrors and sslProtocol not working for phantomJS