博客首页 注册 建议与交流 排行榜 加入友情链接         宝宝相册的专门空间
推荐 投诉 搜索: 帮助

fengyetang

追求卓越
   fengyetang.cublog.cn
关于作者  
姓名:枫叶汤
职业:计算机
年龄:22
位置:
个性介绍:

我的分类  




进程的进一步学习(视频学习新得,还有部分不太明白用法的地方)

1.进程的属性

       pid

       基本属性pid(进程标识符)和ppid 

       pid_t getpid()

       pid_t getppid()

       举例:

 

2. 信用状(安全机制)

       etc/passwdetc/group

 

       int setgroups(size_t num, const gid_t *list)

       int getgroups(size_t num, gid_t *list)

 

      

3.setuid/setgid和系统守护进程

       什么是守护进程?

       总在系统中运行,来等待事情的发生或者完成相应的任务。

 

       real uidsaved uideffective uid

       int setreuid(uid_t ruid, uid_t euid)

       int setuid(uid_t euid)

 

4.uidgid总结

       出错返回-1,正确返回0

       在大部分函数原型在unistd.h中定义

       int setreuid(uid_t ruid, uid_t euid)

       int setregid(gid_t ruid, gid_t euid)

       int setuid(uid_t euid)

       int setgid(gid_t gid)

       int seteuid(uid_t gid)

       int setegid(gid_t gid)

       int setgroups(size_t num, const gid_t *list)函数原型在grp.h

       uid_t getuid()

       uid_t geteuid()

       gid_t getgid()

       gid_t getegid()

       size_t getgroups(size_t size, gid_t list[])

       函数原形在grp.h

      

进程相关信息

       程序参数

              int main(int argc, char *argv[])

              extern char * environ[]

              const char * getenv(const char *name)

              int putenv(const char * string)

              int setenv(const char*name, const char *value, int overwrite)

              例如:

                     putenv(“PATH=/bin;/usr/bin”)

                     setenv(“PATH“,“/bin:/usr/bin“,1)

       资源使用:

              int getrusage(int who, struct rusage *usage)

                     who—RUSAGE_SELFRUSAGE_CHILDRENRUSAGE_BOTH

              #include <sys/resource.h>

              struct rusage{

                     struct timeval ru_utime;

                     struct timeval ru_stime;

                     long int ru_minflt;

                     long int ru_majflt;

                     long int ru_nswap;

                     ……

              }

             

              建立使用限制

                     int getrlimit(int resource, struct rlimit *rlim)

                     Int setrlimit(int resource, const struct rlimit *rlim)

             

                     struct rlimit{

                            long int rlim_cur;//软限制

                            long int rlim_max;//硬限制

                     }

             

                     RLIMIT_AS

                     RLIMIT_COURE

                     RLIMIT_CPU

                     RLIMIT_DATA

                     RLIMIT_FSIZE

                     RLIMIT_MEMLOCK

                     RLIMIT_NOFILE

                     RLIMIT_NPROC

                     RLIMIT_RSS

                     RLIMIT_STACK

进程的基本元素

       创建子进程

              #include <unistd.h>

              pid_t fork();

              特别之处:返回两次,父进程一次,子进程一次。返回次序不定。

              举例:

                           

       等待子进程结束

              pid_t wait4(pid_t pid, int *status, int options, struct rusage *rusage);

              WIFEXITED(status)     WEXITSTATUS(status)       

              WIFSIGNALED(status)        WTERMSIG(status)     

              WIFSTOPPED(status)          WSTOPSIG(status)

             

              pid_t wait(int *status)

              pid_t waitpid(pid_t pid, int *status, int options)

              pid_t wait3(int *status, int options, struct rusage *rusage)

       运行新进程

              int execl(const char *path, const char *arg0,…)

                     //execl(“/bin/cat”,”/bin/cat”,”/etc/passwd”,”/etc/group”,NULL)最后参数必须为                           NULL

              int execlp(const char *path, const char *arg0,…)

                    

              int execle(const char *path, const char *arg0,…)

              int execlv(const char *path, const char **argv)

              int execlvp(const char *path, const char **argv)

              int execlve(const char *path, const char *arg0,…)//系统调用的函数

              运行成功没有返回;失败返回-1

       终止

              void exit(int exitcode)

              void _exit(int exitcode)

              int kill (pid_t pid, int signum)

简单子进程

       system()

              int system(const char *cmd)

              /bin/sh

              示例:

                    

       从进程读或写popen()

              FILE *popen(const char *cmd, const char* mode)

              int pclose(FILE* stream)

会话和进程组

       会话

       控制终端

       进程组

       孤儿进程组

 发表于: 2008-04-26,修改于: 2008-04-26 20:54 已浏览123次,有评论0条 推荐 投诉

  网友评论

  发表评论



Copyright © 2001-2006 ChinaUnix.net All Rights Reserved

感谢所有关心和支持过ChinaUnix的朋友们
页面生成时间:1.5234

京ICP证041476号