linux进程控制开发实例
fork.c
#include <sys/types.h> #include <unistd.h> #include <stdio.h> #include <stdlib.h> int main(void) { pid_t result; result = fork(); if (result == -1) { printf("Fork Error!\n"); } else { if (result == 0) { printf("The returned value is %d\nThe child process!!\nMy PID is %d\n", result, getpid()); } else { printf("The returned value is %d\nThe father process!!\nMy PID is %d\n", result, getpid()); } } return 0; }
exec.c
#include <unistd.h> #include <stdio.h> #include <stdlib.h> int main(void) { pid_t result; result = fork(); if (result == 0) { if (execlp("ps", "ps", "-ef", NULL) < 0) { printf("Execlp error\n"); } } return 0; }
waitpid.c
#include <sys/types.h> #include <sys/wait.h> #include <unistd.h> #include <stdio.h> #include <stdlib.h> int main(void) { pid_t pc, pr; pc = fork(); if (pc < 0) { printf("Error fork\n"); } else if (pc == 0) { sleep(5); exit(0); } else { do { pr = waitpid(pc, NULL, WNOHANG); if(pr == 0) { printf("The child process has not exited!\n"); sleep(1); } }while (pr == 0); if (pr == pc) { printf("Get child exit code: %d\n", pr); } else { printf("Some error occured.\n"); } } return 0; }