c++-多进程_C/C++_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > C/C++ > c++-多进程

c++-多进程

 2010/9/19 23:30:10  deepfuture  http://deepfuture.javaeye.com  我要评论(0)
  • 摘要:深未来技术原创文章,如转载,请注明来源http://deepfuture.javaeye.com/blog/748242!test为产生子进程的父进程,x为子进程,注意x非test进程复制品,因为非fork创建执行结果为:deepfuture@deepfuture-laptop:~$./test子进程ID为7376子进程ID为737766url为deepfuture.javaeye.com66deepfuture调用了我(null)子进程ID-->进程状态=====>7376-
  • 标签:c 多进程

?

深未来技术原创文章,如转载,请注明来源http://deepfuture.javaeye.com/blog/748242!

test为产生子进程的父进程,x为子进程,注意x非test进程复制品,因为非fork创建

执行结果为:

deepfuture@deepfuture-laptop:~$ ./test

子进程ID为7376

子进程ID为7377

66

url为deepfuture.javaeye.com

66

deepfuture调用了我

(null)子进程ID-->进程状态=====>7376-->0

55

url为deepfuture.javaeye.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.javaeye.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.javaeye.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);

}

?


发表评论
用户名: 匿名