注册 | 登录
收藏 | 帮助
热门文章
编辑推荐
相关文章  
防病毒必务宝典—计算机病毒专杀
高手支招 巧妙利用系统进程手工杀
清除不明进程msser 珊瑚QQ病毒防
巧妙利用系统进程拒绝病毒侵袭
杀毒全接触:关于mcafee的进程了
ORACLE实例的进程结构和内存结构
存储过程编写经验和优化措施
Windows 2000 常用系统进程列表
Windows 2000进程细述
详细分析进程 手工搞定可疑病毒
您现在的位置: 顶尖设计 >> IT学院 >> 编程开发 >> C >> 文章正文
多进程编程
作者:佚名  来源:不详  点击:  更新:2006-12-19
简介:
sp;        sprintf(command,"ps -t tty%02i",i);
                 system(command);
             }
    3.exec()
        功能:执行一个文件
        语法:#include 
             int execl(path,arg0,...,argn,(char*)0)
             char *path,*arg0,...,*argn;

             int execv(path,argv)
             char *path,*argv[];

             int execle(path,arg0,...,argn,(char*)0,envp)
             char *path,*arg0,...,*argn,*envp[];

             int execve(path,argv,envp)
             char *path,*argv[],*envp[];

             int execvp(file,argv)
             char *file,*argv[];
        说明:这是一个系统调用族, 用于将一个新的程序调入本进程所占的内
             存, 并覆盖之, 产生新的内存进程映象. 新的程序可以是可执行
             文件或SHELL批命令.
             当C程序被执行时,是如下调用的:
             main(int argc,char *argv[],char *envp[]);
             argc是参数个数,是各个参数字符串指针数组,envp是新进程的环
             境变量字符串的指针数组.argc至少为1,argv[0]为程序文件名,
             所以,在上面的exec系统调用族中,path为新进程文件的路径名,
             file为新进程文件名,若file不是全路径名,系统调用会按PATH环
             境变量自动找对应的可执行文件运行.若新进程文件不是一个可
             执行的目标文件(如批处理文件),则execlp()和execvp()会将该
             文件内容作为一个命令解释器的标准输入形成system().
             arg0,...等指针指向'\0'结束的字符串,组成新进程的有效参数,
             且该参数列表以一个空指针结束.反过来,arg0至少必须存在并指
             向新进程文件名或路径名.
             同样,argv是字符串指针数组,argv[0]指向新进程文件名或路径
             名,并以一空指针结束.
             envp是一个字符串指针数组,以空指针结束,这些字符串组成新进
             程的环境.
             在调用这些系统调用前打开的文件指针对新进程来说也是打开的,
             除非它已定义了close-on-exec标志.打开的文件指针在新进程中
             保持不变,所有相关的文件锁也被保留.
             调用进程设置并正被捕俘的信号在新进程中被恢复为缺省设置,
             其它的则保持不变.
             新进程启动时按文件的SUID和SGID设置定义文件的UID和GID为有
             效UID和GID.
             新进程还继承了如下属性:
             . 附加GID.
             . 进程号.
             . 父进程号.
             . 进程组号.
             . 会话号.
             . 控制终端.
             . alarm时钟信号剩下的时间.
             . 当前工作目录.
             . 根目录.
             . 文件创建掩码.
             . 资源限制.
             . 用户时间,系统时间,子进程用户时间,子进程系统时间.
             . 记录锁.
             . 进程信号掩码.
             . 信号屏蔽.
             . 优先级.
             . 预定值.
             调用成功后,系统调用修改新进程文件的最新访问时间.
        返回值:该系统调用一般不会有成功返回值, 因为原来的进程已荡然无
             存.
        例子:printf("now this process will be ps command\n");
             execl("/bin/ps","ps","-ef",NULL);
    4.popen()
        功能:初始化从/到一个进程的管道.
        语法:#include 
             FILE *popen(command,type)
             char *command,type;
        说明:本系统调用在调用进程和被执行命令间创建一个管道.
             参数command做为被执行的命令行.type做为I/O模式,"r"为从被
             执行命令读,"w"为向被执行命令写.返回一个标准流指针,做为管
             道描述符,向被执行命令读或写数据(做为被执行命令的STDIN或
             STDOUT)该系统调用可以用来在程序中调用系统命令,并取得命令
             的输出信息或者向命令输入信息.
        返回值:不成功则返回NULL,成功则返回管道的文件指针.
    5.pclose()
        功能:关闭到一个进程的管道.
        语法:#include 
             int pclose(strm)
             FILE *strm;
        说明:本系统调用用于关闭由popen()打开的管道,并会等待由popen()
             激活的命令执行结束后,关闭管道后读取命令返回码.
        返回值:若关闭的文件描述符不是由popen()打开的,则返回-1.
        例子:printf("now this process will call popen system call\n");
             FILE * fd;
             if ((fd=popen("ps -ef","r"))==NULL) {
                 printf("call popen failed\n");
                 return;
             }
             else {
                 char str[80];
                 while (fgets(str,80,fd)!=NULL)
                     printf("%s\n",str);
             }
             pclose(fd);

上一页  [1] [2] [3] [4] [5] [6] 下一页






  • 上一篇文章:
  • 下一篇文章:
  • 分享此文:该页面添加到 Mister Wong 添加到雅虎Yahoo!收藏 Add to:Del.icio.us Post to Furl Digg this 添加到Google书签 reddit spurl blogmarks 365Key 评论  收藏  分享  打印
     我来说两句
    姓名:       验证码:   
    主页: 
    评分: 1分 2分 3分 4分 5分
    本频道近期热评文章:
      关于我们 | 联系我们 | 站点地图 | 广告投放 | 友情链接 | 在线留言 | 版权申明
    版权所有 © 2004-2007 顶尖设计(bobd.cn)
    未经授权禁止转载,摘编,复制本站内容或建立镜像. 沪ICP备07504942号 
    网络110
    报警服务