Вам понадобится fork(), а затем запустите одну из функций exec(). Чтобы получить данные из дочернего процесса, вам потребуется некоторая форма связи между дочерними и родительскими процессами, поскольку fork() создаст отдельную копию родительского процесса. В этом примере я использую pipe() для отправки данных из дочернего процесса в родительский процесс.
int fd[2] = {0, 0};
char buf[256] = {0};
int childPid = -1;
if(pipe(fd) != 0){
printf("pipe() error\n");
return EXIT_FAILURE;
}
pid_t pid = fork();
if(pid == 0) {
// child process
close(fd[0]);
write(fd[1], getpid(), sizeof(int));
execvp(process->args[0], process->args);
_exit(0)
} else if(pid > 0){
// parent process
close(fd[1]);
read(fd[0], &childPid, sizeof(childPid));
} else {
printf("fork() error\n");
return EXIT_FAILURE;
}
printf("parent pid: %d, child pid: %d\n", getpid(), childPid);
return 0;
Зачем вам это нужно? – obo
@obounaim, это на самом деле то, как вы знаете PID для детей, чтобы вы знали, что с ними делать. Fork() возвращает PID дочернего элемента, который сохраняется в exec –