博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux学习-1进程
阅读量:5250 次
发布时间:2019-06-14

本文共 1309 字,大约阅读时间需要 4 分钟。

在Linux中,在一个程序的内部启动另外一个程序,从而创建一个新进程。

1.这个工作可以通过库函数system来完成。

#include<stdlib.h>

int system (const char *string);

system函数的作用是,运行以字符串参数形式的传递给他打命令并等待该命令完成。命令的执行情况就如同在shell中执行如下的命令:

$ sh -c string

如果无法启动shell来运行这个命令,system函数将返回错误码127,其他错误返回-1.

system.c

#include
#include
int main(){ printf("Running upper with system\n"); system("./upper"); printf("Done.\n"); exit(0);}

编译gcc system.c -o system

执行时./system

此时会发现会执行upper程序。

 

2.创建进程底层接口exec。

exec系列函数由一组相关的函数组成,他们在进程的启动方式和程序参数的表达方式上各有不同。exec函数可以把当前进程替换为一个新进程。你可以使用exec函数将程序的执行从一个程序切换到另一个程序。

exec函数比system函数更有效,因为在新的程序启动后,原来的程序就不再运行了。

#include<unistd.h>

int execl(xxx);

int execlp(xxx);

int execle(xxx);

int execv(xxx);

int execvp(xxx);

int execve(xxx);                        

还是以upper程序为例:

exe_up.c    

#include
#include
#include
int main(){ printf("runing with execlp\n"); execlp("./upper", "/upper", NULL); printf("down"); exit(0);}

 gcc exe_up.c -o exe_up

./exe_up

 

ps:

upper.c

#include
#include
#include
int main(){ int ch; while( EOF != (ch=getchar())) { putchar(toupper(ch)); } exit(0); }

 

gcc upper.c -o upper

 

 以上所有内容来自《Linux程序设计 第四版》

转载于:https://www.cnblogs.com/xiaodeyao/p/6390553.html

你可能感兴趣的文章
python的多行注释
查看>>
连接Oracle需要jar包和javadoc文档的下载
查看>>
UVA 10976 - Fractions Again?!
查看>>
Dreamweaver cc新版本css单行显示
查看>>
【android】安卓的权限提示及版本相关
查看>>
JavaScript可否多线程? 深入理解JavaScript定时机制
查看>>
IOS基础学习
查看>>
Java基础教程——网络基础知识
查看>>
Kruskal基础最小生成树
查看>>
浅谈算法和数据结构: 一 栈和队列
查看>>
【hdu 1429】胜利大逃亡(续)
查看>>
图论-次短路求法
查看>>
What's New for Visual C# 6.0
查看>>
ExtJs学习笔记之ComboBox组件
查看>>
关于收费软件
查看>>
getopt_long
查看>>
TensorFlow MNIST CNN 代码
查看>>
javascript之Style物
查看>>
JSON跨域解决方案收集
查看>>
图的深度优先遍历
查看>>