• 大小: 6KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-06
  • 语言: 其他
  • 标签: csapp.h  

资源简介

深入理解操作系统中的头文件和源代码,此处提供下载,免于自己敲代码

资源截图

代码片段和文件信息

/* $begin csapp.c */
#include “csapp.h“

/************************** 
 * Error-handling functions
 **************************/
/* $begin errorfuns */
/* $begin unixerror */
void unix_error(char *msg) /* unix-style error */
{
    fprintf(stderr “%s: %s\n“ msg strerror(errno));
    exit(0);
}
/* $end unixerror */

void posix_error(int code char *msg) /* posix-style error */
{
    fprintf(stderr “%s: %s\n“ msg strerror(code));
    exit(0);
}

void dns_error(char *msg) /* dns-style error */
{
    fprintf(stderr “%s: DNS error %d\n“ msg h_errno);
    exit(0);
}

void app_error(char *msg) /* application error */
{
    fprintf(stderr “%s\n“ msg);
    exit(0);
}
/* $end errorfuns */

/*********************************************
 * Wrappers for Unix process control functions
 ********************************************/

/* $begin forkwrapper */
pid_t Fork(void) 
{
    pid_t pid;

    if ((pid = fork()) < 0)
unix_error(“Fork error“);
    return pid;
}
/* $end forkwrapper */

void Execve(const char *filename char *const argv[] char *const envp[]) 
{
    if (execve(filename argv envp) < 0)
unix_error(“Execve error“);
}

/* $begin wait */
pid_t Wait(int *status) 
{
    pid_t pid;

    if ((pid  = wait(status)) < 0)
unix_error(“Wait error“);
    return pid;
}
/* $end wait */

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);
}

/* $begin kill */
void Kill(pid_t pid int signum) 
{
    int rc;

    if ((rc = kill(pid signum)) < 0)
unix_error(“Kill error“);
}
/* $end kill */

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 = setpgid(pid pgid)) < 0)
unix_error(“Setpgid error“);
    return;
}

pid_t Getpgrp(void) {
    return getpgrp();
}

/************************************
 * Wrappers for Unix signal functions 
 ***********************************/

/* $begin sigaction */
handler_t *Signal(int signum handler_t *handler) 
{
    struct sigaction action old_action;

    action.sa_handler = handler;  
    sigemptyset(&action.sa_mask); /* block sigs of type being handled */
    action.sa_flags = SA_RESTART; /* restart syscalls if possible */

    if (sigaction(signum &action &old_action) < 0)
unix_error(“Signal error“);
    return (old_action.sa_handler);
}
/* $end sigaction */

void Sigprocmask(int how const sigset_t *set sigset_t *oldset)
{
    if (sigprocmask(how set oldset) < 0)
unix_error(“Sigprocmask error“);
    return;
}

void Sigemptyset(sigset_t *set)
{
    if (sigemptyset(set) < 0)
unix_error(“Sigemptyset error“);
    return;
}

void Sigfillset(sigset_t *set)

    if (sigfillset(set) < 0)
unix_error(“Sigfillset error

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      17746  2011-04-02 16:02  csapp.c

     文件       5581  2011-04-02 14:16  csapp.h

----------- ---------  ---------- -----  ----

                23327                    2


评论

共有 条评论

相关资源