APUE學習(一)基礎知識

2021-08-19 14:27:20 字數 4137 閱讀 9231

**段一:

#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 命名空間必須是程式指令碼的...