
 .    . H  "OS/2 "                            4


                            


 *  ⠪ .
 *  ୥    DosExecPgm().
 * ४饭 ୥ .
 * 祭 ଠ樨  ४饭 ୥ .
 * ।  ப  ୨  .
 *   ⨯ᠬ.
 * ਮ.
 *     ᯠ騥 .


	 ࢮ    㦤 3  筮
 OS/2:
    - ࠭ 㯯 ();
    - ;
    - 楯  (threads).
	࠭ 㯯       㠫   :
  ᮡ⢥ ᪨ ࠭  (*).  窨  ७
짮⥫  ࠭  㯯       祭
୮  ⥬.   짮⥫    ᮧ  ࠭
㯯  ᯮ  Session  Manager       ந   ࠧ
⢫ 室   ࠭ 㯯  .

        㣮 ஭  ⢥ 襬  ⨢
।⠢  ணࠬ.  짮⥫  ⮢  ""
(foreground)   ⮫쪮 ⥬    ணࠬ    ⢥ 
ਣ襭   -       1 -   ⠪ ⮢
䮭  ᯮ  DETACH.

      ᫨ 짮⥫  ⮢ ,    
      ⮢ 㣮?   㤨⥫쭮,   ⠪
 .

        ⮩   ᬮਬ ணࠬ,  ᮧ  ୨
  (child  process)      ࠢ ⨬ ᠬ 
६  믮. ᫥ ᬮ७ ਬ஢ ᮢ  
    ⥩,        ᮢ    饩 ⨭
ணࠬ ᯥ祭  稭 ,  맢  .

	 ONE PARENT, ONE CHILD.
	   -  ॡ.
         

	⥫᪨      ⮢  ⢮   ୨
ᮢ,  ᫥,  ᢮  ।,   ஦ ୨
(.  .4-1)  筮,    ⫨稥    ᪮ ,
 ୨    ⢥ த⥫.

Ŀ
                                                     
         Ŀ............ ..Ŀ                   
                             ⥫      
                                                
   ٳĿ           Ŀ              
                                                
 Ŀ   Ŀ   Ŀ       Ŀ   Ŀ           
                        
                                                  
   ٳ                                        
                                                  
 Ŀ   Ŀ               Ŀ                   
                           㪨      
                                                     

 . 4-1. ⥫᪨ , ஦騥 ⮬⢮.

        ⢥  ࢮ  ਬ  ᬮਬ       ⥩
ਠ⮢  ⢨ ᮢ:

      த⥫ -  ॡ.

	⥫   ᭠砫        ୨   ,    ⥬
⠭  ᨬ   ࠭ ᯫ  横. ⮢訩
୨    ࣠뢠    ,  ⠪   ணࠬ
     ࠧ     ᨬ                  來
।⠢    ⮬    ஢騪(scheduler)  । ६
 ᠬ.

       ,  த⥫  ᭠砫  "㡨"    ⥬
㡨 ᥡ ᠬ( ⠪!   ᪮ ࠣ).

	 த⥫᪠ ணࠬ:

/* parent.c */
/* c   뢭    ࠭*/

#define INCL_DOS
#define INCL_SUB
#include <os2.h>
#define LENGTH 40
#define FLAGS  1
#define ARGS   0L    /*  㬥⮢  ப */
#define ENVS   0L    /*  ६ 㦥 */
#define KILLALL 0    /* 㭨⮦    ⮬ */
main()
{
  char fbuf[LENGTH];
  struct _RESULTCODES childID;    /* ।  doscalls.h */
  unsigned rc;			  /*   */
  if(rc = DosExecPgm(fbuf,
	    LENGTH,FLAGS,ARGS,ENVS,&childID,"CHILD.EXE"))

     { printf("DosExecPgm error = %u\n",rc); exit(1);}

     while(!kbhit() )     /*      */
       VioWrtTTy("X",1,0);

			  /* 㭨⮦  */
  if(rc = DosKillProcess(KillAll,childID.codeTerminate) )
     {printf("DosKillProcess error = %u/n",rc),exit(1);}
     exit(0);
}
	  ணࠬ, 㥬   த⥫᪮  .
/* child.c */
/* ᪠             뢭       ࠭*/
#define INCL_SUB
#include <os2.h>
main()
{

     while(TRUE)         /*              */
       VioWrtTTy("-",1,0);
}
	࠭ ᫥   த⥫᪮   ୥  ᮢ  
ᮢ⭮ ࠡ  룫拉 ᫥騬 ࠧ:

Ŀ
--------------------------------------------XXXXXXXXXX
X-----------------------------------------------------
----XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX--
------------------------------------------------------
--------------------XXXXXXXXXXXXXXXXXX----------------
------------------------------------------------------
-XXXXXXXXXXXXXXXXXXX----------------------------------
--------------------------------------------XXXXXXXX--
------------------------------------------------------
------------------------XXXXXXXXXXXXXXXXXXXXX---------
------------------------------------------------------
---------------XXXXXXXXXXXXXXXXX----------------------


	  ࠭  襣          ப   
ࠢ   ⥬    룫廊   80-筮  ࠭.    ᠬ
䥪 ࠭ .

	         ࠡ     쭮 (foreground)
०    ࠭ 㯯,       ࠭.  
࠭   १ ࠡ  ᮢ.

	     砥  ୨      ,   祬
த⥫᪨.            ⢠   䠪஢,  ⠪  
ࠪ⨪  ணࠬ   믮       ,   ᨨ
⥬,ਮ⮢  time  slice ࠬ஢, ⠭   䠩
CONFIG.OS2.

         ࠪ⨪ ᯫ ⠪   ,
᪮쪮 ᨬ ⠥   ६   ,  
। ࠢ 㣮 .


     㭪 DosExecPgm().
  
	୨    ᯮ VioWrtTTy() 㭪  ⮡
  ࠭ ᨬ  .(  ⠪ ᯮ짮  printf()
㭪  ).  ୨        砥  筮   ,
த⥫᪨    ᯮ  ᪮쪮   㭪権.  
,  ୨  DosExecPgm() 㭪.

Ŀ
DosExecPgm(ABuffer,Length,Flags,AArgs,AEnvs,ACodes,Name);            
                                                                     
char far *ABuffer;/*  쥪⭮ */                   
unsigned Length;  /*   */                                 
unsigned Flags;   /* ᨭ.  ᨭ.,  ஢   */   
char far *AArgs;  /*  㬥⮢  ப */            
char far *AEnvs;  /*  ६ 㦥 */                  
struct _RESULTCODES  far *ACodes; /* 䨪           
                                              室*/         
char far *ANames; /*       */                     


	    ६    믮     ⮩    㭪樨     樮
⥬  室   㪠     DosExecPgm()      ணࠬ,
  砥 CHILD.EXE,  ᪥  㦠   .

	⥬ 樮 ⥬   ᯮ.  祭 宦  
