2014-10-28 54 views
0

無法理解如何執行兩個進程(進程1和2)分別執行可執行文件和交換消息。像(1.Hello 2.Hi 1.你好嗎?...)。帶兩個可執行文件(.dis)的兩個線程Limbo(編程語言)

下面的代碼說明了兩個線程如何從文本文件中交換消息。 必要的是,代替文本文件成爲可執行文件(.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

該代碼有2個過程實現,你需要知道它是如何完成的?你說代碼顯示了2個線程,從我所看到的那裏有2個進程。你可以更具體地瞭解代碼的作用以及你的問題是什麼? – Lucian 2014-10-28 09:58:19

+0

我需要調用兩個可執行文件的進程,並且這些進程並行工作 我不知道如何調用可執行文件 – Gleb 2014-10-28 13:18:37

回答

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