Linux--bash、fork、exec、进程替换相关命令

目录

1.bash:

2.fork+exec()例1:

3.fork+exec()例子2:


1.bash:

linux bash是一个命令处理器,通常运行于文本窗口中,并能执行用户直接输入的命令;Bash还能从文件中读取命令,这样的文件称为脚本;和其他Unix shell一样,它支持文件名替换、管道、here文档、命令替换、变量,以及条件判断和循环遍历的结构控制语句。包括关键字、语法在内的基本特性全部是从sh借鉴过来的。其他特性,例如历史命令,是从csh和ksh借鉴而来。总的来说,Bash虽然是一个满足POSIX规范的shell,但有很多扩展。

bash的命令语法是Bourne shell命令语法的超集。

bash实质上是一个可执行程序,一个用户的工作环境。
bash的功能一是可以记入历史命令,第二呢,可以用tab键自动补全。第三。alias命令别名,第四呢,工作控制,可以将某些任务放到后台去运行。再一个是程序脚本就是可以执行shell脚本文件。还有通配符以及内建命令type。

2.fork+exec()例1:

利用bash创建ps命令

利用bash创建ps命令----execl的使用(结合fork)

fork+exec()是Linux上创建新进程方式;

//(1)main.c

#include
#include
#include
#include
#include

int main()
{
    printf("main pid=%d,ppid=%d\n",getpid(),getppid());

    pid_t pid=fork();
    assert(pid!=-1);

    if(pid==0)
    {   
        printf("chilr pid=%d,ppid=%d\n",getpid(),getppid());
        execl("/usr/bin/ps","ps","-f",NULL);
        printf("excel error");
        exit(0);
    }   

    wait(NULL);

    exit(0);

}

Linux--bash、fork、exec、进程替换相关命令_第1张图片 

 

Linux--bash、fork、exec、进程替换相关命令_第2张图片

3.fork+exec()例子2:

当前主程序复制产生一个子进程,子进程用新程序(b)替换自身;

//(2)main2.c

#include
#include
#include
#include
#include
#include

int main(int argc,char *argv[],char *envp[])
{
    printf("main pid=%d\n",getpid());

    pid_t pid=fork();
    assert(pid!=-1);
    
    if(pid==0)
    {   
        char *myargv[]={"b","hello","abc","123",(char *)0};
        execve("./b",myargv,envp);
        perror("execl error");
        exit(0);
    }   
    wait(NULL);
    printf("main over\n");
    exit(0);

 }

Linux--bash、fork、exec、进程替换相关命令_第3张图片

Linux--bash、fork、exec、进程替换相关命令_第4张图片

(3)

//b.c

#include
#include
#include
#include

int main(int argc,char *argv[],char *envp[])
{
    printf("b pid=%d\n",getpid());

    int i=0;
    printf("argc=%d\n",argc);

    for(;i

Linux--bash、fork、exec、进程替换相关命令_第5张图片

 

./main2

Linux--bash、fork、exec、进程替换相关命令_第6张图片

你可能感兴趣的:(代码+运行结果,Linux命令,新手入门,linux,运维,服务器)