栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Linux下C程序的编写及其命令行界面下的执行

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Linux下C程序的编写及其命令行界面下的执行

1.通过命令touch main.c创建main.c文档,通过命令ls查看是否创建成功

2. 创建完main.c文件后,进行编写文件,ubuntu下提供了一个程序编辑软件gedit。借助命令gedit main.c就会弹出下图所示的编辑对话框,我们就可以在其中进行编写代码了。

 3、编写完代码后按ctrl+s保存并退出编辑对话框即可。

 4.在命令行输入gcc main.c

 5.我们通过命令 ./a.out 运行该文件,就会运行我们编写的程序了。

3.4  编辑、编译链接、执行C语言并发程序

体验下面程序功能:父进程创建一个子进程,并等待子进程结束;子进程调用execve启动shell的ps命令,查看系统当前的进程信息。

#include

#include

#include

main()

{

  pid_t pid;

  char* str;

  char* path="/bin/ps";

  char* argv[5]={"ps","-a","-x",NULL};

  if ((pid=fork())<0)    //创建子进程

     {

       printf("创建子进程错误n");

       exit(0);

     }

  else if(pid==0)

  {      //以下为子进程代码:

         printf("由子进程运行ps命令,以查看系统当前进程信息。n");

         if (execve(path,argv,0)<0)     //子进程执行ps命令文件

            {

               printf("子进程执行错误n");

               exit(0);

            }

          printf("子进程成功执行n");

          exit(0);  //子进程结束

  }

   // pid>0时继续父进程执行(pid为子进程号):

   wait();   //父进程等待子进程结束

   printf("父进程退出!n");

   exit(0);  //父进程结束

}

 

函数说明(更多的函数查看相关资料):

 (1)、pid_t fork(void)

      创建子进程。如创建成功,在父进程返回子进程代码,在子进程则返回0。fork()创建的子进程与父进程运行于不同的地址空间,即父子各有独立空间,但子进程会复制父进程的资源(如同一份代码,打开文件等等)。父子进程之间的通信只能通过共享内存、消息、管道等方式进行。

(2)、 pid_t wait()

       暂停当前进程的执行,直到有信号来或者子进程结束。

(3)、 void exit(int status)

         正常结束当前进程,并把参数status返回给父进程

(4)、 int execve(const char* filename,char* const argv[],char* const envp[])

执行参数filename字符串所代表的文件路径,argv传递给执行文件,envp为执行文件需要的新环境变量。如执行文件能成功执行则函数不会返回,执行失败返回-1。

(5)、  pid_t vfork(void)

创建子进程。vfork()不同fork()。vfor()创建的子进程与父进程共享同一地址空间,即子进程完全运行在父进程的地址空间上,子进程对虚拟地址空间任何数据的修改,父进程可见。但父进程创建子进程之后,父进程会被阻塞,直到子进程执行exec()或exit()。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/599963.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号