深未来技术原创文章,如转载,请注明来源http://deepfuture.iteye.com/blog/748242!
test为产生子进程的父进程,x为子进程,注意x非test进程复制品,因为非fork创建
执行结果为:
deepfuture@deepfuture-laptop:~$ ./test
子进程ID为7376
子进程ID为7377
66
url为deepfuture.iteye.com
66
deepfuture调用了我
(null)子进程ID-->进程状态=====>7376-->0
55
url为deepfuture.iteye.com
55
deepfuture调用了我
(null)子进程ID-->进程状态=====>7377-->0
url为(null)
test.c源代码:
#include <spawn.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/wait.h>
int main(){
int stat;//wait取得进程执行状态
posix_spawnattr_t Attr;
posix_spawn_file_actions_t FileActions;
pid_t Pid;
char *const myargv[]={"/home/deepfuture","deepfuture",NULL};//要调用程序的路径/home/deepfuture和调用这个程序的参数deepfuture,NULL结尾
char *const myargp[]={"myurl=deepfuture.iteye.com",NULL};//环境列表,NULL结尾
posix_spawnattr_init(&Attr);//用默认值初始化新进程的调度、进程 组、信号及标记信息
posix_spawn_file_actions_init(&FileActions); //用默认值初始化文件描述符
posix_spawn(&Pid,"x",&FileActions,&Attr,myargv,myargp);//进程
printf("子进程ID为%d\n",Pid);//子进程PID
posix_spawn(&Pid,"x",&FileActions,&Attr,myargv,myargp);//进程
printf("子进程ID为%d\n",Pid);//子进程PID
Pid=wait(&stat);//异步进程调用,通过wait挂起,并将进程状态返回到stat中
printf("子进程ID-->进程状态=====>%d-->%d\n",Pid,stat);//子进程PID-->进程状态
Pid=wait(&stat);//异步进程调用,通过wait挂起,并将进程状态返回到stat中
printf("子进程ID-->进程状态=====>%d-->%d\n",Pid,stat);//子进程PID-->进程状态
unsetenv("myurl");//清除环境变量
return(0);
}
深未来技术原创文章,如转载,请注明来源http://deepfuture.iteye.com/blog/748242!
x.c源代码:
#include <stdio.h>
#include <stdlib.h>
int main(int argc,char *argv[]){
int x;
scanf("%d",&x); //接受键盘输入
printf("url为%s\n%d\n%s调用了我\n",getenv("myurl"),x,argv[1]);//getenv("myurl")取得环境变量
return (0);
}
分享到:
相关推荐
无亲缘关系多进程,使用互斥同步锁实现内存共享。
### 多进程同步解决生产者消费者问题(C++源码解析) #### 一、问题背景与定义 生产者-消费者问题是一种经典的并发编程问题,它最初由Edsger Dijkstra提出,用来展示信号量机制的应用场景。在这个问题中,存在两类...
用c++实现了多进程对文件的分块读取,并把读取的内容通过c++库函数对LINUX下的命令进行了系统调用
【C++多核高级编程-多进程】 在C++编程中,特别是在利用多核处理器提升性能的场景下,理解和掌握多进程编程至关重要。多进程是指一个应用程序可以同时运行多个独立的执行单元,每个执行单元称为进程。进程是操作...
主要是对dbus进行c++封装成了一个dbus类,对外保留发送和接收的接口,方便使用;另外实现多进程dbus的双向通信测试,详细说明见博客的编译(移植)以及双向通信使用例程>>
编写算法,模拟实现多进程间对临界资源的共享。具体实现要求如下: (1)要求至少有三个进程; (2)一个进程作为原语的管理进程,接受其他进程的临界区进入请求。如果允许进入,则设置相应变量,然后返回;如果不...
Socket,又称为套接字,是操作系统提供的进程间通信(IPC)的一种方式,特别适用于网络通信。在TCP/IP协议栈中,Socket接口用于实现TCP和UDP两种传输层协议,其中TCP提供面向连接的、可靠的数据传输服务,而UDP则是...
`msvcp60.dll`是Microsoft Visual C++运行时库的一部分,用于支持C++程序的运行。`pdh.dll`涉及性能数据查询,可能用于获取系统性能信息。`KeyHook.dll`可能涉及到键盘钩子技术,用于捕获和监控键盘输入,这在某些...
C++ MPI多进程并发
总结起来,"debain7-c++-service"项目展示了如何在Debian 7上使用C++编写和管理守护进程服务,涉及了Linux系统服务的创建、C++编程、进程管理、文件描述符重定向等多个关键知识点。通过学习这个项目,开发者可以深入...
1991年,C++迎来了其重要的转折点——开始了ISO标准化的进程。这一阶段的目标是确保C++能够满足全球开发者的需求,并且能够在不同平台上保持一致性和可移植性。到1998年,C++正式成为ISO标准,这标志着C++已经成为一...
通过`Process`类,开发者可以轻松创建和控制进程,而`NamedMutex`和`NamedEvent`则解决了多进程环境下的同步问题。借助`Pipe`类,可以实现进程间的单向或双向通信,而`SharedMemory`则提供了高速的数据交换途径。...
这种需求可能出现在多种场景下,例如在多进程架构的应用程序中,主进程需要监控子进程的状态;或者在系统监控工具中,需要实时了解系统中运行的所有进程情况。 ### 使用`tlhelp32.h`库进行进程遍历 为了实现这一...
Windows下的多进程间通信及数据共享 Windows下的多进程间通信及数据共享是指在Windows操作系统中,多个进程之间如何实现数据交换和通信的机制。实现这种机制的方法有很多,包括使用socket、管道(Pipe)、信箱...
随着多核处理器的普及,利用多线程或多进程进行并行编程已成为现代软件开发中的一个重要技能。C++标准库提供了`<thread>`等库来支持并发编程,学习如何高效地使用这些工具对于提高程序性能至关重要。 ### 高级算法...
在你提供的"muiltprocessing-master.zip"压缩包中,很可能包含了一个使用上述技术实现的C++多进程并发示例项目。这个项目可能展示了如何使用这两个库协同工作,创建一个可以并行处理任务的系统。通过学习这个项目,...