Unix 基础

1、列出一个目录所有文件

#include "apue.h"

#include<dirent.h>

.....

DIR *dp;

struct dirent *dirp;

...

if( dp = opendir(argv[1]) == NULL )

...

while( (dirp = readdir(dp) ) != NULL  )

printf( "%s\n", dirp->d_name );

closedir( dp );


//apue.h包含了某些系统头文件


2、标准IO

getc(stdin); putc(c, stdout); ferror(stdin);  err_sys();  err_quit()

不用缓冲IO

open, read, write, lseek, close

n = read( STDIN_FILENO, buf, BUFFERSIZE );


3、进程

使用6个exec函数中的一个由内核将程序读入存储器,并使其执行

getpid()  获取进程ID

进程控制:

fork, exec, waitpid

调用fork创建一个新进程,新进程是调用进程的复制品,调用进程为父进程,新创建的为子进程。

execlp()会从PATH 环境变量所指的目录中查找符合参数file的文件名,找到后便执行该文件,然后将第二个以后的参数当做该文件的argv[0]、argv[1]……,最后一个参数必须用空指针(NULL)作结束。如果用常数0来表示一个空指针,则必须将它强制转换为一个字符指针,否则将它解释为整形参数,如果一个整形数的长度与char * 的长度不同,那么exec函数的实际参数就将出错。如果函数调用成功,进程自己的执行代码就会变成加载程序的代码,execlp()后边的代码也就不会执行了.

#include <unistd.h>
extern char **environ;
int execl(const char *path, const char *arg, ...);
int execlp(const char *file, const char *arg, ...);
int execle(const char *path, const char *arg , ..., char * const envp[]);
int execv(const char *path, char *const argv[]);
int execvp(const char *file, char *const argv[]);

waitpid,其参数指定要等待的进程


4、出错处理

char *strerror( int errnum )
void perror( const char *msg )


5、用户标识

getuid();  getgid()


6、信号

进程对信号的处理:

(1)忽略该信号

(2)按系统默认方式处理

(3)提供一个函数,信号发生时则调用该函数,这被称为信号该信号

if( signal( SIGINT, sig_int ) == SIG_ERR )

.....

//sig_int为捕捉信号后的处理函数


7、时间值

1)日历时间: time_t

2)进程时间: clock_t

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值