**段一:
#include
"apue.h"
#include
intmain(
int argc,
char *argv)
make後在../lib生成libapue.a,然後
gcc ls1.c -l ../lib -lapue -i ../include/
連線庫和標頭檔案,可以模擬ls命令,man 1 ls //檢視命令都是man 1
exit()通常用0表示正常終止
**段二:
#include
"apue.h"
#define
buffsize
4096
intmain(
void)
} if(n<
0)
return0;
}
gcc iotest.c -l ../lib -lapue -i ../include/
輸入什麼就得到什麼輸出
stdin,stdout,stderr是行緩衝的,回車重新整理,可以使用》或》重定向到檔案
系統io是不帶緩衝的,例如read,write,lseek,open,close
標準io是帶緩衝的,例如fprint,fread,fwrite
**段三:
#include
"apue.h"
intmain(
void)
效果同上
**段4
#include
"apue.h"
intmain(
void)
執行
sun@sun-pc:~/downloads/linux/unix環境高階程式設計.tar/apue.3e/intro$ gcc hello.c -l ../lib/ -lapue -i ../include/
sun@sun-pc:~/downloads/linux/unix環境高階程式設計.tar/apue.3e/intro$ ./a.out
hello world from process id 13135,parent process id 22719
sun@sun-pc:~/downloads/linux/unix環境高階程式設計.tar/apue.3e/intro$ ps -aux |grep 22719
sun 13151 0.0 0.0 14540 1044 pts/0 s+ 19:14 0:00 grep 22719
sun 22719 0.0 0.0 22940 4760 pts/0 ss 16:47 0:00 /bin/bash
**段5
#include
"apue.h"
#include
intmain(
void)
else
if (pid ==
0) /* parent */
if ((pid =
waitpid(pid, &status,
0)) <
0)err_sys(
"waitpid error");
printf(
"%% "); }
exit(
0); }
執行:
sun@sun-pc:~/downloads/linux/unix環境高階程式設計.tar/apue.3e/intro$ ./a.out
% date
tue may 1 19:46:56 cst 2018
% pwd
/home/sun/downloads/linux/unix環境高階程式設計.tar/apue.3e/intro
% abcde
couldn't execute: abcde: no such file or directory
% sun@sun-pc:~/downloads/linux/unix環境高階程式設計.tar/apue.3e/intro$
extern
intexeclp (
const
char *__file,
const
char *__arg, ...)
execlp
()會從path 環境變數所指的目錄中查詢符合引數file的檔名, 找到後便執行該檔案, 然後將第二個以後的引數當做該檔案的argv[0]、argv[1]……, 最後乙個引數必須用空指標(null)作結束,例如
execlp("ls","ls","-al","/zhmc",(char *)0);
waitpid(pid_t pid,int* status,int option);阻塞等待程序號為pid的子執行緒結束,並**程序號等資源
**段6
#include
"apue.h"
#include
intmain(
int argc,
char *argv)
執行
sun@sun-pc:~/downloads/linux/unix環境高階程式設計.tar/apue.3e/intro$ gcc testerror.c -l ../lib/ -lapue -i ../include/
sun@sun-pc:~/downloads/linux/unix環境高階程式設計.tar/apue.3e/intro$ ./a.out
eacces: permission denied
./a.out: no such file or directory
int
fprintf (
file
*stream,
const char*
format, [argument])
char* strerror(int erorno);
void perror(char*);
**段7
#include #include #include int main(void)
執行:
[root@localhost apue]# ./a.out
uid:0,gid:0
[root@localhost apue]# su sun
[sun@localhost apue]$ ./a.out
uid:500,gid:500
**段8
#include
"apue.h"
#include
static
void
sig_int(
int);
/* our signal-catching function */
intmain(
void)
else
if (pid ==
0) /* parent */
if ((pid =
waitpid(pid, &status,
0)) <
0)err_sys(
"waitpid error");
printf(
"%% "); }
exit(
0); }
void
sig_int(
int signo)
其中signal()如下
#include
"apue.h"
/* reliable version of signal(), using posix sigaction(). */
sigfunc *
signal(
int signo, sigfunc *func)
else
if (
sigaction(signo, &act, &oact) <
0)return(sig_err);
return(oact.
sa_handler); }
訊號詳說
APUE筆記 第一章 UNIX基礎知識
檔案描述符是乙個小的非負整數,核心用以標識乙個待定程序正在存訪的檔案。當核心開啟乙個現存盤案或建立乙個新檔案時,它就返回乙個檔案描述符。當讀 寫檔案時,就可以使用它。函式open read write lseek以及close提供了不用快取的i o。這些函式都用檔案描述符進行工作。標準i o函式提供...
UNIX基礎知識 《APUE》第一章筆記
核心 可將作業系統定義為一種軟體,它控制計算機硬體資源,提供程式執行環境。一般而言,我們稱這種軟體為核心 kernel 它相對較小,位於環境的中心。unix系統呼叫 核心,系統呼叫 shell,庫函式 應用軟體 最下層是核心,最上層是應用軟體 shell shell是一種特殊的應用程式,它為執行其他...
php基礎知識學習(一)
1 php 指令不區分大小寫,但是php變數名區分大小寫 2 include和require都可以引用檔案,但是include引用失敗後可以繼續執行下面的 但是require不可以。3 file和dir的區別 file表示檔案的完整路徑和檔名,dir只表示檔案所在目錄。4 命名空間必須是程式指令碼的...