有没有办法从 e 代码写入 txt 文件,然后从 C 代码写入同一个文件?
谢谢。
您可以使用如下 C 代码:
static FILE *f = NULL;
void cwrite() {
if (f == NULL)
f = fopen("ec.txt", "a");
fprintf(f, "print from C\n");
}
然后将它从 e 与 e 一起使用:
routine cwrite();
extend sys {
!f: file;
run() is also {
f = files.open("ec.txt", "a", "Text file");
for i from 0 to 100 {
files.write(f, "print from e");
cwrite();
};
};
};
然而,棘手的部分是在 linux 级别,C 中的 fopen 和 e 中的 files.open 为完全相同的文件创建单独的文件描述符,这可能导致非常奇怪的结果。
要使其同步,您应该在不写入时保持文件关闭(这可能意味着不需要的性能开销),或者只使用一种语言编写,当您需要从另一种语言写入时 - 将其作为字符串发送到实际上,您只需要为此定义一些简单的 API。
通常,对文件的访问由操作系统控制。
如果使用操作系统提供的锁定和同步方法,在任意数量的单独进程上运行的任意数量的程序都可以访问同一个文件。
这通常涉及以共享或独占模式打开文件,以读取、写入或两者的方式打开文件,以及设置缓冲选项。它还可能涉及在不同程序之间共享锁机制,例如互斥锁。