如何快速掌握Alpa分布式机器学习加速器:新手完整指南
2026/4/23 15:13:30
waitpid(-1, status, 0)等同于wait(status)。waitpid函数原型为pid_t waitpid(pid_t pid, int *status, int options)。
参数说明:
pid取值决定回收的子进程范围:
<-1:回收指定进程组内的任意子进程。-1:回收任意子进程(组内外)。0:回收与调用waitpid同进程组的所有子进程。>0:回收指定 PID 的子进程。status:存储子进程退出状态。若无需状态可设为NULL。
options:
0:阻塞等待回收。WNOHANG:非阻塞模式,需通过返回值判断是否回收成功(通常搭配循环使用)。返回值:
-1或0(非阻塞模式下无子进程退出)。EAGAIN表示资源暂时不可用。用于替换当前进程的代码和数据为新程序,不创建新进程(PID 不变)。
execl
int execl(const char *path, const char *arg, ...);path:新程序的完整路径(如"/bin/ls")。arg:参数列表,以NULL结尾(如"ls", "-al", "/bin", NULL)。execlp
int execlp(const char *file, const char *arg, ...);file:通过环境变量PATH查找程序文件名(如"firefox")。execv
int execv(const char *path, char *const argv[]);argv:参数数组(如{"ls", "-al", "/bin", NULL})。execvp
int execvp(const char *file, char *const argv[]);file:通过PATH查找文件名。注意:
printf)不会执行。执行 Shell 命令(如文件操作或信息输出):
int system(const char *command);command:Shell 命令字符串。-1:失败(如fork出错)。实现原理:内部通过fork+exec完成。
获取当前路径
char *getcwd(char *buf, size_t size);buf:存储路径的缓冲区。size:缓冲区大小。buf,失败返回NULL。切换工作目录
int chdir(const char *path);path:目标路径。0成功,-1失败。