无法理解如何做两个进程(进程1和2)分别实现可执行文件和交换消息。像(1.Hello 2.Hi 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);
}
}
也许在模块的帮助下,我不知道。
答案 0 :(得分:0)
我找到了我想要的东西。它自己的接口具有Command模块的类型,这是它执行的东西的类型。
在exec的行上,cmd被设置为参数列表中的第一个单词,并且字符串.dis被连接到它(以解释Limbo目标程序文件通常使用此后缀命名的事实)。 信息:" 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 found\n", cmd);
return;
}
c->init(ctx, args);
}