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 がまったく同じファイルに対して別々のファイル記述子を作成するため、非常に奇妙な結果になる可能性があります。
同期するには、書き込みを行っていないときはファイルを閉じたままにしておくか (不要なパフォーマンスのオーバーヘッドを意味する可能性があります)、実際には 1 つの言語からのみ書き込み、別の言語から書き込む必要がある場合は、それを文字列として送信する必要があります。実際にそれを行います。そのための単純な API を定義するだけで済みます。
通常、ファイルへのアクセスはオペレーティング システムによって制御されます。
オペレーティング システムによって提供されるロックおよび同期方法を使用する場合、任意の数の個別のプロセスで実行されている任意の数のプログラムが同じファイルにアクセスできます。
これには通常、共有モードまたは排他モードでファイルを開き、読み取り、書き込み、またはその両方のためにファイルを開き、バッファリング オプションを設定する必要があります。また、異なるプログラム間でミューテックスなどのロック機構を共有することも必要になる場合があります。