zoukankan      html  css  js  c++  java
  • 中断处理

    主要调用singal()捕捉信号,指定函数处理

    #include <stdio.h>
    #include <sys/wait.h>
    #include <string.h>
    #include <errno.h>

    #define MAXLINE 20
    static void sig_int(int);

    int main(void)
    {
    char buf[MAXLINE]; /* from apue.h */
    pid_t pid;
    int status;

    //捕捉信号
    if(signal(SIGINT, sig_int) == SIG_ERR)
    puts("signal error");

    printf("%% "); /* print prompt (printf requires %% to print %) */
    while (fgets(buf, MAXLINE, stdin) != NULL) {
    if (buf[strlen(buf) - 1] == '\n')
    buf[strlen(buf) - 1] = 0; /* replace newline with null */

    if ((pid = fork()) < 0) {
    puts("fork error");
    } else if (pid == 0) { /* child */
    printf("pid:%d\n", pid);

    execlp(buf, buf, (char *)0);
    printf("couldn't execute: %s\n", buf);
    return 1;
    }

    /* parent */
    if ((pid = waitpid(pid, &status, 0)) < 0)
    {
    printf("waitpid error !status:%d\n", status);
    }
    printf("%% ");
    }
    return 0;
    }
    void sig_int(int signo){
    printf("%s\n", strerror(EINTR));
    }



  • 相关阅读:
    MongoDB 与 MySQL 性能比较
    PySpider简易教程
    使用redis有什么缺点
    禅道
    Shell02
    Shell01
    性能测试06
    性能测试05
    性能测试04
    性能测试03
  • 原文地址:https://www.cnblogs.com/xiangzi888/p/2247754.html
Copyright © 2011-2022 走看看