解決unix環境高階程式設計的第乙個程式執行問題

2021-09-03 10:07:28 字數 2944 閱讀 5250

嘿q嘿,最近想研究下linux下的網路程式設計,於是乎在網上找了幾本書,前段時間弄的unix的網路程式設計,貌似實在太高深了,我搞不定啊,這不,又找了另外本比較初級的unix環境高階程式設計,嘿嘿,一樣遇到不少問題啊。。。。

看到書上滴第乙個列出指定目錄的內容的那個例子,其實就是shell中  ls  的內容,又讓我受到了不小的打擊。。。

[root@localhost ~]# vi ls.c 

#include "apue.h"

#include

int

main(int argc, char *argv)

~

~

~

"ls.c" 20l, 458c written

[root@localhost ~]# gcc ls.c 

ls.c:1:18: error: apue.h: no such file or directory

ls.c: in function amaina:

ls.c:13: error: anulla undeclared (first use in this function)

ls.c:13: error: (each undeclared identifier is reported only once

ls.c:16: warning: incompatible implicit declaration of built-in function aprintfa

ls.c:19: warning: incompatible implicit declaration of built-in function aexita

[root@localhost ~]# 

2.我儲存到了/root下.解壓縮:tar -xzvf src.tar.gz

3.cd apue.2e進入apue.2e目錄,檢視readme,告訴我們linux系統只要修改make.defines.linux再make

4.vi make.defines.linux 修改wkdir=/root/apue.2e 就是說工作目錄為wkdir=/root/apue.2e

5.修改/root/apue.2e/std/linux.mk把全部的nawk改為awk.因些linux預設沒有nawk

6.make

#include "apue.h"

#include /* for definition of errno */

#include /* iso c variable aruments */

static void err_doit(int, int, const char *, va_list);

/*

* nonfatal error related to a system call.

* print a message and return.

*/

void

err_ret(const char *fmt, ...)

/*

* fatal error related to a system call.

* print a message and terminate.

*/

void

err_sys(const char *fmt, ...)

/*

* fatal error unrelated to a system call.

* error code passed as explict parameter.

* print a message and terminate.

*/

void

err_exit(int error, const char *fmt, ...)

/*

* fatal error related to a system call.

* print a message, dump core, and terminate.

*/

void

err_dump(const char *fmt, ...)

/*

* nonfatal error unrelated to a system call.

* print a message and return.

*/

void

err_msg(const char *fmt, ...)

/*

* fatal error unrelated to a system call.

* print a message and terminate.

*/

void

err_quit(const char *fmt, ...)

/*

* print a message and return to caller.

* caller specifies "errnoflag".

*/

static void

err_doit(int errnoflag, int error, const char *fmt, va_list ap)

以後要想使用時就在程式裡面新增如下語句:

[root@localhost ~]# gcc ls.c 

[root@localhost ~]# ./a.out /etc/

.

..

pam_smb.conf

issue

php.d

sysconfig

gtk-2.0

localtime

login.defs

rc5.d

rc4.d

pinforc

sasl2

pm

bashrc

ntop

unix環境高階程式設計

unix 日曆時間 自1970 年1 月1 日00 00 00 以來的國際標準時間 utc 程序時間 cpu 時間 時鐘時間 程序執行時間的總量。使用者cpu 時間 執行使用者指令時間量。系統cpu 時間 執行核心所經歷時間。命令 time 第三章至第七章 原子操作 任何乙個要求多於1 個函式呼叫的...

unix環境高階程式設計

檔案描述符file descriptor通常是乙個小的非負整數,核心用以標識乙個特定程序正在訪問的檔案。當核心開啟乙個現有檔案或建立乙個新檔案時,它都返回乙個檔案描述符。在讀寫檔案時,可以私用這個檔案描述符。按管理,每當執行乙個新程式時,所有的shell都為其開啟了3個標準檔案描述符 標準輸入,標準...

UNIX環境高階程式設計

本書是被譽為unix程式設計 聖經 的advanced programming in the unix environment一書的更新版。在本書第1版出版後的十幾年中,unix行業已經有了巨大的變化,特別是影響unix程式設計介面的有關標準變化很大。本書在保持了前一版風格的基礎上,根據最新的標準對...