首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    UNIX高级环境编程 第三次实验 实现带参数的简单Shell

    当fork()函数返回值为0时表示处 于子进程中;而返回值大于0时表示处于父进程中,此时的返回值是子进程的进程id。因此,fork()的返回值可以用来划分仅仅适合父进程 和子进程执行的程序段。...因此在token为或>时,设置相应的flag:0为正常参数,1代表输入重定向,2代表输出重定向。...**file:**如果参数file中包含/,则就将其视为路径名,否则就按 PATH环境变量,在它所指定的各目录中搜寻可执行文件 excel 、execv都是需要给出可执行文件名的绝对路径,execlp、...redirect_stdout中处理,execvp填入可执行文件参数,子进程开始执行,若出错才会执行下面的execvp error打印错误语句,waitpid等 待特定fork后子进程号结束,若出错则同样做出错打印信息处理...,我们可以特 判将参数argv[1]等于使用getenv("HOME")获取家目录的环境变量: if (!

    96120

    Linux模拟实现【简易版bash】

    execvp(); //具体细节先忽略 exit(168); //替换失败后返回,这个值可以自定义 [0, 255] } //父进程等待子进程终止,回收僵尸进程...pid_t id = fork(); if(id == 0) { //直接执行程序替换,这里使用 execvp execvp(argv[0], argv); exit(168); //替换失败后返回...>、>>、< 这三个字符,如果有,就具体问题具体分析,完成重定向 具体实现步骤: 判断字符串中是否含有目标字符,如果有,就置当前位置为 '\0‘,其后半部分不参与指令分割 后半部分就是文件名,在打开文件时需要使用...; //追加 } //直接执行程序替换,这里使用 execvp execvp(argv[0], argv); exit(168); //替换失败后返回 } 具体效果(A.txt 为空...; //追加 } //直接执行程序替换,这里使用 execvp execvp(argv[0], argv); exit(168); //替换失败后返回

    28520

    Linux进程控制【进程程序替换】

    注意: 这七个函数只有在程序替换失败后才会有返回值,返回 -1,程序替换成功后不返回 程序都已经替换成功,后续代码也都将被替换,所以成功后的返回值也就没意义了 2.1、函数1 execl 首先是最简单的替换函数...execl #include int execl(const char* path, const char* arg, ...); 函数解读 返回值:替换失败返回 -1 参数1...表示可变参数列表,可以传递多个参数 注意: 参数选项传递结束或不传递参数,都要在最后加上 NULL,类似于字符串的 '\0' #include #include execvp #include int execvp(const char* file, char* const argv[])...等函数,无论什么语言的文件流操作函数都需要调用它们 ---- 2.7、函数7 execvpe 对 execvp 的再一层封装,使用方法与 execvp 一致,不过最后一个参数可以传递环境变量表 #

    25920

    极简shell制作

    简单配置Linux文件   首先,再开始项目之前,需要先简单配置一下Linux文件,选择一个位置,创建本次项目的目录: mkdir myshell#名字随意,这里方便区分命名myshell   如图所示在该目录下...其实他们的区别很明显,一种 字符串不带空格,一种字符串 带一个或多个空格,比如:   使用C语言的scanf显然是行不通的,在这里我推荐使用 fgets 接口,可以接收输入的空格:   返回值表示输入的字符串...第二个参数表示 以什么字符或字符串为结尾进行切割,返回值表示 返回切割后的子串,如果查找不到切割点了,就会返回NULL。   ...带 ‘v’ 的接口也有三个,execvp 接口是最好的选择,为什么大家可以自己思考一下,很简单: execvp(argv[0], argv);//根据命令在环境变量里查找,在根据选项做出对应的动作   .../处理cd 命令 } return ret; }   处理cd 命令之前我们得先了解cd 命令有哪些特殊表示,cd 命令无外乎:cd -,cd ~,cd /工作目录或文件/,cd。

    14310

    C语言函数大全--e开头的函数

    第一个参数 path 字符指针指向要执行的文件路径, 接下来的参数代表执行该文件时传递的参数列表:argv[0],argv[1]... ,最后一个参数须用空指针 NULL 作结束。...\n"); // 成功则不返回值, 失败返回-1, 失败原因存于errno中,可通过perror()打印 // 第一个参数需要执行文件的全路径,这里写直接文件名,是因为和当前源码在同一目录中...失败返回-1, 失败原因存于errno中,可通过perror()打印 // 第一个参数需要执行文件的全路径,这里直接写文件名,是因为和当前源码在同一目录中 int result = execle...=Huazie", "DATE=2023-03-28", NULL}; // 环境变量 // 成功则不返回值, 失败返回-1, 失败原因存于errno中,可通过perror()打印 // 第一个参数需要执行文件的全路径...int execvp(const char *pathname, char *const argv[]);载入并运行其它程序 注意:execvp 函会从 PATH 环境变量所指的目录中查找符合参数 pathname

    11012

    【Linux程序设计】之进程控制&守护进程

    getpid函数说明如下: 所需头文件 #include 函数功能 取得当前进程的进程号 函数原型 pid_t getpid(void) 函数传入值 无 返回值 成功返回当前进程的标识符...所需头文件 所需头文件 #include 所需头文件 函数功能 取得当前进程的父进程号 函数原型 pid_t getppid(void) 函数传入值 无 返回值 成功返回当前进程的父进程标识符...所需头文件 #include 功能 建立一个新的进程 函数原型 pid_t fork(void) 传入值 无 返回值 执行成功在子进程中返回0,在父进程中返回子进程的pid,失败返回...(const char *file,const char *arg, ...) int execvp(const char *file,char *const argv[] ) 返回值 -1出错 而事实上...("ps","ps","-o","pid,ppid",NULL); 9 execvp("ps",ps_argv); 二、僵尸进程 1、设计一个程序,要求创建一个子进程,子进程显示自己的进程号(PID)后暂停一段时间

    2K20

    #抬抬小手学Python# os 库、 sys 库、getopt 库 与 filecmp 库

    (path) 返回文件名 os.path.join(path1[, path2[, ...]])...把目录和文件名合成一个路径 os.path.exists(path) 如果路径 path 存在,返回 True;如果路径 path 不存在,返回 False。...os.path.isfile(path) 判断路径是否为文件 os.path.isdir(path) 判断路径是否为目录 os.path.getatime(path) 返回最近访问时间(浮点型秒数) os.path.getmtime...(path) 返回最近文件修改时间 os.path.getsize(path) 返回文件大小,如果文件不存在就返回错误 以上函数的使用过程比较容易理解,导入模块之后,调用即可。...函数返回包含 3 个 list 元素的元组,分别表示匹配、不匹配以及错误的文件列表。 错误的文件指的是不存在的文件,或文件被琐定不可读,或没权限读文件,或者由于其他原因访问不了该文件。

    68120
    领券