在Linux中,有多种方法可以创建新进程
示例代码:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
int main() {
pid_t pid = fork();
if (pid < 0) {
perror("fork error");
exit(EXIT_FAILURE);
}
if (pid == 0) {
// 子进程
printf("I am the child process, my pid is %d\n", getpid());
} else {
// 父进程
printf("I am the parent process, my pid is %d\n", getpid());
printf("My child process's pid is %d\n", pid);
}
return 0;
}
示例代码:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
int main() {
pid_t pid = fork();
if (pid < 0) {
perror("fork error");
exit(EXIT_FAILURE);
}
if (pid == 0) {
// 子进程
char *argv[] = {"ls", "-l", NULL};
execvp(argv[0], argv);
perror("execvp error");
exit(EXIT_FAILURE);
} else {
// 父进程
int status;
waitpid(pid, &status, 0);
printf("Child process exited with status %d\n", WEXITSTATUS(status));
}
return 0;
}
这个示例中,父进程使用fork()创建一个子进程,然后在子进程中使用execvp()执行ls -l
命令。父进程等待子进程结束,并打印子进程的退出状态。