#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