无法理解如何将两个进程(进程1和进程2)分别实现为可执行文件和交换消息。比如(1.你好2.你好1.你好吗?…)。
下面的代码说明了两个线程如何从文本文件交换消息。有必要将文本文件变为可执行文件(.dis),以便相互通信消息。
implement LThread;
include "sys.m";
include "bufio.m";
include "draw.m";
sys:Sys;
FD: import Sys;
stOut: ref Sys->FD;
bufio:Bufio;
Iobuf:import bufio;
LThread:module{
init: fn(nil: ref Draw->Context, nil: list of string);
process: fn(pName: string);
};
init(nil: ref Draw->Context, nil: list of string) {
sys=load Sys Sys->PATH;
bufio=load Bufio Bufio->PATH;
spawn process("processA.txt");
sys->sleep(10);
spawn process("processB.txt");
}
process(pName: string) {
file_buf:ref Iobuf;
file_buf = bufio->open(pName, sys->ORDWR);
temp_line:string;
temp_line=" ";
while (temp_line != nil){
temp_line=file_buf.gets('n');
sys->sleep(200);
sys->print("%s n",temp_line);
}
}
也许有模块的帮助,我不知道。
我找到了我想要的。它自己的接口具有命令模块的类型,这就是它执行的东西的类型。
在exec行中,cmd被设置为参数列表中的第一个单词,字符串.dis被连接到它(以说明Limbo对象程序文件通常使用此后缀命名)。信息被采取:"林博编程语言"。
exec(ctx: ref Draw->Context, args: list of string){
c: Command;
cmd,file: string;
cmd = hd args;
file = cmd + ".dis";
c = load Command file;
if(c == nil)
c = load Command "/dis/"+file;
if(c == nil) {
sys->print("%s: not foundn", cmd);
return;
}
c->init(ctx, args);
}