linux应用程序开发-进程程序设计
学习之前必须了解基本的概念:
进程,线程,进程3种状态,进程调度以及4种算法,进程同步,死锁,记不清的找度娘。
获取ID
#include<sys/types.h>
#include<unistd.h>
获取本进程ID:
pid_t getpid(void)
获取父进程ID:
pid_t getppid(void)
举例:
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
int main(void)
{
printf("PID=%d\n",getpid());
printf("PID=%d\n",getppid());
return 0;
}
进程创建:
#include<unistd.h>
pid_t fork(void)
创建子进程;被调用一次,返回两次,可能3种取值;
1.父进程中,返回子进程PID;
2.子进程中,返回0;
3.错误返回一个负值;
子进程的数据空间,堆栈空间都会从父进程一个copy,而不是共享。
-vfork
pid_t vfork(void)
区别:vfork子进程与父进程共享数据段。
vfork子进程先执行,父进程后执行。
fork次序不确定;
exec函数族:
被执行的程序替换调用它的程序:
区别:
fork创建一个新进程,产生一个新PID;
exec启动一个新程序,替换原有进程,PID不变。
#include<unistd.h>
int execl(const char*path,const char*arg1,...);
path:被执行的程序名
argn:命令行参数,含参数名,以空指针(NULL)结束
举例:
#include<unistd.h>
main()
{
execl("/bin/ls","ls","-al","/etc/passwd",(char*)0);
}
#include<unistd.h>
int execp(const char*path,const char*arg1,...);
path:被执行的程序名(不含路径,从path环境变量中查找)。
exmple:
execp("ls","ls","-al","/etc/passwd",(char*)0);
#include<unistd.h>
int execv(const char*path, char*const argv[]);
example:
#include<unistd.h>
main
{
char *argvl[]={"ls","-al","/etc/passwd",(char*)0};
execv("/bin/ls",argv);
}
#include<stdlib.h>
int system(const char*sring);
调用fork产生子进程,由子进程调用/bin/sh -c string来执行参数string所代表的命令。
e:
system("ls -al /etc/passwd");
进程等待:
#include<sys/types.h>
#include<sys/wait.h>
pid_t wait(int*status)
阻塞该进程,直到某个进程退出。
linux应用程序开发-进程程序设计的更多相关文章
- linux应用程序开发-进程通信(IPC)
IPC why: 1.数据传输 2.资源共享 目的: 3.通知事件 4.进程控制 发展: 1.UNIX进程间通信 2.基于SYStem V 3.POSIX 方式分类: 1.pipe(管道) FIFO( ...
- 嵌入式Linux应用程序开发详解------(创建守护进程)
嵌入式Linux应用程序开发详解 华清远见 本文只是阅读文摘. 创建一个守护进程的步骤: 1.创建一个子进程,然后退出父进程: 2.在子进程中使用创建新会话---setsid(): 3.改变当前工作目 ...
- linux应用程序开发-文件编程-系统调用方式
在看韦东山视频linux驱动方面有一些吃力,究其原因,虽然接触过linux应用程序编程,但是没有深入去理解,相关函数用法不清楚,正好看到国嵌视频对这一方面讲的比较透彻, 所以把学习过程记录下来,也作为 ...
- 《嵌入式linux应用程序开发标准教程》笔记——6.文件IO编程
前段时间看APUE,确实比较详细,不过过于详细了,当成工具书倒是比较合适,还是读一读这种培训机构的书籍,进度会比较快,遇到问题时再回去翻翻APUE,这样的效率可能更高一些. <嵌入式linux应 ...
- Linux入门-程序开发
Linux程序开发 linux程序总体上来说是分两部分的: 1. 底层驱动程序开发: 2.应用层应用程序开发: 驱动程序 一般情况下驱动是跟内核与硬件有关系的,编程语言是C语言,需要懂一些硬件的知识, ...
- Linux从程序到进程
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 在高级语言中,这些内存管理的细节对于用户来说不透明.在编程的时候,我们只需要记住上 ...
- 【Linux】程序、进程和线程的区别
程序.进程和线程的区别 程序是一组指令及参数的集合,指令按照既定的逻辑控制计算机运行.进程则是运行着的程序,是操作系统执行的基本单位.线程则是为了节省资源而可以在同一个进程中共享资源的一个执行单位. ...
- 《嵌入式linux应用程序开发标准教程》笔记——7.进程控制开发
进程是系统资源的最小单元,很重要. 7.1 linux进程的基本概念 定义:一个程序的一次执行过程,同时也是资源分配的最小单元.程序是静态的,而进程是动态的. 进程控制块:linux系统用进程控制块描 ...
- Vs2012于Linux应用程序开发(2):图案
1.1 代码提示功能 在vs中开发中,Visual Assist是一个很优秀的插件,我们仍然能够使用它进行代码的分析,但它仅仅能支持vcxprojproject,因而我们选择对vcxproj的 ...
随机推荐
- WebForm——IIS服务器、开发方式和简单基础
一.B/S和C/S 1.C/S C/S 架构是一种典型的两层架构,其全程是Client/Server,即客户端服务器端架构,其客户端包含一个或多个在用户的电脑上运行的程序,而服务器端有两种,一种是数据 ...
- SourceTree如何连接ssh的仓库地址,这里记录的是客户端需要做的事
1. 2. 打开命令行以后输入ssh-keygen -t rsa -C "example@example.com"',这个地方输入的是你注册gitlab所使用的邮箱.按回车,之后还 ...
- 关于nodejs能同时接受多少个请求的问题?////zzz
关于nodejs能同时接受多少个请求的问题? 最近学习node,看了很多教程,都在赞扬nodejs的异步I/O,异步I/O的特点就是,每接收一个请求,使用异步调用处理请求,不用等待结果,可以继续运行其 ...
- jQuery ajax的traditional参数的作用///////////////////////////////////zzzzzzzzzzz
jQuery ajax的traditional参数的作用 i33 发布时间: 2013/04/03 10:05 阅读: 9859 收藏: 9 点赞: 1 评论: 0 一般的,可能有些人在一个参数有多个 ...
- 夺命雷公狗-----React---17--事件常用的属性
我们可以通过打印的方式将他打印出来看看,如下所示: <!DOCTYPE> <html> <head> <meta charset="utf-8&qu ...
- Qt之添加QLabel的点击事件
QLabel功能为显示了一个字符串或者图片等信息,它本身没有click信号.也就不能够响应click点击事件,有什么办法来实现来,我们可以子类化QLabel,实现MouseXXXEvent.class ...
- 二十一、Java基础--------IO流之综合案例分析
前三篇文章详细介绍了IO流体系所涉及的重点内容,为了帮助理解与学习,本片博客主要是分析一个与IO操作相关的题目. 例1:在我们观看视频时经常要关注的就是视频的时间长度,在学习了IO操作之后,就可以自己 ...
- GridView的高度自适应
接着上面一篇文章. 当GridView不知道parent高度的时候,也就是MeasureSpec是UNSPECIFIED,这个时候,GridView高度为第一个child的高度,并显示滚动条. mIt ...
- 将webservice封装成dll
生成dll文件的步骤如下:1.发布完成后,在浏览器中打开WebService文件,如:http://localhost/WebSer/WebService1.asmx,可以看到WebService1. ...
- html知识
1.doctype作用 doctype标签可以告诉浏览器文档使用哪种HTML或者Xhtml规范.该标签可生命三种DTD类型,是严格版本,过渡版本和基于框架的HTML文档. 声明需要位于文档的最前面,处 ...