Linux系统下常用命令(Ubuntu18.04.4)编写第一个程序以及创建进程(fork、waitpid使用)

目录

一.Linux常用命令

man

         ls  

mkdir 

rm

cd及相关命令

cat 

less 

head

tail

echo

mv

vim

:wq

二.如何编写一个C程序 

三.创建进程

fork函数

waitpid函数 

利用fork创建2个子进程 

一.Linux常用命令

man

查看Linux帮助手册,当忘记某个命令用法时,可以使用此命令去查看相应用法 

ls  

显示所有文件夹

mkdir 

创建一个文件夹,比如mkdir program创建一个program文件夹

rm

删除文件夹,比如 rm program删除program文件夹 

cd及相关命令

进入文件夹,比如cd program 进入program文件夹,

和这个命令相关的还有:cd .. :返回上一级目录cd - :返回最近访问目录,cd 后输入想进入文件的首字母+TAB键,会自动补全

cat 

cat 接文件名,读取文件内容

less 

这个命令也是查看文件的命令,但是带有翻页功能,使用上下键可以翻页

 查看文件开头的内容,默认是前10行,通过head-n 接文件名可以指定显示文件具体行数

tail

查看文件的末尾,默认后10行 

echo

向文件中写入内容,用法是 echo 接内容 > 文件名,

使用cat读取文件里面内容:

mv

移动一个文件夹 ,或者重命名

vim

vim命令是创建并打开一个Linux系统上的记事本,如果已经创建就打开文件,一般编辑代码就是在里面编辑

:wq

强制性写入文件并退出 ,一般是进入文件里面编辑后退出到终端命令行,先按Esc后输入,与之相似的还有

wq!:强制保存并退出,(!表示强制执行)

x:保存退出,:x 表示写入文件并退出

:q表示退出,:!q表示强制不保存退出,不对文件进行保存

还有使用上下键能快速复制上下命令 

二.如何编写一个C程序 

首先创建一个.c后缀的文件,我是放到program文件夹下,如下

进入后按i开始编辑程序,如下

编辑完成后首先按Esc键,然后输入:wq退出

使用gcc编译:输入gcc 文件名.c -o 文件名,比如gcc hello.c -ohello如下
编译之后运行:./文件名,如./hello

然后就能看到运行结果了

三.创建进程

fork函数

函数原型:pid_t fork(void)

通过复制正在调用的进程来创建一个新进程,这个新进程称为子进,程创建进程使用fork函数,父进程:返回子进程id号,子进程:返回0,失败:返回-1,使用时需要添加头文件#include<sys/types.h>#include<unistd.h>,使用pid_t定义比如,pid_t pid = fork();

waitpid函数 

函数原型:pid_t waitpid(pid_t pid,int *status,int options)

作用:当用fork启动一个新的子进程的时候,子进程就有了新的生命周期,并将在其自己的地址空间内独立运行。使用Waitpid函数能知道子进程什么时候结束

参数作用:pid

pid>0时,等待进程id等于pid的子进程,只要指定的子进程还没有结束,就会一直等下去。pid=-1时,等待任何一个子进程退出,没有任何限制,此时waitpid和wait的作用时一样的pid=0时,等待同一个进程组中的其他任何子进程,如果子进程已经加入了别的进程组,waitpid不会对它做任何理睬。

status:保存子进程退出的状态

option:控制waitpid使用阻塞还是非阻塞

利用fork创建2个子进程 

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
 
int main()
{
    pid_t pid1,pid2;
    pid1 =  fork();
    if (pid1 < 0)
    {
        printf("fork fail\n");
        exit(-1);
    }
   else if ( pid1 == 0 )
   {
       printf("B\n");
   }
   else
   {                                                                                                                                                       
        pid2=fork();
        if(pid2<0)
        {
            printf("fork error 2\n");
        }
        else if(pid2==0)
        {
            printf("C\n");
        }
       else
       {
            printf("A\n");
            waitpid(pid1,NULL,0);
            waitpid(pid2,NULL,0);                                                                                                                           
            printf("my son has exit!\n");
       }
    }
    return 0;
}

运行结果:

  • 4
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值