※ [本文轉錄自 somi 信箱]
作者: b89098@csie.ntu.edu.tw (?d?F?d)
標題: r 2 14:52:49 CST 200:釫呪겁
時間: Mon Mar 4 19:22:29 2002
@@此版本適用於系上的Debian Linux
Script started on Mon Mar 4 19:00:51 2002
There is no screen to be resumed.
@@首先設定proxy server以免出國太慢time out,也可以不設定
[b89098]/home/student/89/b89098$ setenv ftp_proxy proxy.ntu.edu.tw:3128
使用wget抓取檔案,其他像是ncftpget...都可以用法請自己man wget
[b89098]/home/student/89/b89098$ wget ftp://ftp.uu.net/published/books/stevens.advprog.tar.Z
--19:01:15-- ftp://ftp.uu.net:21/published/books/stevens.advprog.tar.Z
=> `stevens.advprog.tar.Z'
正連往 proxy.ntu.edu.tw: 3128... 連上了!
已經送出 Proxy 請求封包,正在等待回應中... 200 OK
長度: 169,163
0K -> .......... .......... .......... .......... .......... [ 30%]
50K -> .......... .......... .......... .......... .......... [ 60%]
100K -> .......... .......... .......... .......... .......... [ 90%]
150K -> .......... ..... [100%]
19:01:22 (95.66 KB/s) - `stevens.advprog.tar.Z' 被存為 [169163/169163]
@@用tar把檔案解開,參數(unZip,eXtract,Verbose,Filename)
@@詳細用法參照man tar
[b89098]/home/student/89/b89098$ tar zxvf stevens.advprog.tar.Z
apue/
apue/DISCLAIMER
apue/README
apue/Sourcefiles
apue/Make.def.sun
apue/Make.def.44
apue/Make.def.svr4
apue/advio/
apue/advio/Makefile
apue/advio/ourhdr.h
apue/advio/catgetmsg.c
apue/advio/devzero.c
apue/advio/mcopy.c
apue/advio/nonblockw.c
apue/advio/pollpipe.c
apue/advio/selectpipe.c
apue/call/
apue/call/Makefile
apue/call/ourhdr.h
apue/call/call.c
apue/call/call.h
apue/call/escape.c
apue/call/loop.c
apue/call/loop.poll.c
apue/call/main.c
apue/call/put.c
apue/call/take.c
apue/call/takeput.c
apue/calld/
apue/calld/Makefile
apue/calld/ourhdr.h
apue/calld/calld.h
apue/calld/childdial.c
apue/calld/cliargs.c
apue/calld/client.c
apue/calld/ctlstr.c
apue/calld/debug.c
apue/calld/devfile.c
apue/calld/dialfile.c
apue/calld/expectstr.c
apue/calld/lock.c
apue/calld/loop.c
apue/calld/main.c
apue/calld/request.c
apue/calld/sendstr.c
apue/calld/sigchld.c
apue/calld/sysfile.c
apue/calld/ttydial.c
apue/calld/ttyopen.c
apue/datafiles/
apue/datafiles/Makefile
apue/datafiles/ourhdr.h
apue/datafiles/getpw44bsd.c
apue/datafiles/getpwnam.c
apue/datafiles/getpwsvr4.c
apue/datafiles/prtime.c
apue/db.lock.fine/
apue/db.lock.fine/Makefile
apue/db.lock.fine/ourhdr.h
apue/db.lock.fine/alloc.c
apue/db.lock.fine/checkfree.c
apue/db.lock.fine/close.c
apue/db.lock.fine/db.h
apue/db.lock.fine/delete.c
apue/db.lock.fine/dodelete.c
apue/db.lock.fine/fetch.c
apue/db.lock.fine/find.c
apue/db.lock.fine/findfree.c
apue/db.lock.fine/free.c
apue/db.lock.fine/hash.c
apue/db.lock.fine/nextrec.c
apue/db.lock.fine/open.c
apue/db.lock.fine/readdat.c
apue/db.lock.fine/readidx.c
apue/db.lock.fine/readptr.c
apue/db.lock.fine/rewind.c
apue/db.lock.fine/stats.c
apue/db.lock.fine/store.c
apue/db.lock.fine/t4.c
apue/db.lock.fine/tstats.c
apue/db.lock.fine/writedat.c
apue/db.lock.fine/writeidx.c
apue/db.lock.fine/writeptr.c
apue/environ/
apue/environ/Makefile
apue/environ/ourhdr.h
apue/environ/doatexit.c
apue/environ/getrlimit.c
apue/environ/opendata.c
apue/environ/testjmp.c
apue/file/
apue/file/Makefile
apue/file/ourhdr.h
apue/file/access.c
apue/file/cdpwd.c
apue/file/changemod.c
apue/file/conf.c
apue/file/devrdev.c
apue/file/fileflags.c
apue/file/filetype.c
apue/file/ftw4.c
apue/file/hello.c
apue/file/hole.c
apue/file/longpath.c
apue/file/longpath.sh
apue/file/ls1.c
apue/file/mycd.c
apue/file/seek.c
apue/file/testerror.c
apue/file/uidgid.c
apue/file/umask.c
apue/file/unlink.c
apue/file/zap.c
apue/ipc/
apue/ipc/Makefile
apue/ipc/ourhdr.h
apue/ipc/add2.c
apue/ipc/add2stdio.c
apue/ipc/fifo1.c
apue/ipc/myuclc.c
apue/ipc/pipe1.c
apue/ipc/pipe2.c
apue/ipc/pipe4.c
apue/ipc/popen1.c
apue/ipc/popen2.c
apue/ipc/spipe4.c
apue/ipc/tellwait.c
apue/ipc/tshm.c
apue/lib.sun/
apue/lib.sun/error.c
apue/lib.sun/systype.sh
apue/lib.sun/old/
apue/lib.sun/old/error.c.save
apue/lib.sun/old/error.o.save
apue/lib.sun/strerror.c
apue/lib.sun/ptyopen.c
apue/lib.sun/semaph.c
apue/lib.sun/exit.c
apue/lib.sun/openmax.c
apue/lib.sun/atexit.c
apue/lib.sun/Makefile
apue/lib.sun/atexit.h
apue/lib.sun/signal.c
apue/lib.sun/sleepus.c
apue/lib.sun/pathalloc.c
apue/lib.sun/daemoninit.c
apue/lib.sun/setfl.c
apue/lib.sun/ourhdr.h
apue/lib.sun/prexit.c
apue/lib.sun/spipe.c
apue/lib.sun/clrfl.c
apue/lib.sun/sleep.c
apue/lib.sun/tellwait.c
apue/lib.sun/lockreg.c
apue/lib.sun/locktest.c
apue/lib.sun/errorlog.c
apue/lib.sun/readn.c
apue/lib.sun/nspipe.c
apue/lib.sun/writen.c
apue/lib.sun/ttymodes.c
apue/lib.sun/signalintr.c
apue/lib.sun/bufargs.c
apue/lib.sun/senderr.c
apue/lib.sun/sendfd.c
apue/lib.sun/servaccept.c
apue/lib.sun/servlisten.c
apue/lib.sun/cliconn.c
apue/lib.sun/recvfd.c
apue/lib.sun/popen.c
apue/lib.sun/prmask.c
apue/lib.sun/ptyfork.c
apue/lib.44/
apue/lib.44/cliconn.c
apue/lib.44/bufargs.c
apue/lib.44/recvfd.c
apue/lib.44/clrfl.c
apue/lib.44/daemoninit.c
apue/lib.44/error.c
apue/lib.44/errorlog.c
apue/lib.44/lockreg.c
apue/lib.44/locktest.c
apue/lib.44/nspipe.c
apue/lib.44/openmax.c
apue/lib.44/pathalloc.c
apue/lib.44/popen.c
apue/lib.44/prexit.c
apue/lib.44/prmask.c
apue/lib.44/ptyfork.c
apue/lib.44/ptyopen.c
apue/lib.44/readn.c
apue/lib.44/sendfd.c
apue/lib.44/semaph.c
apue/lib.44/senderr.c
apue/lib.44/servaccept.c
apue/lib.44/Makefile
apue/lib.44/setfl.c
apue/lib.44/sigblock.c
apue/lib.44/servlisten.c
apue/lib.44/signal.c
apue/lib.44/signalintr.c
apue/lib.44/sleep.c
apue/lib.44/sleepus.c
apue/lib.44/spipe.c
apue/lib.44/strerror.c
apue/lib.44/tellwait.c
apue/lib.44/ttymodes.c
apue/lib.44/writen.c
apue/lib.44/ourhdr.h
apue/lib.44/systype.sh
apue/lib.44/sysconf.c
apue/lib.44/pathconf.c
apue/lib.svr4/
apue/lib.svr4/Makefile
apue/lib.svr4/bufargs.c
apue/lib.svr4/cliconn.c
apue/lib.svr4/clrfl.c
apue/lib.svr4/error.c
apue/lib.svr4/errorlog.c
apue/lib.svr4/popen.c
apue/lib.svr4/lockreg.c
apue/lib.svr4/locktest.c
apue/lib.svr4/nspipe.c
apue/lib.svr4/openmax.c
apue/lib.svr4/ourhdr.h
apue/lib.svr4/pathalloc.c
apue/lib.svr4/prexit.c
apue/lib.svr4/readn.c
apue/lib.svr4/recvfd.c
apue/lib.svr4/semaph.c
apue/lib.svr4/senderr.c
apue/lib.svr4/sendfd.c
apue/lib.svr4/servaccept.c
apue/lib.svr4/servlisten.c
apue/lib.svr4/setfl.c
apue/lib.svr4/signal.c
apue/lib.svr4/signalintr.c
apue/lib.svr4/sleep.c
apue/lib.svr4/spipe.c
apue/lib.svr4/strerror.c
apue/lib.svr4/systype.sh
apue/lib.svr4/tellwait.c
apue/lib.svr4/ttymodes.c
apue/lib.svr4/prmask.c
apue/lib.svr4/writen.c
apue/lib.svr4/spipe.socket.c
apue/lib.svr4/daemoninit.c
apue/lib.svr4/ptyopen.c
apue/lib.svr4/ptyfork.c
apue/lib.svr4/sleepus.c
apue/lock/
apue/lock/Makefile
apue/lock/ourhdr.h
apue/lock/daemon.c
apue/lock/deadlock.c
apue/lock/mandatory.c
apue/lock/outoflocks.c
apue/mycat/
apue/mycat/Makefile
apue/mycat/ourhdr.h
apue/mycat/fgetsfputs.c
apue/mycat/getcputc.c
apue/mycat/mycat.c
apue/open.fe/
apue/open.fe/ourhdr.h
apue/open.fe/Makefile
apue/open.fe/open.h
apue/open.fe/open.c
apue/open.fe/main.c
apue/open.fe/opend
apue/open/
apue/open/ourhdr.h
apue/open/Makefile
apue/open/open.h
apue/open/open.c
apue/open/main.c
apue/opend.fe/
apue/opend.fe/ourhdr.h
apue/opend.fe/Makefile
apue/opend.fe/main.c
apue/opend.fe/opend.h
apue/opend.fe/cliargs.c
apue/opend.fe/request.c
apue/opend/
apue/opend/ourhdr.h
apue/opend/Makefile
apue/opend/loop.c
apue/opend/main.c
apue/opend/opend.h
apue/opend/client.c
apue/opend/loop.poll.c
apue/opend/cliargs.c
apue/opend/request.c
apue/opend/loop.select.c
apue/printer/
apue/printer/hello.ps
apue/printer/main.c
apue/printer/getstatus.c
apue/printer/sendfile.c
apue/printer/acct.c
apue/printer/output.c
apue/printer/input.c
apue/printer/pagecount.c
apue/printer/interrupt.c
apue/printer/message.c
apue/printer/tty.c
apue/printer/alarm.c
apue/printer/vars.c
apue/printer/lprps.h
apue/printer/mail.c
apue/printer/Makefile
apue/printer/ourhdr.h
apue/printer/acctfile
apue/printer/mbox.errs
apue/printer/pageno.ps
apue/proc/
apue/proc/Makefile
apue/proc/ourhdr.h
apue/proc/awkexample
apue/proc/echoall.c
apue/proc/echoarg.c
apue/proc/exec1.c
apue/proc/exec2.c
apue/proc/fork1.c
apue/proc/fork2.c
apue/proc/pracct.c
apue/proc/pruids.c
apue/proc/shell1.c
apue/proc/shell2.c
apue/proc/system.c
apue/proc/systest1.c
apue/proc/systest2.c
apue/proc/systest3.c
apue/proc/tellwait1.c
apue/proc/tellwait2.c
apue/proc/test1.c
apue/proc/times1.c
apue/proc/vfork1.c
apue/proc/vfork3.c
apue/proc/wait1.c
apue/proc/zombie.c
apue/pty/
apue/pty/Makefile
apue/pty/ourhdr.h
apue/pty/driver.c
apue/pty/loop.c
apue/pty/main.c
apue/sess/
apue/sess/Makefile
apue/sess/ourhdr.h
apue/sess/orphan.c
apue/sess/tdaemon2.c
apue/signals/
apue/signals/Makefile
apue/signals/ourhdr.h
apue/signals/abort.c
apue/signals/child.c
apue/signals/critical.c
apue/signals/mask.c
apue/signals/raise.c
apue/signals/read1.c
apue/signals/read2.c
apue/signals/reenter.c
apue/signals/setops.c
apue/signals/sigtstp.c
apue/signals/sigusr.c
apue/signals/sleep1.c
apue/signals/sleep2.c
apue/signals/suspend1.c
apue/signals/suspend2.c
apue/signals/system.c
apue/signals/tsleep2.c
apue/stdio/
apue/stdio/Makefile
apue/stdio/ourhdr.h
apue/stdio/buf.c
apue/stdio/tempfiles.c
apue/stdio/tempnam.c
apue/streams/
apue/streams/Makefile
apue/streams/ourhdr.h
apue/streams/isastream.c
apue/streams/strlist.c
apue/streams/t_isastream.c
apue/termios/
apue/termios/Makefile
apue/termios/ourhdr.h
apue/termios/csize.c
apue/termios/ctermid.c
apue/termios/getpass.c
apue/termios/isatty.c
apue/termios/settty.c
apue/termios/t_getpass.c
apue/termios/t_isatty.c
apue/termios/t_raw.c
apue/termios/t_ttyname.c
apue/termios/ttyname.c
apue/termios/winch.c
apue/test/
apue/test/Makefile
apue/test/ourhdr.h
apue/test/notatty.c
[b89098]/home/student/89/b89098$ cd apue/
@@可以先打開 readme來看看,我事先看過了
[b89098]/home/student/89/b89098/apue$ ls
DISCLAIMER README calld file lib.svr4 open.fe proc stdio
Make.def.44 Sourcefiles datafiles ipc lock opend pty streams
Make.def.sun advio db.lock.fine lib.44 mycat opend.fe sess termios
Make.def.svr4 call environ lib.sun open printer signals test
@@第一步:
@@因為Linux是屬於Svr4系列的UNIX,所以
[b89098]/home/student/89/b89098/apue$ cp Make.def.svr4 Make.defines
[b89098]/home/student/89/b89098/apue$ vim Make.defines
# Definitions required in all program directories to compile and link
# C programs.
CC=cc
@@把路徑改成自己放檔案的地方,可以用pwd來得到目前工作目錄
#Original LDFLAGS=/home/stevens/libmisc.a
LDFLAGS=/home/student/89/b89098/libmisc.a
LDLIBS=$(LDFLAGS)
NOANSICOMPILE.c=$(CC) $(NOANSICFLAGS) $(CPPFLAGS) -c
LINK.c=$(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS)
# Common definitions[m
CFLAGS =
CFLAGSO = -O
@@這裡也一樣
# Original: LIB = /home/stevens/libmisc.a
LIB = /home/student/89/b89098/libmisc.a
# Our library that almost every program needs.
TEMPFILES = core core.* *.o temp.* *.out typescript*
# Common temp files to delete from each directory.
[b89098]/home/student/89/b89098/apue$ cd lib.svr4
[b89098]/home/student/89/b89098/apue/lib.svr4$ ls
Makefile errorlog.c pathalloc.c readn.c servlisten.c spipe.c writen.c
bufargs.c lockreg.c popen.c recvfd.c setfl.c spipe.socket.c
cliconn.c locktest.c prexit.c semaph.c signal.c strerror.c
clrfl.c nspipe.c prmask.c senderr.c signalintr.c systype.sh
daemoninit.c openmax.c ptyfork.c sendfd.c sleep.c tellwait.c
error.c ourhdr.h ptyopen.c servaccept.c sleepus.c ttymodes.c
[b89098]/home/student/89/b89098/apue/lib.svr4$ make
@@它的Shell Script systype.h太舊了,而且會變是錯誤
make `systype.sh`
/bin/sh: systype.sh: command not found
make[1]: Entering directory `/mnt/89/b89098/apue/lib.svr4'
make `systype.sh`
/bin/sh: systype.sh: command not found
make[2]: Entering directory `/mnt/89/b89098/apue/lib.svr4'
make `systype.sh`
/bin/sh: systype.sh: command not found
make[3]: Entering directory `/mnt/89/b89098/apue/lib.svr4'
make `systype.sh`
make[3]: *** [all] Interrupt
make[2]: *** [all] Interrupt
make[1]: *** [all] Interrupt
make: *** [all] Interrupt
@由於systype.sh的格式太過於老舊,且無法辨識linux所以我們自己用svr4來編
[b89098]/home/student/89/b89098/apue/lib.svr4$ make svr4
make "CFLAGS = -O" \
"OBJS = bufargs.o cliconn.o clrfl.o daemoninit.o error.o errorlog.o lockreg.o locktest.o openmax.o pathalloc.o popen.o prmask.o ptyfork.o ptyopen.o readn.o recvfd.o senderr.o sendfd.o servaccept.o servlisten.o setfl.o signal.o signalintr.o sleep.o sleepus.o spipe.o strerror.o tellwait.o ttymodes.o writen.o prexit.o semaph.o" "RANLIB = ls -l" lib
make[1]: Entering directory `/mnt/89/b89098/apue/lib.svr4'
cc -O -c -o bufargs.o bufargs.c
cc -O -c -o cliconn.o cliconn.c
cc -O -c -o clrfl.o clrfl.c
cc -O -c -o daemoninit.o daemoninit.c
cc -O -c -o error.o error.c
cc -O -c -o errorlog.o errorlog.c
cc -O -c -o lockreg.o lockreg.c
cc -O -c -o locktest.o locktest.c
cc -O -c -o openmax.o openmax.c
cc -O -c -o pathalloc.o pathalloc.c
cc -O -c -o popen.o popen.c
cc -O -c -o prmask.o prmask.c
cc -O -c -o ptyfork.o ptyfork.c
cc -O -c -o ptyopen.o ptyopen.c
cc -O -c -o readn.o readn.c
cc -O -c -o recvfd.o recvfd.c
cc -O -c -o senderr.o senderr.c
cc -O -c -o sendfd.o sendfd.c
cc -O -c -o servaccept.o servaccept.c
cc -O -c -o servlisten.o servlisten.c
cc -O -c -o setfl.o setfl.c
cc -O -c -o signal.o signal.c
cc -O -c -o signalintr.o signalintr.c
cc -O -c -o sleep.o sleep.c
sleep.c: In function `sleep':
sleep.c:18: warning: assignment from incompatible pointer type
cc -O -c -o sleepus.o sleepus.c
cc -O -c -o spipe.o spipe.c
cc -O -c -o strerror.o strerror.c
strerror.c:3: conflicting types for `sys_errlist'
/usr/include/stdio.h:557: previous declaration of `sys_errlist'
make[1]: *** [strerror.o] Error 1
make[1]: Leaving directory `/mnt/89/b89098/apue/lib.svr4'
make: *** [svr4] Error 2
[b89098]/home/student/89/b89098/apue/lib.svr4$ vim strerror.c
@由於sys_errlist與stdio.h中的宣告不同 所以發生矛盾
/usr/include/stdio.h:557為
extern __const char *__const sys_errlist[];
strerror.c:3為
extern char *sys_errlist[];
把它註解掉(用stdio.h預設的就好)
@再試一次
[b89098]/home/student/89/b89098/apue/lib.svr4$ make svr4
"OBJS = bufargs.o cliconn.o clrfl.o daemoninit.o error.o errorlog.o lockreg.o locktest.o openmax.o pathalloc.o popen.o prmask.o ptyfork.o ptyopen.o readn.o recvfd.o senderr.o sendfd.o servaccept.o servlisten.o setfl.o signal.o signalintr.o sleep.o sleepus.o spipe.o strerror.o tellwait.o ttymodes.o writen.o prexit.o semaph.o" "RANLIB = ls -l" lib
make[1]: Entering directory `/mnt/89/b89098/apue/lib.svr4'
cc -O -c -o strerror.o strerror.c
strerror.c: In function `strerror':
strerror.c:12: warning: return discards qualifiers from pointer target type
cc -O -c -o tellwait.o tellwait.c
cc -O -c -o ttymodes.o ttymodes.c
cc -O -c -o writen.o writen.c
cc -O -c -o prexit.o prexit.c
cc -O -c -o semaph.o semaph.c
ar rv ../libmisc.a bufargs.o cliconn.o clrfl.o daemoninit.o error.o errorlog.o lockreg.o locktest.o openmax.o pathalloc.o popen.o prmask.o ptyfork.o ptyopen.o readn.o recvfd.o senderr.o sendfd.o servaccept.o servlisten.o setfl.o signal.o signalintr.o sleep.o sleepus.o spipe.o strerror.o tellwait.o ttymodes.o writen.o prexit.o semaph.o
a - bufargs.o
a - cliconn.o
a - clrfl.o
a - daemoninit.o
a - error.o
a - errorlog.o
a - lockreg.o
a - locktest.o
a - openmax.o
a - pathalloc.o
a - popen.o
a - prmask.o
a - ptyfork.o
a - ptyopen.o
a - readn.o
a - recvfd.o
a - senderr.o
a - sendfd.o
a - servaccept.o
a - servlisten.o
a - setfl.o
a - signal.o
a - signalintr.o
a - sleep.o
a - sleepus.o
a - spipe.o
a - strerror.o
a - tellwait.o
a - ttymodes.o
a - writen.o
a - prexit.o
a - semaph.o
ls -l ../libmisc.a
-rw-rw-r-- 1 b89098 student 43528 Mar 4 19:02 ../libmisc.a
make[1]: Leaving directory `/mnt/89/b89098/apue/lib.svr4'
@@好了,回上一層
[b89098]/home/student/89/b89098/apue/lib.svr4$ cd ..
[b89098]/home/student/89/b89098/apue$ ls
DISCLAIMER README datafiles lib.44 mycat printer stdio
Make.def.44 Sourcefiles db.lock.fine lib.sun open proc streams
Make.def.sun advio environ lib.svr4 open.fe pty termios
Make.def.svr4 call file libmisc.a opend sess test
Make.defines calld ipc lock opend.fe signals
[b89098]/home/student/89/b89098/apue$ cd file/
[b89098]/home/student/89/b89098/apue/file$ ls
Makefile changemod.c fileflags.c hello.c longpath.sh ourhdr.h uidgid.c zap.c
access.c conf.c filetype.c hole.c ls1.c seek.c umask.c
cdpwd.c devrdev.c ftw4.c longpath.c mycd.c testerror.c unlink.c
[b89098]/home/student/89/b89098/apue/file$ make access
cc ../libmisc.a access.c ../libmisc.a -o access
[b89098]/home/student/89/b89098/apue/file$ ./access
usage: a.out <pathname>
[b89098]/home/student/89/b89098/apue/file$ ./access /
read access OK
open for reading OK
[b89098]/home/student/89/b89098/apue/file$ exit
Script done on Mon Mar 4 19:03:08 2002
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.30.60
※ 編輯: somi 來自: 140.112.30.60 (03/04 19:38)