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; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了