#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/types.h> int main(int argc,char **argv){ pid_t pid=0,ppid=0; uid_t uid=0,euid=0; gid_t gid=0,egid=0; pid=getpid();//进程ID ppid=getppid();//父进程ID uid=getuid();//实际用户ID euid=geteuid();//有效用户ID gid=getgid();//实际组ID egid=getegid();//有效组ID printf("%u,%u,%u,%u,%u,%u\n",pid,ppid,uid,euid,gid,egid); return 0; }
processID.c
#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/types.h> int global; int main(int argc,char **argv){ pid_t pid; int stack=1; int *heap=NULL; heap=(int *)malloc(sizeof(int)); *heap=2; pid=fork(); if(pid<0){ perror("fork()"); exit(1); }else if(pid==0){ global++; stack++; (*heap)++; printf("The child ,pid is %u,stack:%d,heap:%d,global:%d.\n",getpid(),stack,*heap,global); }else{ sleep(2); printf("The parent ,pid is %u,stack:%d,heap:%d,global:%d.\n",getpid(),stack,*heap,global); } exit(0); }
processCreat.c
#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/types.h> int global; int main(int argc,char **argv){ pid_t pd=0; int count=0; if(argc<2){ perror("Usage Error !\n"); exit(1); } for(count=1;count<argc;count++){ pd=fork(); if(pd<0){ perror("fork()"); exit(1); }else if(pd==0){ printf("Child Start PID=%d\t*****\n",getpid()); execl("/bin/ls","ls",argv[count],NULL); perror("execl()"); exit(1); }else{ //wait(1); printf("Child End PID=%d\t*****\n",getpid()); } exit(0); } }
processUseShell.c
#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> #include <strings.h> #include <sys/types.h> //#include <apue.h> int main(int argc,char **argv){ char *command=NULL; int flag=0; command=(char *)malloc(1024*sizeof(char)); memset(command,0,1024*sizeof(char)); while(1){ printf("my-cmd@"); if(fgets(command,100,stdin)!=NULL){ if(strcmp(command,"exit\n")==0){ puts("quit successful!"); break; } flag=system(command); if(flag==-1){ perror("fork()"); exit(1); } memset(command,0,100); } } free(command); command=NULL; exit(0); }processUseSystem.c