博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++学习笔记40:进程应用
阅读量:4975 次
发布时间:2019-06-12

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

进程创建

system()函数:用于在程序中执行一条命令

如果shell不能运行,返回127,如果发生其他错误返回-1;

例子:int ret_val = system(“ls -l /”);

 

fork()函数:创建当前进程的副本作为子进程

原型:pid_t fork();

返回值为0(新创建的子进程)和子进程的PID(父进程)

//使用fork()函数创建进程的副本#include 
#include
#include
using namespace std;int main(){ cout << "the main program process ID is" << (int)getpid() << endl; pid_t child_pid = fork(); if (child_pid != 0) { cout << "this is the parent process,with id" << (int)getpid() << endl; cout << "the child's process ID is " << (int)child_pid << endl; } else { cout << "this is the child process,with id " << (int)getpid() << endl; } return 0;}

 

执行命令

  exec()函数簇:不同情况,执行不同的exec()函数

基本模式:在程序中调用fork()创建一个子进程,然后调用exec()在子进程中执行命令

#include 
#include
#include
#include
int spawn(char *program, char **args);int main(){ char *args[] = { "ls","-l","/",NULL }; spawn("ls", args); cout << "done" << '\n'; return 0;}//创建一个子进程运行新程序//program为程序名,arg_list为程序的参数列表;返回值为子进程idint spawn(char * program, char **args){ pid_t child_pid = fork(); //复制进程 if (child_pid ! = 0) //此为父进程 { return child_pid; } else //此为子程序 { execvp(program, args); //执行程序,按路径查找 //只有发生错误时,该函数才返回 std::cerr << "Error occurred when executing execvp.\n"; abort(); }}

 

转载于:https://www.cnblogs.com/hujianglang/p/6271057.html

你可能感兴趣的文章
NS3 日志(Logging)、命令行参数、Tracing系统概述(转载)
查看>>
保存程序配置到ini文件里
查看>>
C#提取汉字拼音首字母的方法
查看>>
Anaconda3 安装报错 bunzip2: command not found
查看>>
一步步学习微软InfoPath2010和SP2010--第十四章节--高级选项(1)--InfoPath规则检查器...
查看>>
PAT1074 Reversing Linked List (25)详细题解
查看>>
写出形似QML的C++代码
查看>>
HDU 1280 前m大的数
查看>>
menu
查看>>
迁移博客
查看>>
java序列化
查看>>
欢迎来怼团队博客地址
查看>>
Dom的样式操作和属性操作
查看>>
电磁波常识
查看>>
关于虚函数,构造函数,非构造函数之间的交叉调用
查看>>
MySql初始配置
查看>>
常用SQL时间格式
查看>>
iOS 加载js获取webView中图片url
查看>>
CF37E Trial for Chief(最短路)
查看>>
CSS实现单行、多行文本溢出显示省略号
查看>>