📄 csapp.c
字号:
#include "csapp.h"void unix_error(char *msg){ fprintf(stderr,"%s:%s\n",msg,strerror(errno)); exit(0);}void posix_error(int code,char *msg){ fprintf(stderr,"%s:%s\n",msg,strerror(code)); exit(0);}void dns_error(char *msg){ fprintf(stderr,"%s:DNS error %d\n",msg,h_errno); exit(0);}void app_error(char *msg){ fprintf(stderr,"%s\n",msg); exit(0);}pid_t Fork(void){ pid_t pid; if((pid = fork()) < 0) unix_error("Fork error"); return pid;}void Execve(const char *filename,char *const argv[],char *const envp[]){ if(execve(filename,argv,envp) < 0) unix_error("Execve error");}pid_t Wait(int *status){ pid_t pid; if((pid = wait(status)) < 0) unix_error("Wait error"); return pid;}pid_t Waitpid(pid_t pid,int *iptr,int options){ pid_t retpid; if((retpid = waitpid(pid,iptr,options)) < 0) unix_error("Waitpid error"); return(retpid);}void Kill(pid_t pid,int signum){ int rc; if((rc = kill(pid,signum)) < 0) unix_error("Kill error");}void Pause(){ (void)pause(); return;}unsigned int Sleep(unsigned int secs){ unsigned int rc; if((rc = sleep(secs)) < 0) unix_error("Sleep error"); return rc;}unsigned int Alarm(unsigned int seconds){ return alarm(seconds);}void Setpgid(pid_t pid,pid_t pgid){ int rc; if((rc = strpgid(pid,pgid)) < 0) unix_error("Setpgid error"); return;}pid_t Getpgrp(void){ return getpgrp();}handler_t *Signal(int signum,handler_t *handler){ struct sigaction action,old_action; action.sa_handler = handler; sigemptyset(&action.sa_mask); action.sa_flags = SA_RESTART; if(sigaction(signum,&action,&old_action) < 0) unix_error("Signal error"); return(old_action.sa_handler);}void Sigprocmask(int how,const sigset_t *set,sigset_t *oldest){ if(sigprocmask(how,set,oldset) < 0) unix_error("Sigprocmask error"); return;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -