夫为剑者

示之以虚 开之以利 后之以发 先之以至

常用链接

统计

积分与排名

最新评论

linux上的c编程笔记-------进程的控制

exec函数介绍

            当一个进程调用exec函数执行另一个程序后,这个进程就完全被新程序替代。进程标识号不变,旧进程的其它信息,如:代码段、数据段等均被新进程的替换。新程序从自己的main()函数开始执行。
            #include <unistd.h>
            int execl(const char* pathname,const char* arg(),.../*(char*)0*/);
            int execv(const char* pathname,char* const argv[ ] );
            int execle(const char* pathname,const char* arg(),.../*(char*)0,char*const envp[ ]*/);
            int execve(const char* pathname,char* const argv[ ],char* const envp[ ]);
            int execlp(const char* filename,const char* arg(),.../*(char*)0*/);
            int execvp(const char* filename,char* const argv[ ]);
            错误返回-1,正确返回0;
            以p结尾的表示是以文件名作参数,并在环境变量PATH中查找此文件。
            以l结尾的表示新程序使用罗列出参数的方式传递的。
            以v结尾的表示用参数数组的方式为新程序传递参数。
            以e结尾的表示根据父进程传递的参数设置子进程的环境变量,而不是拷贝父进程的环境变量。
            exec调用后,子进程从父进程继承的属性有:
            父进程id、真实的用户id和组id、进程组id、SESSION id、控制终端、定时器剩余时间、根目录和当前目录、文件缺省创建掩码、其它资源分配、进程的时间记录。

结束进程

         exit和_exit:
         #include <stdlib.h>
         void exit(int status);
         #include <unistd.h>
         void _exit(status.h);

         zombie:已经结束,但父进程尚未检查其终止状态的进程。
         父进程先于子进程结束,init就自动成为该子进程的父进程。

         #include <stdlib.h>
         int atexit(void (*func)(void));    //逆序调用

改变进程的用户id和组id

         设置真实id和有效id
         #include <sys/types.h>
         #include <unistd.h>
         int setuid(uid_t uid);
         int setgid(gid_t gid);
         正常返回0,错误返回-1
         调用规则:
         1.当进程有超级用户权限时,setuid将进程的真实用户id、有效用户id和保存用户id都设成uid;
         2.当进程没有超级用户特权,但uid等于真实用户id或者保存用户id时,只将有效用户id设成uid;
         3.返回错误;

交换真实id和有效id

         #include <sys/types.h>
         #include <unistd.h>
         int setreuid(uid_t ruid,uid_t euid);
         int setregid(gid_t rgid,gid_t egid);

设置有效id

         #include <sys/types.h>
         #include <unistd.h>
         int seteuid(uid_t uid);
         int setegid(gid_t gid);
   
        

posted on 2005-12-07 11:19 vivip 阅读(202) 评论(0)  编辑 收藏 引用 所属分类: 学习笔记


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理