zoukankan      html  css  js  c++  java
  • UNIX基础知识--<<UNIX 环境编程>>读书笔记

    1 shell程序就是位于应用软件与系统调用之间的程序
      每个用户登录系统,系统就会为用户分配shell (用户的登录的口令文件 在  /etc/passwd
    2 ls filename  运行原理
      敲入命令传入main函数参数
      根据argv[1]创建一个指向DIR的目录文件指针,并根据argv[1]创建目录
       在从该目录文件读取文件,返回一个指向struct_dirent类型的指针
       从而输出文件的名称
    代码如下
    #include <stdio.h>
    #include <sys/types.h>
    #include <dirent.h>
    int main(int argc, char* argv[]){
         DIR               *dp;
         struct dirent *dirp;

         if(argc != 2)     {
              printf("usage: ls directory_name");
              exit(0);
         }
         if((dp = opendir(argv[1]))==NULL){
              printf("can't open %s", argv[1]);
              exit(0);
         }
         else {
         while((dirp=readdir(dp)) != NULL )
              printf("%s ", dirp->d_name);
          }
         closedir(dp);
         return 0;
    }
    3 进程ID
     getpid(),  getppid()
    4 fork()          创建一个进程,返回值有两个,返回给父进程的是被创建进程的PID,返回给被创建的进程为0
    例子从标准输入读取命令并执行
    #include <sys/wait.h>
    #include <stdio.h>
    #include <string.h>
    #include <unistd.h>
    int main(void){
         char     buf[256];
         pid_t     pid;
         int          status;

         printf("%% ");
         while(fgets(buf, 256, stdin) != 0){
              if(buf[strlen(buf)-1] == ' ')
                   buf[strlen(buf)-1]=0;

              if((pid=fork()) <0) {
                        printf("fork error");
                   }
              else if(pid==0){
                   execlp(buf, buf, (char*)0);
                   exit(0);
              }
              if((pid=waitpid(pid, &status, 0))<0)
                   printf("waitpid error");
              printf("%% ");
              }
         return 0;
    }
    调用execlp以执行从标准输入读入的命令,这就用新的程序文件替换了子进程原先执行执行的程序文件,
    子进程调用execlp执行新程序文件,而父进程希望等待子进程终止,这一要求由调用watipid实现,其参数指定为要等等待进程的pid
    5 线程ID 只在该线程所属的进程中有效
    6 信号:是通知进程已发生某种情况的一种技术
    进程处理信号的选择
    1 忽略该信号
    2 按系统默认方式处理
    3 提供一个函数
  • 相关阅读:
    动手动脑3
    AWK编程与应用
    BASH内置变量的使用
    服务器交互脚本expect
    编程对话框的界面程序
    每日打卡
    AppiumLibrary中文翻译
    Bootstrap4简单使用
    Python基础06-类与对象
    BDD模式-Python behave的简单使用
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3225993.html
Copyright © 2011-2022 走看看