Создание дочернего процесса в C linux

Создать дочерний процесс с помощью fork() функция.

Родительский процесс выполняет изменение содержимого процесса с помощью execl() функция, которая работает cat f1.c команда.

дочерний процесс запускает traceroute www.google.com команда.

1 ответ

Решение

Прежде чем задавать вопросы здесь, попробуйте сами и опубликуйте то, что вы уже пробовали, чтобы мы могли направить вас в правильном направлении. Также было бы неплохо, если бы вы приложили больше усилий, чтобы задать лучший вопрос. Но чтобы дать вам некоторое руководство:

Вы можете создать дочерний процесс с помощью fork. Возвращает целое число. Если это ноль, это означает, что вы находитесь в дочернем процессе. так что вы можете сделать что-то вроде:

    int pid;
        if((pid=fork())==0){
          // you are in child process
          //use execl(constant char *path, constant char *commands); to run your commands
    }
    else {
          //whatever you need to do in the parent process
}

Вы можете найти информацию о execl() здесь: https://www.systutorials.com/docs/linux/man/3-execl/ Это в основном способ запуска команды. Первый аргумент - это указатель на постоянный символ, который указывает на оболочку, в которой вы хотите выполнить команду ("/bin/sh" и т. Д.). Следующие аргументы - это команда, которая сама (cd, mydir и т. Д.) Завершается нулем.

execl("/bin/sh","cd","mydir",NULL); 
Другие вопросы по тегам