Создание дочернего процесса в 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);