맮 ணࠬ 짮⥫ ⥬     . ,
⥬  ,   ᭠   "த⥫"  
"ॡ",  祬     砥   ࠫ쭮  ࠡ     ᨬ
饭 ணࠬ.

       ࠬ DosExecPgm()    ,    頥
 쥪, ⢥⢥   㤠.

	  ᫮  ,    ணࠬ  ⢫,
   묨, 㧪  ணࠬ   ᪮ ⥪.
४⭮  饭            맢   㤠筮
襭 ணࠬ.  ࠬ  㪠 筮   
ணࠬ ᪮ ⥪    ⢥⢥.   樨,
ᬮ७   襬  ਬ       頥 ⭮⥫쭮
  ଠ.  ਬ,  ᫨  த⥫᪨    ⠥
⮢ ணࠬ,     ,    饣
䠩  㤥 饭   .

	ன ࠬ -   ⮣ .   室   ⮣
⮡ ⥬  室 㯭 ࠭⢮.

	⨩  ࠬ,  䫠,  뢠      
権:

祭 

  0	 ୨  ᨭ஭  த⥫᪨;
  1	 ୨  ᨭ஭ த⥫᪮, 
	    뢠;
  2	 ୨  ᨭ஭ த⥫᪮, 
	     DosCWait();
  3	  ஢, த⥫᪨  㤥
	 㤥 ஢ ୨;
  4	 ᨭ஭ ୨ 	㤥 ࠡ 
	 த⥫᪮ ࠭ 㯯;
  5	 ୨    ࠡ⠥  ᮡ 㪠
	 Session Manager

	஭  믮  -    0  - ॡ ⮡  
砭    ⥬ த 믮 ⠢  . 
  宦    ૥,  祬    ⨧筮   ᯥ稢
ᮢ⨬   ᮪ ஢  ணࠬ MS DOS.

	ᬮਬ 樨 1  2, ॠ騥 ᨭ஭ ࠡ.  ⮬
०        ,  ⥬,    த ࠡ
६.

	  㭪  4-2    奬  ᨭ஭     ᨭ஭
࣠樨 ᮢ.

Ŀ
          Ŀ                  Ŀ 
 1                                          
          Ĵ                   
                                                     
               DosExecPgm()       祭    
               Ĵ                    
 2                                            
                                   
             ஭ ࠡ ᮢ               
                                                       
          1    3    5    7         
          Ŀ    Ŀ    Ŀ    Ŀ         
 1                                      
          Ĵ    Ĵ    Ĵ    Ĵ         
                                                
               DosExecPgM()                       
               Ĵ    Ĵ    Ĵ    Ŀ    
 2                                      
                               
              ᨭ஭ ࠡ cᮢ             
                                                       


      4-2. ஭  ᨭ஭ 樨.

	樨 1  2 祭 宦,   ᪫祭 ⮣,   ०  1
    襭     ᯮ짮  DosCWait()
 ।  襭 .    室    
"⨫  "(start it  and forget it).   室 ࠧ㬥,
     㤥 ᮢ 㭪樮஢    
 㤥  ᯮ짮 DosCWait().

	  砥  ᯮ짮  樨  2     த⥫᪨   
頥    襭        । ஡
砭        DosCWait()  㭪樨,    ᬮਬ
஡ .

	  3  ᯮ    砥  室   ஢
୥   த⥫᪮.     㤥 ⠭  
⮩     ⠫쭮,     ࠧࠡ稪  ⫠稪    
 ⭮ .  ᯮ, ਬ ⥬
CODEVIEW.

	 4 ᯮ  ᪠ ᮢ,   ⥪
᪫⥫쭮    䮭  ०,      㯠    ࠭   
.    ࠢᨫ쭮  ᯮ짮    DETACH.   T
     襭  த⥫᪮          
(DAEMON)  .

	 5 ⠢ ணࠬ  믮,   믮
  ।⢥.   짮⥫     १  ஥    ६
⮢  ᠬ    ᥠᮢ.

	Aargs  Aenvs  ६ ᯮ   । 
