Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
$B%W%m%;%9$H%Q%$%W(B
[go: Go Back, main page]

$B%W%m%;%9$H%Q%$%W(B

$B%7%9%F%`!&%W%m%0%i%`(B

                                       $BEE;R!&>pJs9)3X7O(B
                                       $B?7>k(B $BLw(B
                                       <yas@is.tsukuba.ac.jp>

$B$3$N%Z!<%8$O!" http://www.hlla.is.tsukuba.ac.jp/~yas/coins/syspro-2001/2001-05-07
$B$"$k$$$O!" http://www.hlla.is.tsukuba.ac.jp/~yas/coins/
http://www.is.tsukuba.ac.jp/~yas/index-j.html

$B"#0u:~G[I[;qNA(B

$B"#I|=,(B

$B"#:#F|$N=EMW$JOC(B

$B%W%m%;%9$N9M$(J}$HA`:n(B

$B"#JaB*(B--$B?t$NF~=PNO(B

Unix $B$N(B read(), write() $B%7%9%F%`%3!<%k$O!"!V%P%$%HNs!W$rFI$_=q$-$9$k$b(B $B$N$G$"$k!#(BUnix $B$G?t$rFI$_=q$-$9$k$K$O!"
  • $B%P%$%J%j$N$^$^!#(Bint $B$J$i#4%P%$%HFI$_=q$-$9$k!#%U%!%$%k8~$-!#(BRPC$BJ82=!#(B
  • ASCII $BJ8;z$NJB$S$KJQ49$9$k!#%-!<%\!<%I8~$-!#(Btelnet $BJ82=!#(B

    $B%-!<%\!<%I$GBG$F$k$N$O!"(BASCII $BJ8;z$NJB$S$G$"$k!#%-!<%\!<%I$+$i(B int $B$r(B $BFI$_$?$$;~$K$O!"J8;z$NJB$S$H$7$F$^$:FI$_9~$_(B(fgets())$B!"

    scanf() $B$O!"?M4V$,BG$D!"4V0c$$!J0U?^E*$J967b!K$r4^$`2DG=@-$,$"$k>l=j$G(B $B;H$&$Y$-$G$O$J$$!#(B

    $B5!3#8l=xO@$N(B spim (xspim) $B$N%7%9%F%`%3!<%k$O!"FC

    $B"#%W%m%;%9$H$O(B

    $B"!%W%m%0%i%`$H%W%m%;%9(B

    $B%W%m%;%C%5(B($B#C#P#U(B)$B$,]$K$J$C$?$b$N$G$"$k!#(B

    $B%a%b%j$K%W%m%;%9$,#3$D!

    $B?^#1(B $B%W%m%0%i%`$H%W%m%;%9(B

    $B%W%m%;%9$K$O!"J]8n!";q8;3d$jEv$F$N$h$&$J5!G=$,$"$k!#(B

    $B"!J]8n(B

    $B$"$k%W%m%;%9$,(B $BK=Av(B $B$7$FB>$N%W%m%;%9$rGK2u$7$?$j!"$"$k$$$O!"0U?^E*$KB>$N%W%m%;%9$+$i%G!<%?(B $B$rEp$b$&$H$7$?$H$7$F$b!"$=$l$r6X;_$7$F%W%m%;%9$r@\B>$N%W%m%;%9$N%a%b(B $B%j$J$I$K%"%/%;%9$G$-$J$$$h$&$K%W%m%;%9$H%W%m%;%9$r3VN%$9$k!#(BUnix $B$G$O!"(B $B4pK\E*$K$O%W%m%;%9$4$H$KFHN)$7$?O@M}%"%I%l%96u4V$r3d$jEv$F$k$3$H$G$B"!;q8;3dEv$F(B

    $B;q8;$H$O!"(B $B%a%b%j!"%G%#%9%/!"%W%j%s%?!"%G%#%9%W%l%$!"%-!<%\!<%I$J$I(B $B%3%s%T%e!<%?$,=hM}$r?J$a$k>e$GMxMQ2ACM$N$"$k$b$N$rAm>N$G$"$k!#(B $B%W%m%;%9$O!";q8;$r8xJ?$KG[J,$9$k$?$a$NC10L$H$7$F$NLr3d$,$"$k!#(B

    $B"!%W%m%;%9$NA`:n(B

    $B%W%m%;%9$NA`:n$K$O
  • $B?7$7$/%W%m%;%9$r:n$k(B(fork())$B!#%W%m%0%i%`$r $BF0$$$F$$$k%W%m%;%9$rD4$Y$k(B(ps $B%3%^%s%I(B)$B!#(B
  • $BF0$$$F$$$k%W%m%;%9$r;&$9(B(kill$B%3%^%s%I!"(Bkill$B%7%9%F%`%3!<%k(B)$B!#(B
  • $BF0$$$F$$$k%W%m%;%9$r0l;~E*$K;_$a$k(B(kill$B%3%^%s%I!"(Bkill$B%7%9%F%`%3!<%k(B)$B!#(B
  • $B0l;~E*$K;_$^$C$F$$$k%W%m%;%9$N $B%W%m%;%9$NM%@h=g0L$rJQ$($k(B(nice$B%3%^%s%I(B)$B!#(B
  • $B%W%m%;%9$N

    $B"!%W%m%;%9$r:n$m$&!a!a%W%m%0%i%`$r

    $B%7%'%k$K%3%^%s%I$rM?$($k$H!"$=$l$KBP1~$7$?%W%m%;%9$,:n$i$l!"(B $B$=$N7k2L%3%^%s%I$,/bin/ls $B$d(B/usr/bin/ls $B$J$I$N%U%!%$%k$KJ]B8$5$l$F$$$k(B ) $B$,%a%b%j$KFI$_9~$^$l$F$B"!%W%m%;%9$N4Q;!(B

    $B"!%W%m%;%9$NB0@-(B

    ps(process) $B%3%^%s%I$r
    ----------------------------------------------------------------------
    % ps [$B
       PID TTY     TIME CMD
      9086 ttyq1   0:00 cat 
      9084 ttyq1   0:00 emacs 
      9123 ttyq1   0:00 ps 
      9072 ttyq1   0:01 tcsh 
    % []
    ----------------------------------------------------------------------
    
    ps$B%3%^%s%I$N
    PID ($B%W%m%;%9<1JL;R(B)
    $B%W%m%;%9$r6hJL$9$k$?$a$N(B16$B%S%C%H$N@0?t!#(B0$B!A(B65535$B!"$^$?$O!"(B0$B!A(B32767$B$NHO0O!#(B
    TTY ($BC(B)
    $B%W%m%;%9$,$I$NC/dev/ttyq1$B$O(B ttyq1$B$N0UL#!#(B
    TIME
    CPU$B;~4V(B (CPU$B$,$=$N%W%m%;%9$rCOMMAND
    $B$=$N%W%m%;%9$r5/F0$7$?;~$N%3%^%s%I!#(B

    $B"!%W%m%;%9$H;q8;(B

    $B%W%m%;%9$K$O%a%b%j$d(BCPU$B$J$I$N;q8;$,3d$jEv$F$i$l$k!#(B $B$3$l$O(Bps$B%3%^%s%I$K(B-l$B%*%W%7%g%s$r$D$1$k$HI=<($5$l$k!#(B
    ----------------------------------------------------------------------
    % ps -l [$B
      F S   UID   PID  PPID  C PRI NI  P    SZ:RSS      WCHAN TTY     TIME CMD
     b0 T  1231  9155  9153  0  60 20  *   462:106          - ttyq1   0:00 man 
     b0 T  1231  9086  9072  0  60 20  *    50:28           - ttyq1   0:00 cat 
     b0 T  1231  9084  9072  0  60 20  *  2114:849          - ttyq1   0:00 emacs 
     b0 T  1231  9153  9072  0  60 20  *   462:108          - ttyq1   0:01 man 
     b0 R  1231  9161  9072  4  62 20  0   405:160          - ttyq1   0:00 ps 
     b0 T  1231  9156  9155  0  60 20  *    78:44           - ttyq1   0:00 sh 
     b0 T  1231  9157  9156  0  60 20  *   519:210          - ttyq1   0:00 less 
     b0 S  1231  9072  9070  1  39 20  *   703:324   8027eb80 ttyq1   0:01 tcsh 
    % []
    ----------------------------------------------------------------------
    
    TIME $B$O2a5n$KMxMQ$7$?(B CPU $B;~4V$N3d9g!"(B SZ $B$O!"%W%m%;%9$,3NJ]$7$F$$$k%a%b%j!"(B RSS$B$O!"$=$N$&$A%a%$%s%a%b%j$KF~$C$F$$$kItJ,$G$"$k!#(B

    S $B$O!"(B $B%W%m%;%9$N(B $B>uBV(B (STATe) $B$G$"$j!"

    R (runnable)
    $BuBV!#(BCPU$B$,6u$$$F$$$l$P D (Disk)
    $B%G%#%9%/F~=PNO$r9T$J$$!"$=$N40N;$rBT$C$F$$$k>uBV!#(B
    S (Sleep)$B!"(BI (I)
    $B%-!<%\!<%I$dB>$N%W%m%;%9$+$i$NF~NO$rBT$C$F$$$k>uBV!#(B
    Z (Zombie)
    $B4{$K=*N;$7$F$$$F!"=*N;=hM}$N40N;$rBT$C$F$$$k!#(B
    T (Traced)
    $B0l;~E*$KDd;_$7$F$$$k$+!"%G%P%C%0$NBP>]$K$J$C$F$$$k!#(B
    Irix $B$K$O!"$=$N$[$+$K(B 0, X $B$J$I$,$"$k!#(B

    $B"!%W%m%;%9$N?F;R4X78(B

    Unix $B$G$O!"8e$G@bL@$9$k(B fork() $B%7%9%F%`%3!<%k$r(B $BH/9T$9$k$H!"?7$7$/%W%m%;%9$,:n$i$l$k!#(B $B!J(BUnix $B$G$O!"$3$l0J30$NJ}K!$G$O%W%m%;%9$O:n$i$l$J$$!#!K(B $B$3$N;~!"!V$b$H$N%W%m%;%9!W$N!V?F%W%m%;%9!W$H$$$&!#(B $B%W%m%;%9$N?F%W%m%;%9$N%W%m%;%9<1JL;R$O!"(Bps$B%3%^%s%I$K!V(B-l$B!W%*%W%7%g%s$r(B $B$D$1$k$H(BPPID$B$N$H$3$m$KI=<($5$l$F$$$k!#(B

    $B"#%W%m%;%9$N;q8;$HB0@-(B

    $B%W%m%;%9$K$O!"(B $B?^(B?$B$N$h$&$JB0@-$H;q8;$,$"$k!#(B

    $B?^(B? $B%W%m%;%9$N;q8;$H9=@.MWAG(B

    $B?^#2(B $B%W%m%;%9$N;q8;$HB0@-(B

    $B"!;q8;(B

    $B%W%m%;%9$O!";q8;$r3dEv$F$kBP>]$G$"$k!#5U$K$$$($P(B $B3dEv$F$i$l$?;q8;$,$^$H$^$C$?%W%m%;%9$r9=@.$9$k$H$$$($k!#(B
    $B%a%b%j(B(memory)
    $B%W%m%;%9$N=EMW$J;q8;$O%a%b%j(B($B$B%l%8%G%s%H!&%;%C%H(B(resident set) $B$H$$$&!#(B
    $B%9%o%C%WNN0h(B
    $B%9%o%C%WNN0h$H$O!"e$NNN0h$G$"$k!#(B $BFs $B%l%8%9%?!&%;%C%H(B
    $B%W%m%;%9$,uBV$dBT5!>uBV$N;~$O!"(B $B%a%b%j$KJ]B8$5$l$k!#(B
    $B%U%!%$%k5-=R;R$NI=(B
    $B%W%m%;%9$4$H$K%U%!%$%k5-=R;R$NI=!J3+$$$?%U%!%$%k$NI=!K$,$"$k!#DL>o!"(B0 $BHVL\$,%-!<%\!<%I!"(B1$BHVL\$H(B2$BHVL\$,%G%#%9%W%l%$$r;X$7$F$$$k!#(B
    $B@)8fC
    $B%W%m%;%9$4$H$K%-!<%\!<%I$+$i$N%7%0%J%k$r $B%+%l%s%H!&%o!<%-%s%0!&%G%#%l%/%H%j(B
    $BAjBP%Q%9L>$r2r $B%k!<%H!&%G%#%l%/%H%j(B
    $B%W%m%;%9Kh$K%k!<%H!&%G%#%l%/%H%j$r@_Dj$9$k$3$H$,$G$-$k!#(B $BF?L>(Bftp(anonymous ftp)$B$J$I!"(B $BFC$K9b$$%;%-%e%j%F%#$,5a$a$i$l$k;~$K(B $B%W%m%;%9$,%"%/%;%9$G$-$k(B $B%G%#%l%/%H%j$NHO0O$r@)8B$9$k$?$a$K;H$o$l$k!#(B $BJQ99$9$k$K$O!"(Bchroot$B%7%9%F%`%3!<%k$r;H$&!#(B

    $B"!B0@-(B

    UNIX$B$N%W%m%;%9$,;}$C$F$$$k=EMW$JB0@-$K$O!"(B $B
    $B%W%m%;%9<1JL;R(B(PPID)
    $B?F%W%m%;%9$N%W%m%;%9<1JL;R(B(PPID)
    PGID(Process Group ID)
    $B%W%m%;%9$K$O%W%m%;%9!&%0%k!<%W<1JL;R(B(PGID)$B$H8F$P$l$kB0@-$,$"$k!#%W%m%;(B $B%9!&%0%k!<%W<1JL;R$r;XDj$7$F%7%0%J%k$rAw$k5!G=(B($B%7%0%J%k$N%^%k%A%-%c%9(B $B%H5!G=(B)$B$r;H$&$H!"F1$8%W%m%;%9!&%0%k!<%W(BID$B$r;}$D%W%m%;%9$K$^$H$a$F%7%0(B $B%J%k$rAw$k$3$H$,$G$-$k!#$3$l$O%W%m%;%9$N0l;~Dd;_!":F3+$N$?$a$N%8%g%V@)(B $B8f$G;H$o$l$k!#(B
    UID(User ID)
    GID(group ID)
    $B%^%9%/(B(mask)
    $B>uBV(B
    $BM%@h=g0L(B(priority)
    $BM%@h=g0L$O!"(BCPU$B;q8;$r3dEv$F$k;~$K;H$o$l$k!#(B $BM%@h=g0L$O(B0$B$+$i(B127$B$N?t$GI=$o$5$l!"(B $B?t;z$,>.$5$$J}$,M%@h=g0L$,9b$$$3$H$r0UL#$9$k!#(B
    $B@)8B;q8;NL(B
    $B7W;;5!>e$N%a%b%j;q8;$dF1;~$K3+$1$k%U%!%$%k$N?t$OM-8B$G$"$k!#(B $B$3$NM-8B$N;q8;$rM-8z$KJ,G[$9$k$?$a$K!"(B $B%W%m%;%9$4$H$K;H$($k;q8;NL$N>e8B$,7h$a$i$l$F$$$k!#(B $B$3$l$r@)8B;q8;NL$H$&!#(B $B%W%m%;%9$O@)8B;q8;NL$r1[$($F;q8;$r;HMQ$9$k$3$H$O$G$-$J$$!#(B $B%a%b%j$N@)8B;q8;NL$r1[$($?>l9g$O%a%b%j3d$jEv$F$K<:GT$7!"(B $B%U%!%$%k$r3+$/>l9g$O!"%U%!%$%k$N3+$/$3$H$K<:GT$9$k!#(B $B$?$@$7!"(BCPU$B;~4V$,@)8BCM$KC#$7$?>l9g$O!"(B $B%W%m%;%9$O6/@)=*N;$5$;$i$l$k!#(B $B@)8B$G$-$k;q8;$K$O
  • CPU$B;~4V(B($BIC(B) (cputime)
  • $B#1$D$R$H$D$N%U%!%$%k$NBg$-$5(B (filesize)
  • $B%G!<%?!&%;%0%a%s%H$H%9%?%C%/!&%;%0%a%s%H$NBg$-$5!#(B(datasize, stacksize)
  • $B%l%8%G%s%H!&%;%C%H$NBg$-$5(B (memoryuse (max memory size))
  • core $B%U%!%$%k$NBg$-$5(B (coredumpsize)
  • $BF1;~$K@8@.$G$-$k%W%m%;%9?t(B (maxproc)
  • $BF1;~$K3+$1$k%U%!%$%k?t(B (openfiles) $BB?$/$N%7%'%k$G$O(B limit$B%3%^%s%I$G@)8B;q8;NL$r@_Dj$7$?$j!"(B unlimit$B%3%^%s%I$G@)8B$r2r=|$9$k$3$H$,$G$-$k!#(B
    $B$=$NB>(B
    $B$=$NB>$NB0@-$H$7$F$O!"(B $B%7%0%J%k@)8f4XO"$NB0@-(B $B$d(B $BE}7W>pJs(B $B$,$"$k(B

    $B"#(Bps$B%3%^%s%I(B(System V$B7O(B)

    ps

    System V $B7O$N(B ps(process) $B%3%^%s%I$O!"0z?t$rIU$1$J$$$G$B%W%m%;%9<1JL;R(B$B!"C!"(B CPU$B;~4V(B$B!"%3%^%s%IL>$rI=<($9$k!#(B
    ----------------------------------------------------------------------
    % ps [$B
       PID TTY      TIME CMD
     11614 pts/2    0:01 mule
     11481 pts/2    0:00 tcsh
     11616 pts/2    0:00 cat
     11615 pts/2    0:01 mule
    % []
    ----------------------------------------------------------------------
    
    $B$?$@$7!"$B"!(Bps -u (user)

    $BFCDj$N%f!<%6$N%W%m%;%9$@$1$rI=<($9$k!#$?$H$($P!"(B $B%f!<%6L>$,(B root $B$N%f!<%6$N%W%m%;%9$@$1$rI=<($5$?$;$$;~$K$O!"
    % ps -u root [$B
    
    $B<+J,$N%W%m%;%9$@$1$rI=<($7$?$$$J$i!"
    % ps -u $user [$B
    
    $user $B$O!"(Bcsh()$B$d(B tcsh()$B$N%7%'%kJQ?t$G!"<+J,<+?H(B $B$N%f!<%6L>$,F~$C$F$$$k!#(B

    $B"!(Bps -l (long)

    $B%W%m%;%9$NBg$-$5(B(SZ(size))$B!"?F%W%m%;%9$N(B PID (PPIID(Parent PID))$BM%@h=g0L(B(PRI(priority)) $B%W%m%;%9$N;q8;$HB0@-(B$B$rI=<($9$k!#(B
    ----------------------------------------------------------------------
    % ps -l [$B
     F S   UID   PID  PPID  C PRI NI     ADDR     SZ    WCHAN TTY      TIME CMD
     8 R  1231 18864 18862  1  51 20 50804680    164          pts/1    0:00 tcsh
    % []
    ----------------------------------------------------------------------
    

    $B"!(Bps -f (full)

    $B%3%^%s%IL>$r0z?t$^$G4^$a$FA4It(B(the full cmmand name)$B$rI=<($9$k!#(B
    ----------------------------------------------------------------------
    % ps -f [$B
         UID   PID  PPID  C    STIME TTY      TIME CMD
         yas 18864 18862  0 23:18:49 pts/1    0:00 -tcsh
    % []
    ----------------------------------------------------------------------
    

    $B"!(Bps -e (every)

    $BA4$F$N%W%m%;%9$rI=<($9$k!#(B

    $B"!(Bps -ef (every,full)

    -e, -f $B$NAH9g$o$;!#A4$F$N%W%m%;%9$r(B $BI=<($9$k;~$K!"$h$/;H$o$l$k!#(B

    $B"!(Bps -fu $user (full,user)

    -f, -u $B$NAH9g$o$;!#<+J,$N%W%m%;%9$r(B $BI=<($9$k;~$K!"$h$/;H$o$l$k!#(B

    $B%W%m%;%9$r;&$=$&(B

    $B%W%m%;%9$K$O!"(Bls $B$N$h$&$K!">!l9g$K$h$C$F$O!"%W%m%;%9$,<+$B;&$9(B(kill) $B$H$$$&!#(B

    $B%W%m%;%9$r;&$9J}K!$K$O!"

  • $B%-!<%\!<%I$+$i$"$k%-!<$rBG$D!#(B
  • kill $B%3%^%s%I$r;H$&!#(B
  • kill() $B%7%9%F%`%3!<%k$r;H$&!#(B $B$I$A$i$NJ}K!$G$b!"N"$G$O%7%0%J%k!J%=%U%H%&%'%"3d9~$_!K(B $B$H$$$&;E3]$1$,F/$/!#(B

    $B"!%-!<$K$h$k%W%m%;%9$N6/@)=*N;(B

    $B^C$B$G6/@)=*N;$7$F$$$k!#(B
    ----------------------------------------------------------------------
    % cat [$B
    Line 1[$B
    Line 1
    Line 2[$B
    Line 2
    ^C
    % []
    ----------------------------------------------------------------------
    
    ^C$B$HF1MM$K(B ^\ $B$b$"$k$,!"(B $B%G%P%C%0MQ$K(Bcore $B$H$$$&L>A0$N%U%!%$%k$,$G$-$k$3$H$,0[$J$k!#(B core$B$O!"
    ----------------------------------------------------------------------
    % cat [$B
    Line 1[$B
    Line 1
    Line 2[$B
    Line 2
    ^\
    Quit (core dumped)
    % ls -l core [$B
    -rw-r--r--  1 yas       8430000 Sep  7 03:28 core
    % []
    ----------------------------------------------------------------------
    
    core$B%U%!%$%k$O%W%m%0%i%`$N%G%P%C%0$K;H$($k!#(B

    $B"!(Bkill $B%3%^%s%I$K$h$k%W%m%;%9$N6/@)=*N;(B

    ^C $B$d(B ^\ $B$G;`$J$J$$%W%m%;%9(B $B$r;&$9$K$O!"(Bkill $B%3%^%s%I$r;H$&!#(B
    % kill pid [$B
    
    $B%W%m%;%9<1JL;R(Bpid$B$N%W%m%;%9$r;&$9!#(B $B%*%W%7%g%s$J$7$G(Bkill $B%3%^%s%I$r;H$C$F$b;`$J$J$$%W%m%;%9$,$"$k!#(B $B$=$N>l9g$O%*%W%7%g%s(B -KILL$B$r$D$1$F(Bkill$B%3%^%s%I$r(B $B
    % kill -KILL pid [$B
    
    $B$3$l$G$[$H$s$I$N%W%m%;%9$O;`$L!#!J#O#S$NET9g>e!J%G%#%9%/$N#I!?#O40N;$N(B $BJs9p$J$I!K$G!";`$J$J$$%W%m%;%9$b$"$k!#!K(B

    $B"!(Bkill $B%7%9%F%`%3!<%k$K$h$k%W%m%;%9$N6/@)=*N;(B

    kill $B%3%^%s%I$O!"FbIt$G$O!"(Bkill $B%7%9%F%`%3!<%k$r;H$C$F$$$k!#(Bkill $B%7%9(B $B%F%`%3!<%k$O!"!V%=%U%H%&%'%"3d9~$_!W$KJ,N`$5$l$k;EAH$_$rDs6!$9$k!#%=%U(B $B%H%&%'%"3d9~$_$O!"%O!<%I%&%'%"$N3d9~$_$r%=%U%H%&%'%"$K$h$j%(%_%e%l!<%H(B $B$7$?$h$&$J$b$N$G$"$k!#>\$7$/$O!"8eH>$N9V5A$G=R$Y$k!#(B

    $B"#(Bmain$B$N0z?t(B

    
    ----------------------------------------------------------------------
       1:	/*
       2:	        arg-print.c -- main$B$N0z?t$rI=<($9$k%W%m%0%i%`(B
       3:	        ~yas/syspro/cc/arg-print.c
       4:	        $Header: /home/lab2/OS/yas/syspro/proc/RCS/arg-print.c,v 1.3 2001/05/06 12:10:02 yas Exp $
       5:	        Start: 1997/04/21 18:23:13
       6:	*/
       7:	
       8:	main( int argc, char *argv[], char *envp[] )
       9:	{
      10:	    int i ;
      11:	        printf("&argc == 0x%x, argc == %d\n", &argc, argc );
      12:	        printf("&argv == 0x%x, argv == 0x%x\n",&argv, argv );
      13:	        for( i=0 ; argv[i] ; i++ )
      14:	            printf("argv[%d]==0x%x, \"%s\"\n",i,argv[i],argv[i] );
      15:	}
    ----------------------------------------------------------------------
    
    
    $B
    
    ----------------------------------------------------------------------
    % cp ~yas/syspro1/cc/arg-print.c . [$B
    % make arg-print [$B
    cc     arg-print.c   -o arg-print
    % ./arg-print  [$B
    argc == 1
    argv == 0x7fff2ef4
    argv[0]==0x7fff3000, "./arg-print"
    % ./arg-print who am i [$B
    argc == 4
    argv == 0x7fff2ee4
    argv[0]==0x7fff3000, "./arg-print"
    argv[1]==0x7fff300c, "who"
    argv[2]==0x7fff3010, "am"
    argv[3]==0x7fff3013, "i"
    % []
    ----------------------------------------------------------------------
    

    $B"!(Bargv$B$N9=B$(B

    argv$B$O!"#2

    argv$B$N9=B$!

    $B?^#3(B argv$B$N9=B$(B

    $B"!(Bprintf()$B$N(B%x$B$H(B%s

    printf() $B$N(B %x, %s $B$N0UL#$KCm0U$9$k!#(B
    %x
    4$B%P%$%H$NCM$r?t$@$H;W$C$F!"(B16$B?JI=5-$NJ8;z%3!<%I$NJB$SJQ49$7$F(B write() $B$9$k!#(B
    %s
    4$B%P%$%H$NCM$rHVCO$@$H;W$C$F!"$=$NHVCO$+$i;O$^$k(B $BFbMF$r!"#0$,Mh$k$^$G(B write() $B$9$k!#(B

    $B"#4D6-JQ?t(B

    csh $B$+$i$O!"(Bsetenv $B%3%^%s%I$G@_Dj$G$-$k!#(B
    
    ----------------------------------------------------------------------
    % printenv LANG [$B
    ja_JP.EUC
    % echo $LANG [$B
    ja_JP.EUC
    % date [$B
    2001$BG/(B 5$B7n(B 6$BF|(B($BF|MKF|(B) 21$B;~(B55$BJ,(B02$BIC(B JST 
    % setenv LANG C [$B
    % date [$B
    Sun May  6 21:55:09 JST 2001
    % []
    ----------------------------------------------------------------------
    
    $B%W%m%0%i%`$+$i$O!"(Bmain() $B$N#3HVL\$N0z?t!"30ItJQ?t(B environ $B!"%i%$%V%i%j(B $B4X?t(B getenv() $B$G%"%/%;%9$G$-$k!#%a%b%jCf$N9=B$$O!"(Bargv $B$HF1$8$G$"$k!#(B $B3FJ8;zNs$O!"!VJQ?tL>(B=$BCM!W$N7A<0$K$J$C$F$$$k!#(B
    
    ----------------------------------------------------------------------
       1:	/*
       2:	        env-print.c -- $B4D6-JQ?t$rI=<($9$k%W%m%0%i%`(B
       3:	        ~yas/syspro/proc/env-print.c
       4:	        $Header: /home/lab2/OS/yas/syspro/proc/RCS/env-print.c,v 1.4 2001/05/06 11:24:46 yas Exp $
       5:	        Start: 1997/05/05 16:42:22
       6:	*/
       7:	extern char **environ ;
       8:	
       9:	main( int argc, char *argv[], char *envp[] )
      10:	{
      11:	    int i ;
      12:	        printf("envp == 0x%x\n",envp );
      13:	        printf("environ == 0x%x\n",environ );
      14:	        for( i=0 ; envp[i] ; i++ )
      15:	            printf("envp[%d]==0x%x, \"%s\"\n",i,envp[i],envp[i] );
      16:	}
    ----------------------------------------------------------------------
    
    
    $B
    
    ----------------------------------------------------------------------
    % make env-print [$B
    cc     env-print.c   -o env-print
    % ./env-print | head [$B
    envp == 0x7fff2efc
    environ == 0x7fff2efc
    envp[0]==0x7fff300c, "HOME=/home/lab2/OS/yas"
    envp[1]==0x7fff3023, "USER=yas"
    envp[2]==0x7fff302c, "LOGNAME=yas"
    envp[3]==0x7fff3038, "PATH=/home/lab2/OS/yas/bin:/usr/local/bin:/usr/local2/bin:/usr/local2/X11/bin:/usr/local/gnu/bin:/usr/local/X11/bin:/usr/local/tex/bin:/usr/java/bin:/usr/sbin:/usr/bsd:/sbin:/usr/bin:/usr/bin/X11:/usr/etc:/etc:/usr/freeware/bin"
    envp[4]==0x7fff311c, "MAIL=/var/mail/yas"
    envp[5]==0x7fff312f, "SHELL=/usr/bin/tcsh"
    envp[6]==0x7fff3143, "TZ=JST-9"
    envp[7]==0x7fff314c, "HZ=100"
    % printenv | head [$B
    HOME=/home/lab2/OS/yas
    USER=yas
    LOGNAME=yas
    PATH=/home/lab2/OS/yas/bin:/usr/local/bin:/usr/local2/bin:/usr/local2/X11/bin:/usr/local/gnu/bin:/usr/local/X11/bin:/usr/local/tex/bin:/usr/java/bin:/usr/sbin:/usr/bsd:/sbin:/usr/bin:/usr/bin/X11:/usr/etc:/etc:/usr/freeware/bin
    MAIL=/var/mail/yas
    SHELL=/usr/bin/tcsh
    TZ=JST-9
    HZ=100
    SSH_CLIENT=130.158.85.130 51726 22
    SSH_TTY=/dev/ttyq0
    % []
    ----------------------------------------------------------------------
    

    $B"!4D6-JQ?t$H%7%'%kJQ?t(B

    $B%7%'%kJQ?t$H4D6-JQ?t$H$O0c$&!#(B csh $B$G$O!"%7%'%kJQ?t$O!"(Bset $B%3%^%s%I$G@_Dj$7!"4D6-JQ?t$O(Bsetenv $B%3%^%s(B $B%I$G@_Dj$9$k!#%7%'%kJQ?t$O!"$=$N%7%'%k$NCf$@$1$G;2>H$G$-$k$,!"4D6-JQ?t(B $B$O!"$=$N%7%'%k$+$iH$G$-$k!#(B

    $B"#%W%m%;%9$N@8@.$H%W%m%0%i%`$N

    UNIX $B$G$O!"?7$?$K%W%m%;%9$r:n$k;~$K!"<+J,$N%3%T!<$7$+:n$l$J$$(B(fork()$B%7(B $B%9%F%`!&%3!<%k(B)$B!#85$N%W%m%;%9$r?F%W%m%;%9!":n$i$l$?%W%m%;%9$r;R%W%m%;(B $B%9$H$$$&!#(B

    $B8=:_$N%W%m%0%i%`$N

  • $B;R%W%m%;%9$r:n$k(B(fork())$B!#(B
  • $B;R%W%m%;%9$G!" execve() $B%7%9%F%`!&%3!<%k$N0z?t$O!"(B main() $B$N0z?t(B$B$H4XO"$7$F$$$k!#(B

    
    ----------------------------------------------------------------------
       1:	/*
       2:	        proc-create.c -- cal$B%W%m%0%i%`$h$j%W%m%;%9$r:n$k(B
       3:	        ~yas/syspro/proc/proc-create.c
       4:	        $Header: /home/lab2/OS/yas/syspro/proc/RCS/proc-create.c,v 1.4 2001/05/06 13:00:24 yas Exp $
       5:	        Start: 1995/02/27 15:27:54
       6:	*/
       7:	
       8:	#include <unistd.h>     /* pid_t */
       9:	
      10:	extern char **environ;
      11:	
      12:	main()
      13:	{
      14:	   pid_t child_pid ;
      15:	        if( (child_pid=fork()) == 0 )
      16:	        {
      17:	            char *argv[4] ;
      18:	            printf("child: pid == %d, ppid == %d\n", getpid(), getppid() );
      19:	            argv[0] = "cal" ;
      20:	            argv[1] = "5" ;
      21:	            argv[2] = "2001" ;
      22:	            argv[3] = 0 ;
      23:	            execve( "/usr/bin/cal", argv, environ );
      24:	            perror( "execve" );
      25:	            /* exec $B$K<:GT$7$?$i(B exit() $B$rK:$l$J$$$3$H(B */
      26:	            exit( 1 );
      27:	        }
      28:	        else if( child_pid > 0 )
      29:	        {
      30:	            printf("parent: pid == %d, ppid == %d, child_pid == %d\n",
      31:	                    getpid(), getppid(),child_pid );
      32:	        }
      33:	        else
      34:	        {
      35:	            perror("fork");
      36:	        }
      37:	}
    ----------------------------------------------------------------------
    
    
    $B
    
    ----------------------------------------------------------------------
    % ./proc-create [$B
    child: pid == 13625, ppid == 13624
       2001 $BG/(B  5 $B7n(B
    $BF|(B $B7n(B $B2P(B $B?e(B $BLZ(B $B6b(B $BEZ(B   
           1  2  3  4  5
     6  7  8  9 10 11 12
    13 14 15 16 17 18 19
    20 21 22 23 24 25 26
    27 28 29 30 31
    
    parent: pid == 13624, ppid == 13070, child_pid == 13625
    % []
    ----------------------------------------------------------------------
    
    
    execve() $B$O!"%7%9%F%`!&%3!<%k$G$"$k!#$3$l$r;H$$$d$9$/$9$k$?$a$K!" int execl (const char *path, const char *arg0, ..., const char *argn, (char *)0); int execv (const char *path, char *const *argv); int execle (const char *path, const char *arg0, ..., const char *argn, (char *0), const char *envp[]); int execve (const char *path, char *const *argv, char *const *envp); int execlp (const char *file, const char *arg0, ..., const char *argn, (char *)0); int execvp (const char *file, char *const *argv); int system(const char *string); FILE *popen(const char *command, const char *type); int pclose (FILE *stream); $B?F%W%m%;%9$H;R%W%m%;%9$O!"FHN)$KF0:n$9$k!#(B $B?F%W%m%;%9$,;R%W%m%;%9$N=*N;$rBT$A$?$$>l9g$K$O!"(Bwait() $B%7%9%F%`%3!<%k(B $B$r;H$&I,MW$,$"$k!#(B
    
         pid_t wait (int *statptr);
         pid_t waitpid (pid_t pid, int *statptr, int options);
         pid_t wait3 (int *statptr, int options, struct rusage *rusage);
    
         pid_t wait4(pid_t pid, int  *statusp,  int  options,  struct
         rusage *rusage); /* SGI $B$G$O;H$($J$$(B */
    
    

    $B"#(Bpipe() $B$H(B dup()

    $B%7%'%k$G!"
    
    ----------------------------------------------------------------------
    % echo "hello,world" | tr '[a-z]' '[A-Z]' [$B
    HELLO,WORLD
    % []
    ----------------------------------------------------------------------
    
    
    $B$3$NNc$G$O!"(Becho $B$N%W%m%;%9$H!"(Btr $B$N%W%m%;%9$O!"%Q%$%W$G@\B3$5$l$F$$$k!#(B $B%Q%$%W$O!"(Bopen() $B$7$?%U%!%$%k$HF1$8$h$&$K(Bread() $B$7$?$j(B write() $B$7$?$j(B $B$9$k$3$H$,$G$k!#$7$+$7

    $B%Q%$%W$r:n$k$K$O!"(Bpipe() $B%7%9%F%`!&%3!<%k$r;H$&!#$3$l$G!"%Q%$%W(B $B$,#1K\:n$i$l!"#2$D$N%U%!%$%k5-=R;R(B($BFI9~$_MQ$H=q9~$_MQ(B)$B$,JV$5$l$k!#(B

    
    ----------------------------------------------------------------------
       1:	/*
       2:	        pipe-rw.c -- pipe() $B$r;H$C$?%W%m%0%i%`(B
       3:	        ~yas/syspro/proc/pipe-rw-nodup.c
       4:	        $Header: /home/lab2/OS/yas/syspro/proc/RCS/pipe-rw-nodup.c,v 1.1 2001/05/06 13:13:22 yas Exp $
       5:	        Start: 1997/05/26 20:43:29
       6:	*/
       7:	
       8:	#include <stdio.h>
       9:	#include <unistd.h>
      10:	
      11:	extern  void parent( int fildes[2] );
      12:	extern  void child( int fildes[2] );
      13:	
      14:	main()
      15:	{
      16:	    int fildes[2] ;
      17:	    pid_t pid ;
      18:	
      19:	        if( pipe(fildes) == -1)
      20:	        {
      21:	            perror("pipe");
      22:	            exit( 1 );
      23:	        }
      24:	        /* fildes[0] -- $BFI$_9~$_MQ(B
      25:	         * fildes[1] -- $B=q$-9~$_MQ(B
      26:	         */
      27:	        if( (pid=fork()) == 0 )
      28:	        {
      29:	            child( fildes );
      30:	        }
      31:	        else if( pid > 0 )
      32:	        {
      33:	            parent( fildes );
      34:	        }
      35:	        else
      36:	        {
      37:	            perror("fork");
      38:	            exit( 1 );
      39:	        }
      40:	}
      41:	
      42:	void parent( int fildes[2] )
      43:	{
      44:	    char *p, c ;
      45:	        close( fildes[0] );
      46:	        p = "hello,world\n" ;
      47:	        while( *p )
      48:	        {
      49:	            c = *p ++ ;
      50:	            write( fildes[1],&c,1 );
      51:	        }
      52:	        close( fildes[1] );
      53:	}
      54:	
      55:	void child( int fildes[2] )
      56:	{
      57:	    char c, c2 ;
      58:	        close( fildes[1] );
      59:	        while( read(fildes[0],&c,1) >0 )
      60:	        {
      61:	            c2 = toupper(c);
      62:	            write( 1, &c2, 1 );
      63:	        }
      64:	        close( fildes[0] );
      65:	}
    ----------------------------------------------------------------------
    
    
    $B
    
    ----------------------------------------------------------------------
    % ./pipe-rw-nodup  [$B
    HELLO,WORLD
    % []
    ----------------------------------------------------------------------
    
    

    pipe() $B%7%9%F%`%3!<%k<B9TA0(B

    $B?^#4!]#1(B pipe() $B%7%9%F%`%3!<%k

    pipe() $B%7%9%F%`%3!<%k<B9T8e(B

    $B?^#4!]#2(B pipe() $B%7%9%F%`%3!<%k

    fork() $B%7%9%F%`%3!<%k<B9T8e(B

    $B?^#4!]#3(B fork() $B%7%9%F%`%3!<%k

    $B?F;R$G(B close() $B%7%9%F%`%3!<%k<B9T8e(B

    $B?^#4!]#4(B $B?F;R$G(B close() $B%7%9%F%`%3!<%k

    $B"!(Bdup()

    pipe() $B%7%9%F%`!&%3!<%k$G:n$i$l$?%U%!%$%k5-=R;R$O!"$7$P$7$P(B dup() $B%7%9(B $B%F%`!&%3!<%k$G!"(B0, 1 $B$KJQ$($i$l$k!#(Bdup() $B%7%9%F%`!&%3!<%k$O!"5-=R;R$r(B $B%3%T!<$9$k$b$N$G$"$k!#>.$5$$?t;z$+$iC5$7$F$$$/$N$G!"$?$H$($P(B close(0) $B$ND>8e$K(B dup(fd) $B$9$k$H!"(Bfd $B$,(B 0 $B$K%3%T!<$5$l$k!#(B

    dup() $B$h$j$b!"(Bdup2() $B$NJ}$,JXMx$G$"$k!#(B

    
    ----------------------------------------------------------------------
       1:	/*
       2:	        pipe-rw.c -- pipe() $B$H(B dup() $B$r;H$C$?%W%m%0%i%`(B
       3:	        ~yas/syspro/proc/pipe-rw.c
       4:	        $Header: /home/lab2/OS/yas/syspro/proc/RCS/pipe-rw-dup.c,v 1.7 2001/05/06 13:13:22 yas Exp $
       5:	        Start: 1997/05/26 20:43:29
       6:	*/
       7:	
       8:	#include <stdio.h>
       9:	#include <unistd.h>
      10:	
      11:	extern  void parent( int fildes[2] );
      12:	extern  void child( int fildes[2] );
      13:	
      14:	main()
      15:	{
      16:	    int fildes[2] ;
      17:	    pid_t pid ;
      18:	
      19:	        if( pipe(fildes) == -1)
      20:	        {
      21:	            perror("pipe");
      22:	            exit( 1 );
      23:	        }
      24:	        /* fildes[0] -- $BFI$_9~$_MQ(B
      25:	         * fildes[1] -- $B=q$-9~$_MQ(B
      26:	         */
      27:	        if( (pid=fork()) == 0 )
      28:	        {
      29:	            child( fildes );
      30:	        }
      31:	        else if( pid > 0 )
      32:	        {
      33:	            parent( fildes );
      34:	        }
      35:	        else
      36:	        {
      37:	            perror("fork");
      38:	            exit( 1 );
      39:	        }
      40:	}
      41:	
      42:	void parent( int fildes[2] )
      43:	{
      44:	    char *p, c ;
      45:	        close( fildes[0] );
      46:	        close( 1 );         /* $BI8=`=PNO$r%Q%$%W$K@ZBX$($k(B */
      47:	        dup( fildes[1] );
      48:	        close( fildes[1] );
      49:	
      50:	        p = "hello,world\n" ;
      51:	        while( *p )
      52:	        {
      53:	            c = *p ++ ;
      54:	            write( 1,&c,1 );
      55:	        }
      56:	        close( 1 );
      57:	}
      58:	
      59:	void child( int fildes[2] )
      60:	{
      61:	    char c, c2 ;
      62:	        close( fildes[1] );
      63:	        close( 0 );         /* $BI8=`F~NO$r%Q%$%W$K@ZBX$($k(B */
      64:	        dup( fildes[0] );
      65:	        close( fildes[0] );
      66:	
      67:	        while( read(0,&c,1) >0 )
      68:	        {
      69:	            c2 = toupper(c);
      70:	            write( 1, &c2, 1 );
      71:	        }
      72:	        close( 0 );
      73:	}
    ----------------------------------------------------------------------
    
    
    $B
    
    ----------------------------------------------------------------------
    % ./pipe-rw-dup [$B
    HELLO,WORLD
    % []
    ----------------------------------------------------------------------
    
    

    `$B?F;R$G(B close(),dup(),close() $B%7%9%F%`%3!<%k<B9T8e(B'

    $B?^#4!]#5(B $B?F;R$G(B close(),dup(),close() $B%7%9%F%`%3!<%k

    $B"!ITMW$J%Q%$%W$rJD$8$k(B

    $B;H$o$J$$%Q%$%W$N%U%!%$%k5-=R;R$O!"A4It(B close() $B$9$k$3$H!#%Q%$%W$N=q$-(B $B9~$_B&$N%U%!%$%k5-=R;R$,3+$$$F$$$k4V$O!"(Bread() $B$7$F$b(B EOF (End Of File) $B$K$J$i$J$$!#<+J,<+?H$G(B write() $B$9$k2DG=@-$b$"$k!#(B

    $B"#N}=,LdBj(B

    $B!zN}=,LdBj(B 10 echo$B%3%^%s%I(B

    echo $B%3%^%s%I$H;w$?F0$-$r$9$k%W%m%0%i%`$r$D$/$j$J$5$$!#(B

    $B!zN}=,LdBj(B 11 printenv$B%3%^%s%I(B

    printenv $B%3%^%s%I$H;w$?F0$-$r$9$k%W%m%0%i%`$r:n$j$J$5$$!#(B

    $B!zN}=,LdBj(B 12 getenv()$B$NMxMQ(B

    getenv() $B%i%$%V%i%j4X?t$rMxMQ$7$F4D6-JQ?t$rF@$J$5$$!#(B

    $B!zN}=,LdBj(B 13 putenv()$B$NMxMQ(B

    setenv() $B%i%$%V%i%j4X?t$rMxMQ$7$F4D6-JQ?t$rJQ$(!"%W%m%0%i%`$NF0$-!J%i(B $B%$%V%i%j4X?t$NF0$-!K$,JQ$k$3$H$r3N$+$a$J$5$$!#(B

    $B!zN}=,LdBj(B 14 getenv()$B$N

    getenv() $B%i%$%V%i%j4X?t$H;w$?F0$-$r$9$k4X?t$r:n$j$J$5$$!#(B

    $B!zN}=,LdBj(B 15 putenv()$B$NMxMQ(B

    putenv() $B%i%$%V%i%j4X?t$H;w$?F0$-$r$9$k4X?t$r:n$j$J$5$$!#(B

    $B!zN}=,LdBj(B 16 wait$B%7%9%F%`!&%3!<%k(B

    proc-create$B$r

    $B$3$NLdBj$r2r7h$7$J$5$$!#$=$N$?$a$K$O!"(Bwait() $B%7%9%F%`!&%3!<%k(B (waitpid(),wait3(),wait4()$B$J$I(B)$B$rMQ$$$F!"F14|$r9T$($P$h$$!#$9$J$o$A!"(B $B;R%W%m%;%9$,I=<($9$k2DG=@-$,$"$k4V$O!"?F%W%m%;%9$rBT$A>uBV$K$7$J$5$$!#(B

    $B!zN}=,LdBj(B 17 3$B8D$N%W%m%;%9$r%Q%$%W$G7k$V(B

    3$B8D$N%W%m%;%9$NI8=`F~=PNO$r!"#2$D$N%Q%$%W$G7k$S$J$5$$!#(B

    $B@h$K%Q%$%W$r#2$D:n$C$F$+$i#22s(B fork() $B$7$F$b$h$$!#%Q%$%W$r#1$D:n$C$F(B fork() $B$7$F$+$i(B $B$b$$D%Q%$%W$r:n$C$F(B fork() $B$9$k$H$$$&J}K!$G$b$h$$!#(B

    $B%R%s%H!'(B $B;H$o$J$$%Q%$%W$N%U%!%$%k5-=R;R$O!"A4It(B close() $B$9$k$3$H!#%Q%$%W$N=q$-(B $B9~$_B&$N%U%!%$%k5-=R;R$,3+$$$F$$$k4V$O!"(Bread() $B$7$F$b(B EOF (End Of File) $B$K$J$i$J$$!#<+J,<+?H$G(B write() $B$9$k2DG=@-$b$"$k!#(B

    $B!zN}=,LdBj(B 18 $B=q$-

    $B=q$-

    $B%R%s%H!'=q$-$B!zN}=,LdBj(B 19 $BFI$_ $BFI$_$B!zN}=,LdBj(B 20 $B%Q%$%WMQ$N%P%C%U%!$NBg$-$5(B $B3F%Q%$%W$K$O!"%*%Z%l!<%F%#%s%0!&%7%9%F%`$N%+!<%M%k$NCf$K%P%C%U%!$,3d$j(B $BEv$F$i$l$F$F$$$k!#$3$NBg$-$5$rD4$Y$k%W%m%0%i%`$r:n$j$J$5$$!#(B

    $B%R%s%H!'%W%m%;%9$r(B fork() $B$7$J$/$F$b!"%Q%$%W$K=q$/$3$H$O$G$-$k!#%W%m%;(B $B%9$,#18D$N>uBV$G!"%P%C%U%!$NBg$-$50J>e$N%G!<%?$r=q$-9~$`$H!"%W%m%;%9$,(B $B%V%m%C%/$5$l$k(B($B@h$K?J$^$J$/$J$k(B)$B!#(B

    $B!zN}=,LdBj(B 21 $BFI$_

    $B#1$D$N%Q%$%W$KFI$_l9g!"$I$&$J$k$+!#(B $B5U$K!"=q$-l9g!"$I$&$J$k$+!#(B

    $B!zN}=,LdBj(B 22 popen() $B%i%$%V%i%j4X?t(B

    $B%W%m%;%9$r ---------------------------------------------------------------------- FILE *popen(const char *command, const char *type); int pclose (FILE *stream); ---------------------------------------------------------------------- $B$3$l$rMxMQ$7$F!"%W%m%;%9$r:n@.$7!"%W%m%;%9$K%G!<%?$rM?$($?$j!"$"$k$$$O!"(B $B%W%m%;%9$+$i%G!<%?$r

    $B$?$H$($P!"(Bexpr $B%3%^%s%I$r2A$7!"7k2L$rI8=`=P(B $BNO$KJV$9$b$N$G$"$k!#(B

    
    ----------------------------------------------------------------------
    % expr 1 + 2 [$B
    3
    % []
    ----------------------------------------------------------------------
    
    
    $B$3$N2]Bj$G$O!"(Bexpr $B%3%^%s%I$K;w$?$h$&$J%W%m%0%i%`:n$k$N$G$O$J$/!"$=$l(B $B$r$=$N$^$^MxMQ$7$F!"7k2L$r
  • expr
  • mailx ($B%W%m%0%i%`$+$i%a!<%k$rH/?.$9$k(B)
  • $B$=$NB>(B