其实很简单,就是把if(fork()==0){ execve(...);}else{wait(state);}结构中的else去掉就可以了下面是一个示例#include <stdio.h>#include <sys/types.h>#include <unistd.h>#include <wait.h>#include <errno.h>#include <sys/stat.h>#include <string.h>
int main(int argc,char** argv){ int * status; int gc; char command[64]="./clu"; char comarg[64]=""; argv[1]=comarg; while(1) { if((gc=getchar())==''''g'''') { if(fork()==0) { if(execve(command,argv,0)==-1) { printf("process error is %s\n",strerror(errno)); } printf("process is ok\n"); } } if(gc==''''k'''') { printf("to be continue\n"); } if(gc==''''e'''') { return 1; } } }功能是这样的,启动以后会从键盘接受字符,如果是g就运行预先指定好的程序(在这里是一个叫clu的程序),如果是k就打印to be continue,如果是e就退出下面是这个叫clu的程序的代码#include <stdio.h>#include <time.h>
int main(){ long begin=0; long end=24000; long finish=0; long loop1,loop2; time_t flag; time_t nowtime1,nowtime2; if((flag=time(&nowtime1))==-1)exit(1); for(loop1=begin;loop1<end;loop1++) { for(loop2=begin;loop2<end;loop2++) { if((loop1%2)==0) { if((loop2%2)==0) { if(finish>65535) finish=0; finish+=((loop1/2+loop2/2)%2)%2; } } } } if((flag=time(&nowtime2))==-1)exit(1); printf("%ld\n",finish); printf("proccess time %ldsec\n",nowtime2-nowtime1);}这个程序本身没有任何意义,只是纯粹的延误一下时间,输出一下运行的时间,便于测试,在我的AMD2500+上,大概是5秒,你可以试试哦^_^要测试这个程序,可以在程序运行时输入g,但是这个计算不会马上结束,在屏幕还没有输出的时候再输入k,就会先输出k的内容,后台clu的结果出来后才输出到屏幕,也就是clu在后台运行了
Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved. 闵涛 E_mail:admin@mintao.net(欢迎提供学习资源)
鄂公网安备 42011102001154号
站长:MinTao ICP备案号:鄂ICP备11006601号-18