Я новичок в программировании как на Linux, так и на C. Мне нужно написать код ac, который создает два дочерних процесса, и это нормально, но мне нужно дополнительно изменить код одного из дочерних процессов на «код ls-команды», а другого на «код ps-команда ".
Предполагается, что это действительно простой «псевдокод», но я не совсем уверен, понимаю ли я вопрос, какие-либо советы?
Вопрос говорит о создании двух дочерних процессов из вашего основного процесса. Вы также должны возложить некоторую ответственность на процесс. В этом случае обязанности этих двух дочерних процессов заключаются в выполнении функций «Is-command» и «ps_Command».
Вы описываете, что делает серия системных вызовов fork
/ exec
. Найдите руководство и начните читать.
Вы знакомы с командой открывать?
Прочтите эту статью csl.mtu.edu/cs4411.ck/www/NOTES/process/fork/create.html
Звучит как традиционная комбинация fork() + execve()
. Вызов fork()
запускает новый процесс, который является копией вызываемого. И последующий вызов execve("ls")
заменит разветвленный процесс на содержание исполняемого файла ls
.
Для получения дополнительной информации см. man 2 fork
и man 3 execv
.
Спасибо за ответ! Пока у меня есть этот код: `#include <stdio.h> #include <stdlib.h> #include <unistd.h> int main () {printf (" Эта программа создает два дочерних процесса основного процесса. ") ; int child1; int child2; child1 = вилка (); если (ребенок1 == 0) {execve ("ls"); выход (0); } child2 = fork (); если (вилка == 0) {execve ("пс"); выход (0); }} `Итак, насколько я понимаю, значение дочернего процесса должно быть равным 0. Предполагается, что execve изменяет содержимое процесса chil. Но я не уверен, правильно ли я понял.
Да, это более-менее похоже на то, что вы описали. Однако было бы лучше, если бы вы поместили этот фрагмент кода в свой вопрос вместо комментария, потому что его гораздо легче читать, чем.
Следует ли вам самому кодировать настоящие «команды»? Или достаточно execute существующих команд?