定义
![]()
![]()
fork
![]()
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
pid_t fpid;
int count = 0;
printf("main() PID:%d", getpid());
fpid = fork();
if (fpid < 0) {
perror("failed to fork:");
exit(1);
} else if (fpid == 0) {
printf("child PID:%d\n", getpid());
printf("fpid:%d\n", fpid);
count ++;
}
printf("count:%d\n", count);
return 0;
}
![]()
exec函数族
![]()
![]()
execl
![]()
#include <stdio.h>
#include <unistd.h>
// execl执行不带选项的命令pwd
void cmd_fn1(void) {
execl("/bin/pwd", "pwd", NULL); // 第二个参数argv[0]参数是必须的
// execl("/bin/pwd", NULL); // warning
}
// execl执行带选项的命令ls
void cmd_fn2(void) {
execl("/bin/ls", "ls", "-al", "/", NULL);
}
// main
int main(int argc, char *argv[]) {
cmd_fn1();
cmd_fn2();
// 打印各个参数
for (int i = 0; i < argc; i++) {
printf("%s\t", argv[i]);
}
// 判断是否带参数-p
if ((argc == 2) && (strcmp(argv[1], "-p") == 0)) {
printf("Right CMD\n");
} else {
printf("Error CMD\n");
}
return 0;
}
execlp
- 不需要指定命令的全路径,是从PATH环境变量中查找命令
![]()
system
![]()
![]()
![]()
源码
![]()