ப    ப  㦥  ୥  .  㫥 㪠⥫,
ᯮ㥬   ਬ, 砥 ⢨  ப  
ப 㦥.  㢨  ᯮ짮  ࠬ.

       ६ Acodes   , ।  BSEDOS.H
 룫廊 ᫥騬 ࠧ:

   struct_RESULTCODES  {
     unsigned CodeTerminate; /* 䨪 ୥ */
		   /*       襭 */
     unsigned codeResult;    /*  		*/

      ᫨    ᨭ஭  ࣠ ᮢ,     
  㤥 饭  襭 ୥   
    ⢨⥫쭮  襭    ।  ࠢ  .
ன    㤥  ᯮ짮    ।    
exit()   DosExit() 㭪権.
	  襬   ਬ     ॡ  믮   ᨭ஭
樨, ⮬   ࢮ   ,  CodeTerminate, 㤥
࠭ 䨪  ୥ .      ⬥砫 ࠭,
䨪       ᫮  ਯᠭ     樮
⥬.    ॣ㥬  ᢠ  
 1  ।饣. ᫨ ࠬ FLAGS  祭 2,   
襭    뢠    ६ odeRezult, ன 
.  襬 ਬ, ⠪  ࠭  1, 䨪  
㤥    ६  ChildID.CodeTerminate,    
ᯮ짮  室 㭨⮦ .

	᫥   ࠬ,      室   ।      
DosExecPgm()      ப,    ன  㪠     ,
  ⨬  ⮢.  襬  砥  ப  "CHILD.EXE".
।,   室  ⮬  ४ਨ,   த⥫.

	 䠩    ।   ⥪饬  ४ਨ. ᫨
䠩 ⠬  ,   樮 ⥬ ஢  ୠ⨢
 㯠  䠩,   㦥 .

	 室 ⬥,      砥  ᪠ ணࠬ 
⢥    ਣ襭  DOS,      CMD.EXE ᯮ
DOSEXECPGM() 㭪   .   㭨ᠫ   OS/2
堭 ᪠ ணࠬ.

	    ⨥ ୥ .
            
	     ᯮ API 㭪 DosKillProcess().
     맢?      砭       㭪樨   EXIT() 
뢠    ﭨ     ୨  .   ⠢    
⢥,   த 쭮        
࠭.  ⮣  -  ᯮᮡ   ᮢ -  
  [CTRL][C]    稢    (  ⮩  樥  
 믮 ).

	᫨    ᠭ  ⠪  ࠧ,     ᠬ 蠥 ᢮
ࠡ  ᫥  ᯥ譮  믮  ,         
ᯮ.  ᫨  ⠪  ⢨     ।ᬮ७   ᠬ ୥
,   襭    த⥫,  ⨢
砥    㤥  㭪樮஢  ᪮筮      
१㧪 ⥬.



	   DosKillProcess.
           
Ŀ
DosKillProcess(Code,ProcessID);                                   
unsigned Code; /* 0 - 㡨 ⠪  ⮬;1-⮫쪮  */  
unsigned ProcessID; /* 䨪 㭨⮦    */  


	⮩  㭪樨  室   ।  ⮫쪮   䨪
୥      ࠬ  Code,  㪠뢠騩    㯨 
⮬  - 㡨     ⢮.

	 㢥    ।饬 ⨨. 
         ᯥ    믮       "᪨"
楤(⠪     ⨥  䠩     ..),   㣨  ᫮
ᯮ ᫥  ਣ७  .   ⠫쭮
ᠭ ⮩   	  12,     
ᨣ.

	   த⥫ - ᫥ ⮬⢮.      CHAPTER  4


	  ⮢ ந쭮 ⢮ , 祬  
 ࠡ ࠫ쭮.

	  ਢ   ਬ,  ॠ騩   㪠   ⠭
ᮢ,    ᫥   ।   ६  ⮢  
ࠧ묨 ᠬ.

	 ணࠬ  ᯮ       .     横
 ⥪饥 ६.

	 ⥪ த⥫᪮ :

/* p3time.c */
/* 3 , 騥 ६ ࠡ ६*/
/* ᯮ ୨                        */
	 ⥪    .  㣮 ᮫⭮  祭,
 ᪫祭  -ch3time2.C,   窨   
  ᫥  ६.

/* ch3time1.c */
/* 뢭 ⠥ ६ */
/* ᯮ த⥫᪨ ᮬ */
#define INCL_DOS
#include <os2.h>
main()
{
  struct _DATATIME now;           /*  DosGetDateTime()    */
     while(TRUE)
   {
     DosGetDataTime(( struct _DATETIME far *) &now);
     printf("[-%d:%d-]",now.seconds,now.hundredths);
   }
}

       㦤  㭪   DosGetDateTime()   ࢮ  :   
頥  ⥬ ᮢ.    ਢ ਬ   ,
⠪   ᯮ 㪠 㭪  ⮡ࠦ  ࠭ ६
  ᥪ㭤        ᥪ㭤.     ᯮ㥬 
  㭪  : printf().

	 㭪  譨  ࠭ ᫥ ࠡ
  ᮢ.
Ŀ
-47:18--47:18--47:21--47:21--47:25--47:25--47:25--47:25
--47:28--47:28--47:28--47:28--47:37--47:37-*47:40**47:4
0**47:40**47:43**47:43**47:43**47:46**47:46**47:46**47:
50**47:50**47:50**47:53**47:53**47:53**47:55**47:55**47
:58**47:58**47:58**47:58**47:58**47:58**47:58**47:58**4
8:00**48:00**48:00**48:00**48:00**48:01**48:01**48:01**
48:03*[48:03][48:03][48:03][48:05][48:05][48:05][48:07]
[48:07][48:07][48:10][48:10][48:10][48:10][48:12][48:12
][48:12][48:12][48:12][48:15][48:15][48:15][48:15][48:1


        ࠭   㦨,        U
ਡ⥫쭮  ⢥  ᥪ㭤.(७     ६   
室  ⮪    ࠧ  横     筮 筮
⥬ ᮢ ).


       ᯮ   ୥ .
--------------------------------------------------------

         ।   ⮢ ,  ⥬   த 믮
᢮ ᮡ⢥ 㭪権.   砭 த⥫᪮  
 室  稫   ⠪ ୨ .  ਬ,
।,   ஭ ⠡ ᭮    뢠  
( 뢠 ELP.EXE),   ஬ 짮⥫  ᬠਢ
࠭ .  㦠 help-䠩  ࣠뢠  ⢨
 짮⥫,    ६   ᭮  த  
஭ ⠡. , ० 祬 ᮮ 짮⥫  砭
⮢  ⠡, த⥫᪨  㦤  砭
୥ ,    ਤ ࣠    室  ⮪
ணࠬ HELP.EXE.

	    ᯮᮡ,     த⥫᪮ 
 㪠 ஡ -  ᯮ짮 㭪樨 DosCWait()  
 砭 . ᫥ 믮 ⮩ 㭪樨  ॢ  
ﭨ  (  뤥 ६  ⮢    
  ४頥)    砭  .      砭  
஡㦤.     㭪 4-3.
Ŀ
                 DosCWait()                           
          Ĵ                Ŀ 
 1                                  
                           
                                                     
               DosExecPgm()       祭    
               Ĵ                    
 2                                            
                                   

. 4-3.
	 , 砭  ண  DosCWait(),  ,
 㭪 頥 த⥫᪮  室 ଠ 
.

        ᪮쪮 ᯮᮡ ॢ   ﭨ  
  㭪樨 DosCWait(). ᬮਬ  㬥.


     DosCWait() -  襭 㣮 .
-------------------------------------------------------

	    㬥    DosCWait()    ६    Scope,   
⠭  0, ᫨ 室  砭 ⮫쪮 㪠
 㭪樨 . ᫨ Scope ࠢ 1     砭  ⮫쪮
,     ⮬.

   ன 㬥,  Wait, ࠢ  0, ᫨  㭪 祣  
頥  砭 ୥ (ᮢ),  ࠢ 1, ᫨
㭪  頥   ,  ᨬ     ⮣    稫
稭       .   ACodes   -       
ReturnCodes.        ᠬ  ,    ᯮ  
DosExecPgm(),    ᯮ      㣮.   
   襭    १.   襭 ਭ
᫥騥 祭:

  	   祭

   0     ଠ쭮 襭
   1     砭  १ ࠢ 訡
   2       
   3     몫祭 DosKillProcess()

	筮  襭 ࠢ 0.
         १ ᯮ  楯窨  ᢮  砭 १
㭪 DosExit().   ⠭   ⮩  㭪樨   ⠫쭮 
᫥饩 .

      ⢥   㬥,   Apid   -   ᯮ      㪠
䨪  ,   ⨢饣  DosCWait().       
⫨    ॡ㥬  ,  ⠪      ୨
ᮬ.

	   ᫥   㬥,   䨪   ,砭
ண  .	᫨     ࠢ   ,     DosCWait  㤥
 ࠢ  ᫥ ⮣,        ୨
ᮢ.

	  ਢ    ணࠬ,    
DosCWait().  ⥫᪨   ୨  ⥬  ᯮ
DosCWait()   砭 ୥ .   ⠥  
࠭ 100 ப  蠥.    ᯮ   exit(99),
DosCWait()  ࠧࠦ  ,    ⠥  饭   ᬥ
୥ .

	 ⨭ த⥫᪮ :
/* pwait.c */
/* c     砭, ᯮ  */
/*					 DosCWait   */
#define INCL_DOS
#include <os2.h>
#define LENGTH 40
#define FLAGS  2
#define ARGS   0L
#define ENVS   0L
#define ACTION 1
#define WAIT   0
main()
{
  char fbuf[LENGTH];
  struct _RESULTCODES ExResult;
  unsigned childID;	    /* childID from DosExecPgm */
  struct _RESULTCODES CwResult;
  unsigned procID;		  /*		 */
  unsigned rc;			  /* return code */
  if(rc = DosExecPgm(fbuf,
	    LENGTH,FLAGS,ARGS,ENVS,&ExResult,"CHWAIT.EXE"))
     { printf("DosExecPgm error = %u\n",rc); exit(1);}
      childID = ExResult.codeTerminate;
      printf("started child\n");
      printf("ProcID =%u\n",childID);
  if(rc = DosCWait(ACTION,WAIT,&CwResult,&procID,childID));
     {printf("DosCWait error=%u\n",rc); exit(1);}
      printf("Child terminated. Process ID =%u\n",procID);
    switch(CwResult.codeTerminate) {
      case 0: printf("ଠ쭮 襭"); break;
      case 1: printf("ଠ쭮 襭"); break;
      case 2: printf("  "); break;
      case 3: printf("DosKillProcess()"); break;
				    }
 }

   ⨭ ୥ :
/* chwait.c */
/* ⠥ 100 ப  蠥 */
#define LINES 100
main()
 {
  int j;
  for(j=1;j<=LINES;j++)
   printf("୨  ⠥ %d  %d \n",
	   j,LINES);
   printf("୨  訫\n");
   exit(99);
  }

   ࠦ ࠭ 뢮 ࠡ  ணࠬ:
 Ŀ
 started child 					  
 Proc ID = 84						  
 ୨  ⠥  1  100 	  
 ୨  ⠥  2  100 	  
 ୨  ⠥  3  100 	  
 ୨  ⠥  4  100 	  
 		........				  
 		........				  
 ୨  ⠥  99   100 	  
 ୨  ⠥  100  100 	  
 ୨  訫.				  
 Child terminated. Process ID = 84			  
 ଠ쭮 襭 				  
 Result code = 99					  
 
	     ⠥
த⥫᪨ ᮬ ⮫쪮 ᫥  , - 祣
 ᬥ訢  室 ⮪ , ..  
ࠡ ࠫ쭮.

               .
--------------------------------------------------
      짮⥫  ᢮ ணࠬ,     ᫥
᪠  樮  ⥬,       ।    㬥
 ப, ਬ ᫥騬 ࠧ:

[>]prog one two

 ⮬ 㬥 one  two  । ணࠬ prog.exe.

     ணࠬ    ⠪  ᯮ짮  ଠ    㦥,
஥  뫮  ⠭  ࠭    PATH    SET.  ਬ,


PATH = c:\bin

樨 饭 ⮩ ப  "㦥", ஥ 㯭  ᥬ
ணࠬ   ࠭ 㯯.

      ணࠬ  몥       㦥 ⠪   
 ப, ⥬ ᯮ짮 ࠬ஢  main() 㭪樨:
    main(argc,argv,envp), 
 argc - ᫮ 㬥⮢   ப;
 argv -  㪠⥫  㬥;
 envp -   㪠⥫  ६ 㦥.

        ணࠬ  ᪠      ப  ,    
ଠ    ।⢥      ப   १
BATCH-䠩.  뫮  ⥫쭮 ᫨  ⢮ ᯮᮡ  ।
 ப  㦥   த⥫᪮    ୨. 
, ᮧ⥫ OS/2 ᯥ稫 ⠪ . ६  ARGS
 ENVS    DosExecPgm 믮 㪠 㭪樨.

	 ਢ ⥪ த⥫᪮ ,   ᪠
୨   ।   ப  㦥.
/* pargenv.c */
/* ᪠ ୨   ।  㦥 */
#define INCL_DOS
#include <os2.h>
#include <stdio.h>
#define LENGTH sizeof(fbuf)
#define FLAG  2 /* ᨭ஭ ०,  䨪  */
  char ArgStr[]="PARGENV.EXE\0 arg1 arg2 arg3\0";
  char EnvStr[]="Temp=c:\\work\\temp\0LIB=c:\\lib\0";
main()
{
  struct _RESULTCODES ChildID;    /*  १饣  */
  har  fbuf[32];
  unsigned rc;			  /*   */
  if(rc = DosExecPgm(fbuf,
	    LENGTH,FLAG,ArgStr,EnvStr,&ChildID,"CHARGENV.EXE"))
     { printf("DosExecPgm error = %u\n",rc); exit(1);}
     exit(0);
}
         ⠭  㪠⥫    㬥   ப 
᪮쪨 ६ 㦥.
       ⥪ ,  뢠  㬥  ᢥ稢 .
/* chargenv.c */
/* ⠥ 㬥, ।  த⥫᪮  */
main(argc,argv,envp)
  int argc;
  char *argv[];    /* 㪠⥫  ப */
  har *envp[];  /* 㪠⥫  ६ 㦥 */
{
   char **ptr;
   for( ptr=argv;argc;argc--) /* ᯮ argc  ⢥ 稪 */
	printf("Arg=  %s\n",*ptr++);/* 㬥⮢     */
				    /* ப                        */
   for( ptr=envp;*ptr;ptr++) /*   ப 㦥     */
	printf("Env=  %s\n",*ptr);/*   㪠⥫  㫥      */
     exit(0);
}
  १ ࠡ 2- ணࠬ:
Arg = PARGENV.EXE
Arg = Arg1
Arg = Arg2
Arg = Arg3
Env = Temp=c:\work\temp
Env = Lib=c:\lib
       ப  㬥⮢  ArgStr  稭      ணࠬ   
稢  㫥   ᨬ  '\0'.C騥        㬥
  ப  ࠧ  ஡   稢  㫥묨
ᨬ(     㢨   ப,  㣮 ⠢
⥬ ).

       ६ 㦥 ᯮ  ப EnvStr.  ࠧ
㫥묨 ᨬ  ⠪ 稢  㫥 ᨬ.

           ᯮ짮      chargenv.c  ணࠬ, ⮡
ᬮ 㬥, ।  ୥    ᪥ 
।⢥  樮 ⥬.  ⮬ 砥,  ணࠬ,
  짮⥫,  㤥    㬥⮬  ப,
६ 㦥  ᫮ ।騬 ਬﬨ 
SET  PATH.

       㬥  ப  ᯥ稢 㤮   ।
ଠ樨    த⥫᪮     ୥  ᯮ짮
 ᫮  ᯮᮡ ᮢ  㭨樨     
।.   ⥫᪨      ⠪  ᮧ  "
।"  ⭮ ୥ , ⫨  ।  ன
㭪樮 த⥫᪨ .


   .
---------------------
        ⥫᪨   ⮢ ᪮쪮   
⮣  ୥  .ਬ,    ᯮ DosExecPgm()
⮢    CHILD.EXE,  ⥬,    㣮 맮 DosExecPgm()
⮢    .    ࠧ,      室 
㭪樮஢  ६  ਬ  ணࠬ.

          ᯮ       ,    
ᥡ ࠧ ࠧ,  ᨬ  ଠ樨 ।   
 ᮧ  㯨襩  ६  ࠡ.

        ਬ,    ஬          ୨
 . , ᯮ㥬 ୨ ᠬ - CHTWINS.EXE.
ணࠬ   ਢ ࠭  P3TIME.C,   ᪫祭 ⮣
   ᮮ⢥騥  㪢,   ६ ,  
 ᯮ   ୨    ᯮ     
䠩  ᪠ .

     ਢ ⥪ த⥫᪮ :

/* ptwins.c */
/*   ਬ   ⮣  ୥  */
/* 뢭 ⠥   ࠭                          */
#define INCL_DOS
#include <os2.h>
#define LENGTH 40
#define FLAGS  1
#define ENVS   0L    /*  ६ 㦥 */
#define KILLALL 0    /* 㭨⮦    ⮬ */
main()
{
  char fbuf[LENGTH];              /*   쥪⭮ ,
                                     㤠筮 襭 */
  struct _RESULTCODES childID1;   /*  1- ⮬        */
  struct _RESULTCODES childID2;   /*  2- ⮬        */

  unsigned rc;			  /*              */
  if(rc = DosExecPgm(fbuf,
	    LENGTH,FLAGS,"-",ENVS,&childID1,"CHTWINS.EXE"))

     { printf("DosExecPgm error1 = %u\n",rc); exit(1);}
	       /*  ண ਬ ୥  */
  if(rc = DosExecPgm(fbuf,
	    LENGTH,FLAGS,"*",ENVS,&childID2,"CHTWINS.EXE"))
     { printf("DosExecPgm error2 = %u\n",rc); exit(1);}



     while(!kbhit() )     /*        */
     printf("X");
			  /* 㭨⮦ ⮬⢠ */
  if(rc = DosKillProcess(KillAll,childID1.codeTerminate) )
     { printf("DosKillProcess error1= %u\n",rc); exit(1);}
  if(rc = DosKillProcess(KillAll,childID2.codeTerminate) )
     { printf("DosKillProcess error2= %u\n",rc); exit(1);}
  exit(0);
}

        ⥪     .   㣮 ᮫⭮ 祭.
      ,   ⮩ ணࠬ ᯮ    ⮣ 
䠩    饭  DosExecPgm(). X ᯮ짮 
  ⮦    ,  饭    ࠧ  䨪  , ⠪ 
⨢஢  ࠧ .

          뫠    ப,      ⢥
ᨬ-㬥.    ⮣, ⮡   ࠧ 
  쭥襬.

         祭   ᫮.    1- ᨬ   ப 
⠥   ࠭.  - ⥪ ணࠬ   ⮬:

/* chtwins.c */
/* 뢭 ⠥ ᨬ, ।   ப */
/* த⥫᪮   */
#define TRUE 1
main(argc,argv)
int argc;
char *argv[];
{
     while(TRUE)
     printf("%c",*argv[0]);
}
	室  ⮪  ᫥  ⮣    PTWINS  ࠡ⠥ 룫廊
ਬ୮ ᫥騬 ࠧ:

Ŀ
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX--------------
--------**********************************XXXXXXXXXXXX
XXX------------------------------*********************
*******************XXXXXXXXXXXXXXXXXX-----------------
*********XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX--
--------------------**********************************
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
--------------------**********************************
***************XXXXXXXXXXXXXXX------------------------
-----------------------*******************************
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX------------------
************************XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
X-----------------------**********************XXXXXXXX
XXXXXXXXXXXXXX----------------------------------------
---------------*****************XXXXXXXXXXXX----------


	  室  ⮪         3   
ᯮ ࠭   ஢騪 । ६ CPU  .

	 㯮  ࠭   ࠧ稨   ணࠬ  ᮬ.
 ਢ 室 ⮪  ન  ࠧ稥.    
⮫쪮   ணࠬ -  䠩 CHTWINS.EXE.      2  
ᯮ  䠩:  ⠥ , 㣮 - '*'.

                       

	 ਠ  ⥬ ।饩 ணࠬ.  ࠧ ࠭
 ᠬ   ᯮᮡ:      ᮢ ᯮ
  ப    ᢥ稢  ᢮  .    ᢥ稢 ᫮
""   孥 ப  ࠭, 1-  ⮬ ᢥ稢 ᫮
"1"    ।  ࠭    2-  - "2"   ப
࠭.    ᢥ稢 ᢮   ࠧ ࢠ.

/* pflash.c */
/* ᪠     */
/* ᢥ稢  ணࠬ  ࠭*/
#define INCL_DOS
#define INCL_SUB
#include <os2.h>
#define LENGTH 40
#define FLAGS  1   /* ᨭ஭ , ஢ 몫.   */
#define ENVS   0L  /*  ६ 㦥                 */
#define COUNT  10  /* ⢮ 横 栭               */
#define ROW    5   /* ப ࠧ饭 饣 ᮮ饭   */
#define COL    35  /*     ⮫   ᮢ */
#define HANDLE 0   /* vio, ࠬ handle ᥣ 0            */
main()
{
  char fbuf[LENGTH];
  struct _RESULTCODES childID;    /* ।  doscalls.h */

  unsigned cell = 0*0720;
  int j;
  unsigned rc;			  /*   */
  VioScrollUp(0,0,-1,-1,-1,(char far *)&cell,HANDLE),
				  /*  1-  */
  if(rc = DosExecPgm(fbuf,
	    LENGTH,FLAGS,"1",ENVS,&childID,"CHFLASH.EXE") )
     { printf("DosExecPgm error1 = %u\n",rc); exit(1);}
				  /*  2-  */
  if(rc = DosExecPgm(fbuf,
	    LENGTH,FLAGS,"2",ENVS,&childID,"CHFLASH.EXE") )
     { printf("DosExecPgm error2 = %u\n",rc); exit(1);}
			    /*    ࠭ */
      for(j=0;j<count;j++)
     { VioWrtCharStr("Parent",6,ROW,COL,Handle);
       DosSleep(500L);
       VioWrtNChar(" ",6,ROW,COL,HANDLE);
       DosSleep(500L);
      }
     exit(0);
   }

       樨   室  㭨⮦ ⮬,  ⠪
  ᠬ ᯮ    ᢮  ⨨ ᫥ ࠡ⪨ 
᫠ 横.       ᯮ   :

/* chflash.c */
/* ୨   pflash.c */
/* ᢥ稢  ணࠬ  ࠭*/
#define INCL_DOS
#define INCL_SUB
#include <os2.h>
#define COUNT  10  /* ⢮ 横 栭               */
#define COL    35  /*     ⮫   ᮢ */
#define HANDLE 0   /* vio, ࠬ handle ᥣ 0            */
main(arg,argv)

  int argc;
  char *argv[];
{
  unsigned cell = 0*0720;
  int row;
  int j;
  unsigned long delay;

  if (*argv[0] =='1') {
     row = 10;
     delay =600L;
  }  else {
     row =15;
     delay = 700L;
  }
			    /*    ࠭ */

      for(j=0;j<count;j++)
     {
      VioWrtCharStr("",5,ROW,COL,Handle);
      VioWrtCharStr(argv[0],1,row,col+5,HANDLE);

       DosSleep(delay);
       VioWrtNChar(" ",6,ROW,COL,HANDLE);
       DosSleep(delay);
      }
     exit(0);
   }

      ।   ஬  饭(1  2),  ᯮ
।    㬥    ப.  ⥬  砥   ᥡ
ᮮ⢥    ப  뢮     ६  প.    
த  ࠡ  ᪮쪮  ,祬  த⥫   짮⥫ 
  ࠢ  ࠭  뢮        ᫥  
.


		         .

	ਮ  ।   ஢騪  
  ᯮ짮  設.  ਮ 砥  
稭  -   ஢.

              -    ॣ, ᪨ .
樮  ⥬  ਭ    ⨬  ﬨ   ᫥騥
᫮ 稭

	祭    
	  1         
	  2         ॣ
	  3         ᪨

	設⢮ ணࠬ   ॣ ,    
㬮砭.    , ᫨   ⮡ ணࠬ     
뫠 ࢠ     ᢮  ᪨ .   
    ᢮  ணࠬ  ࠢ 娬᪨ ॠﬨ 
ணࠬ ࠭ 䠩  ᡮ ய⠭.

	  㣮  ஭,  ᫨     ॡ  ப
믮 ணࠬ,     饭    ०.  
砥   ணࠬ 㤥 뤥 ६ CPU ⮫쪮  
ணࠬ  ᪮    ॣ୮  ᮢ    㦤    
㣠.

       ।   ਮ⮢  32 ஢:0-31.
 筮 ᪠  㫥 ஢. ᫨   ⠭
ਮ      䠩   䨣樨   CONFIG.OS2       祭
priority = dynamic,  ਮ⠬ ࠢ CPU.

       ᫨     㦤    ஬  㯥   ᠬ
(,࠭,᪮  䠩    ..),   CPU  㢥
ਮ . ᫨  CONFIG.SYS  ਮ,  ⠭ 
祭 absolute,   樮  ⥬     ஢
ਮ⮢ ᮢ. 筮 ਮ ⠭  DYNAMIC.

   ᯮ ਮ⮢.
------------------------------
	  ਬ  ணࠬ,    ᮮ頥  ᢮   ᮡ⢥
ਮ     ਮ     㣮  ⨢   ணࠬ,  祩
䨪  .  뢠   㬥⮬  
ப:   䨪஬    ID.  ᫨  ID=0,   ।
ਮ ᠬ .

/* getprior.c */
/* 頥 ਮ 㪠  */
#define INCL_DOS
#include <os2.h>
#define SCOPE  0   /* ࢠ 楯                     */
main(arg,argv)

  int argc;
  char *argv[];
{
  unsigned rc;
  unsigned priority;
  unsigned processID;  /* 0-뢠  ⥪騩       */


  if (arg != 2)
     {printf("⠪᪠ 訡  getprior processID\n");exit(1);
     }

    processID = atoi( argv[1]);

   if (rc = DosGetPrty(SCOPE,&priority,processID ) )
     {printf("DosGetPrty error = %u\n",rc);exit(1);}
   printf("Class = %u\n",priority>>8 & 0*00FF);
   printf("Level = %u\n",priority & 0*00FF);
}


	 ⮣, ⮡ । ਮ   䨪஬
ID=61 室 믮 ᫥騩 :

[c>]getprior 61

    class=2

    level=0

᫨  ⠥ ᯮ짮 ணࠬ  । ਮ
⨢  饣 ,  㤥 ᮮ饭  訡
303:'invalid process ID'.

   DosGetPrty - 祭 ਮ   楯.
-------------------------------------------------------
Ŀ
  DosGetPrty(Scope,APriority,ID);                                 
unsigned Scope;            /* 0 -  2 - ।  */
unsigned far *APriority;        /*  ⮢   ஢ */
unsigned ID;/*   楯 䨪 (0- ᠬ ᥡ)


	㭪  DosGetPrty()  ॡ  ।  ࠬ  Scope.
㫥  祭  ⮣  ࠬ  ᮮ⢥ 祭 ਮ
ࢮ  楯    .    ⮬ 砥 ࠬ ID ⠭
ࠢ  祭  ਮ  ᠬ  .(      襬
ਬ).  祭 2   ࠬ Scope 뢠,   室
। ਮ  쭮  (particular) 楯  ;   ⮬
砥      ID   頥   䨪   .   ⢨⥫쭮
ᯮ㥬묨 祭ﬨ  ID  ⮫쪮 0  2. 設  ᫮
APriority 砥  襬   祭    襬  
祭 ஢.

       .
----------------------------------

        ᮢ  ⠪    ᢮  ਮ 
ਮ  㣮  ,  ᯮ  DosSetPrty()  㭪.  
㭪 ᯮ  4 㬥.  1- Scope   ਭ   
3- 祭:

   祭   SCOPE
   0 - ᠭ     楯窨
   1 - ᠭ     ⮬
   2 - ⢥ 楯  ⨢ 

	ன ࠬ   CLASS  -   祭 ।﫨 ࠭
  ,  ॣ    ᪨.  ⥫쭮, ᫨ 
⠭  0,    ᫥饬  㤥  
ࢮ砫 ⠭.

   DosSetPrty - ⠭ ਮ⮢   .
-------------------------------------------------------
Ŀ
 DosGetPrty(Scope,Class,Delta,ID);                                 
unsigned Scope;  /*  ⢨ */                              
unsigned Class;  /* 砥  */                             
unsigned Delta;  /* 砥  ஢( -31  +31)*/    
unsigned ID;     /* 䨪   楯 (0-⥪騩)*/  

	3- ࠬ,  Delta, 砥  稭   ⥪饣
஢.   ᠬ  ஢  祭   0  31,   
 Delta ਭ 祭  -31  31.   ᫥ ࠬ
- ID.  । 䨪 , ᫨ Scope ࠢ 0   1,
 䨪 楯  ⥪饣 , ᫨ Scope ࠢ 2.

	 設⢥ 権  室 ਪ ணࠬ
    ᢮  ਮ.     ᫥ 뢠, 
᪨       室   ணࠬ,  ⢥騬   
ࠢ     祭       譨   ன.  
ணࠬ ॡ騬 襣  CPU   騬   ਮ
筮   .

                            .
           
	  ࢮ    뫮  ,     DETACH
᪠      DIR      SORT     䮭 ०.設⢮
⨫     ᪠     䮭  ०(),     ᫨     
ᯥ樠쭮     ᮧ     ⮩  楫.        ਠ
ᮧ     ணࠬ,     ᯥ樠쭮     ।祭          
㭪樮஢     䮭  ०.

        ᫠ 騩     騩
   짮⥫        ⮬     ᠭ       
䮭  ०.  ணࠬ   ஢, ணࠬ 騥   
ࠧ       ⢥    䠩           ணࠬ  設
 -     ࠡ    䮭  ०.

     ⬥⨬,          ࠡ ணࠬ     䮭 ०    
᫥               ਮ.         ᠬ
ᢠ   ॣ      ஢,  筮   
ᠬ.

          砥  ࠡ          ,   祭      
室   ࣠    ⢨    짮⥫.    
ਬ  ਢ    䮭  室,   
 㪮  ᨣ   ᢮ 襭.  ਪ ணࠬ  
।祭    䮭   権      ࠡ        
    ⮣.         ணࠬ   ᯥ樠쭮  
ࠡ       ந        .

      ⮩  楫    OS/2     㭪   VioPopUp(),  
뢠   ६              ࠭          .
     뢠      㭪             ந室
⪠     ࠭           蠣 짮⥫     뢠
    ࠭      . ⢨  祭  
⠭  ।饥   ﭨ   ࠭       㭪樨
VioEndPopUp().  㭪 4-4   ।⠢  來.

 Ŀ
     Ŀ Ŀ Ŀ    
 ࠭                           
        
 ........................................................                                              	  
                                                       
  㯠Ŀ       Ŀ    
  ࠭  䮭        ĳ               
               
                                                                                                              
                                                                                                              
                     VioPopUp()	  VioEndPopUp()                                    			  
                 					  
 
 㭮 4-4.

          ਢ   ਬ    让   ணࠬ,     
   ࠧ            䮭 ᠬ.
ࠧ ᫥   ணࠬ     প   10 ᥪ㭤    ⥬
    ᢮  ⢮  ᢥ稢  .    
,  ணࠬ     짮⥫         ᨬ,
᫥ 祣    㤠,  ⠭   ।饥 ﭨ
࠭         ᯥ譮   蠥.
/*  popup.c */
/*   10 ᥪ㭤, ⥬ ᢥ稢  */
#define INCL_DOS
#define SUB_DOS
#include <os2.h>
#define DELAY 10      /* প  10 ᥪ㭤                  */
#define HANDLE 0      /* ࠢ騩 ࠬ  vio ᥣ = 0  */
main()
{
  unsigned WaitFlags = 0;
     printf("popup.c 㤥  %d ᥪ㭤   .\n",DELAY);
     DosSleep(Delay*1000L);
     VioPopUp(WaitFlags,HANDLE);
     printf("popup.c   %d ᥪ㭤   .\n",DELAY);
     printf("   ⮡ த.\n");
    while(!kbhit() )

     VioEndPopUp(HANDLE);
     exit(0);
}

                     ணࠬ      ᪮쪨
ᯮᮡ:   -,   ⥬  ࠢ       ணࠬ    
  ப
          c>popup;
  뢠    popup-     ࠭.           
       ࠭   ஢,⠪      ணࠬ      
砭   প,     㭪樥  DosSleep().   -,
     ணࠬ      ,   ᯮ     DETACH.
   ⮬    砥   OS/2    ᮮ      䨪   
।  ࠢ  襩   (),          ६ 
popup.c 㤥  த   ᢮ ࠡ.  ᫥ প   popup-,
      ,   ࠭   㤥   襣
  .

      ⨩    ᪠    ணࠬ  -  ᮧ  ⤥쭮
࠭ 㯯.   ⮢ ணࠬ    ࠭ 㯯,  ,
ᯮ  ᥠᮢ 室   ࠭ 㯯.  
 ६  POPUP.C ࢥ  ࠡ ࠭  㯯   ன 
室.

    VioPopUp - 㭪 ᮧ ᯠ .
    
Ŀ
 VioPopUp(AWaitFlags,Handle);                         
unsigned far *AWaitFlags;  /*  ᫮ 䫠  */  
unsigned short Handle;     /* vio handle ᥣ 0 */  

          AWaitFlags      ⮫쪮         祭  
뢠 ᨨ OS/2(V  1.0):  祭  0 뢠,    
㯭  ,     ஥   ६      
.HANDLE 㬥,    㣮 VIO 㭪樨 ᥣ ࠢ  0.
    ᨨ  OS/2    ⢨⥫쭮  롮   ᯮ짮
ࠬ஢ 㭪樨 VioPopUp(). 㭪 VioEndPopUp()    
-   ⮫쪮  塞 ࠬ.

   VioEndPopUp - 㤠 .
-------------------------------
Ŀ
VioEndPopUp(Handle);                                    
unsigned short Handle;     /* vio handle ᥣ 0 */    

ணࠬ-.
----------------------
       ணࠬ    ᯮ짮  ᥤ ࠡ.   
   㪠  ணࠬ,  ࢥ  ࠡ,  ⮡
      뢥 ⮢   ࠭  ᮮ饭.  
ᮮ饭         ࠡ    祭
.


/*  remind.c */
/*  뢮     㪠 ६ */
#define INCL_DOS
#define SUB_DOS

#include <os2.h>
#define FREQUENCY 100   /*       DosBeep()                 */
#define DURATION  3000L /*       DosBeep()                 */
#define HANDLE 0        /* ࠢ騩 ࠬ vio ᥣ = 0*/
#define BUFFLEN   80    /*  ப             */
#define MSECS 60000L    /* ᥪ㭤                 */
#define MSECS 60000L    /* ᥪ㭤                 */
#define WAIT      0     /* 0 -  1 -           */

char s1[] = "\n\r   㪠  .\n\r";
char s2[] = "\n\r (1-24)";
char s3[] = "\n\r :";
char s4[] = "\n\r ᮮ饭(   ப)\n\r"
char s5[] = "\n\r!!!\n\r"
char s6[] = "\n\r⮡ த,   \n\r"
main()

{
 struct _STRINGINBUF length; /*  bsesub.h */
 struct _KBDKEYINFO keydata; /*  bsesub.h */
 struct _DATETIME   datatime /*  bsedos.h */
int hour,minute; /*    ,  짮⥫ */
unsigned long now,then; /* ६  ᥪ㭤            */
char string[BUFFLEN];   /*   짮⥫         */
unsigned WaitFlags =0;  /*  VioPopUp()                   */

VioPopUp(&WaitFlags,HANDLE);
VioWrtTTY(s1,strlen(s1),HANDLE);
			/*    */

VioWrtTTY(s2,strlen(s2),HANDLE);
length.cb=BUFFLEN;
KbdStringIn(string,&length,Wait,HANDLE);
string[length.cchIn]= '\0';
hour =atoi(string);
if (hour>23||hour<0)
    {printf(" ⮫쪮  ࢠ  0  23\n"); exit(1);}
			/*    */
VioWrtTTY(s3,strlen(s3),HANDLE);
KbdStringIn(string,&length,Wait,HANDLE);
string[length.cchIn]= '\0';
hour =atoi(string);
if (minute>59||minute<0)
    {printf(" ⮫쪮  ࢠ  0  59\n"); exit(1);}
			 /*  ᮮ饭 */
VioWrtTTY(s4,strlen(s4),HANDLE);
KbdStringIn(string,&length,Wait,HANDLE);
string[length.cchIn]= '\0';
		    /*     ⨥  */
VioEndPopUp(HANDLE);
		    /* "믠"  㪠 ६ */
then =(hour*60 +minute)*MSECS;
DosGetDateTime(&datetime);
now =(datetime.hours*60 +datetime.minutes)*MSECS;
DosSleep(then - now);
		    /* ᢥ稢 ᮮ饭 */
VioPopUp(&WaitFlags,HANDLE);
VioWrtTTY(s5,strlen(s5),HANDLE);
VioWrtTTY(string,strlen(string),HANDLE);
VioWrtTTY(s6,strlen(s6),HANDLE);
DosBeep(FREQUENCY,DURATION);
		    /*    */
KbdCharIn(&keydata,WAIT,HANDLE);
VioEndPopUp(HANDLE);
xit(0);
}
       ணࠬ    ⥭樠  䫨⮢  ⥪
ணࠬ 몠 C, ᯮ ᪫⥫쭮 API 㭪樨.⬥⨬ , 
    ணࠬ  API  㭪樨    ஫ 頥 
訡.   㦤 뫨         ⨭  ணࠬ,
⮡  ᤥ    筮    ⠥.  ᫨   
ᯥਬ஢      ணࠬ       
ࠡ⪥ 頥  訡 ᠬ.

       ⥩訩 ᥠ ࠡ  remind.exe  룫拉  ᫥騬
ࠧ:

>detach remind
B (1-24):13
B :30
 ᮮ饭(   ப):
    

       13.30, 祬       ᢮ ,  
ᮮ饭    祭 ,  ᮯ஢ 㪮  ᨣ.
᫥  ⮣,      ਪ᭥   , 쭠 ணࠬ
த ࠡ  ⮣   ஬  ࢠ.

      Remind.c   饭   䮭 ०    ⤥쭮
࠭  㯯.           ணࠬ     ࠧ筨
ᮮ饭ﬨ ⮫쪮  ࠧ, ᪮쪮  ⠥ 室.    ਬ
⮩  ணࠬ    ᯥ譮  㭪樮஢   ६,뢮
ᮮ饭    .

   쭥訥 ᫨   ᮢ.
----------------------------------------

        ᬮ५  筮  ⢮  ਬ஢ ᯮ짮
ᮢ,  ⮣ ⮡       㦤    楫.

  - ᫥ ᮢ.

       ,  ணࠬ    ⥬,
⠪   MS DOS,   ᢮  ᮡ⢥ .   ᠬ  
  । ᮡ⥩  ᮢ:  ᯮᮡ   ᢮
ᮡ⢥ .    ?     䠩,
 ணࠬ,  㯭      譨 ன⢠(⠪
  ਭ    ࠭).          ᫥
୨  ᠬ    ।   த⥫    ࠢ.    
⭮, ᫨ த⥫᪨   䠩  ,  
 । ୥ .  䠩  㡠  ᪠ 
஡  ᫥ .

  -  ᮧ ᮢ.

      C  ᮢ      DosExecPgm() ந室,  
⨫    ਬ஢    ,   ⠪ .믮塞 䠩
  ⠭  ᪠, ⥬   ந  ⥫쭠
ࠡ    ॣ樨  :    ४஢ 室
⠡  ᥣ⮢.

          㦤 楯,     ભ,   
 稭   ⢥  楯. ⥬      
ࠫ ᪮쪮 ⥩.

       ⨢ ᮧ  ᮢ, ஥ 筮
, ᮧ   楯祪  祭 .        
  ᫥饩 .    ᨬ  㣨 ᮢ.
筮  祣      㣨 , 㭪樮   
६(    ᪫祭  ୨  ᮢ,      ᠬ
⮢).   , ᫨ 襭 ਭ ࠭,   
ᯮ짮 ᮢ ।⢠ 㭨樨  裡   㣨
ᠬ.

  - ᮢ 㭨樨

	  㦥  㢨,      । 㬥 
ப  ࠬ 㦥 ᢮ ⮬.    ᫮
ᯮᮡ 裡   ᠬ.  ⮤   ࠧ塞
,    ।.      ⠪ न஢  ᢮
⥫쭮  ᯮ  ᥬ    ᨣ.    ᬮਬ  
⮤  ᫥ .

  - 祬 ᯮ ?

	祬   室 ⮢  ⤥ ?
  稭   室   䥪⨢ ᯮ짮
.  ᫨ ⤥쭠   襩 ணࠬ  㦤   ,
⥬ ࠪ⨪     襭    㧪  ⮩
 ணࠬ    .    ᠬ   ணࠬ  
 ᫨誮 让, ⮡ ࠧ    楫.    ᫨
 ணࠬ -  , OS/2 㤥 ⮬᪨ ४稢
   ,, ᫨   ணࠬ 뤥  ᠬ⥫
,  ⢥⢥    ४  ଠ樨    ,     
     䥪⨢ ࠢ  ᠬ ⥬.
樮 ⥬  筮 ᢮쭮  蠥    襩
ணࠬ 뢠   , ᭮뢠 ⮫쪮   ⮬   
ணࠬ   ᥣ  ᯮ짮  ᫥ ६.   
ࠢ  ⥬  ᠬ,  ᮧ       㭨⮦     
室.

	  ⠪  楫ᮮࠧ  ᯮ짮    㭪樮쭮
ᨬ    ணࠬ.     ਬ,    ணࠬ  
⤥묨   㫥   ࠡ⪨   㯨    ⮢      㫥
ਧ樨 楫ᮮࠧ 믮   2 ᮢ. , ᫨ 
襩  ணࠬ  ᮧ  ⥣஢  ।,   ᥡ
஭  ⠡,    ,  ⥪⮢    ணࠬ
⥫㭨樮 㯠,     믮  㫨  
 ⤥ ᮢ, 뢠  ⮫쪮  砥 室.

	-    "  室"   ᮧ ᮢ,
  楫ᮮࠧ  ᯮ짮   ⮫쪮    ᭮   ᥪ権
ணࠬ,  뢠  祭 . ணࠬ, ࠧࠬ
  ॢ室  㭪  筮  ଫ      楯,    
.

  - ᠭ ᮢ  몥 

	  몠      Microsoft    IBM    OS/2  ᭠
⥪  㭪権,       ⮬  API   㭪権
㦤   .   ⭮,  ᮧ  ୥
    ᯮ짮      ᥬ⢠  㭪権
몠    -  spawn(),spawnle(),   spawnlp()    ..     㭪
  ।    ୨    ࠬ  
ࠧ묨  ᯮᮡ.    㭪樨   묨 ﬨ
 㭪権  ᥬ⢠ exec(),     ⠪  ஫
   ୨   ᮢ   ࠡ   ᨭ஭(       
ࠫ쭮)  ᢮ த⥫ﬨ.

                   

    ⮩   ᭮   뫮  䮪஢   .
ᠬ  뢠  ࠡ騥   ணࠬ.       
ਬࠬ த⥫᪨ ᮢ,       ୨
ᮢ ᯮ DosExecPgm(). 㣨 ਬ ஢,  
  । ﭨ ୥ , ᯮ DosCWait()
 㡨 , ᫨  室   DosKillProcess().   ⠪
ᬮ५  । ࠬ஢  ப   ६
ᠭ  ।    த⥫᪮      ୥,  
ਮ⮢ ᮢ   DosGetPrty()  DosSetPrty().  ,
 㢨   䮭  ᯮ  VioPopUp()  VioEndPopUp()
 ᯮ짮 popup   裡  譨 ஬.

      ᫥饩    ६⨬     ᮢ,  
ࠢ⥫쭮   㯭⠡,            -    
⨧筮.      ࠢ         ப
ਬ, 祬 .