#c #menu #fork #pid #ls
#c #меню #fork #pid #ls
Вопрос:
Мне дали некоторый код, и мне нужно адаптировать его, чтобы отобразить меню команд Linux, и когда выбрана команда, программа должна разветвляться и использовать execl для запуска команд в качестве дочернего процесса и отображения его PID. Я новичок в C, так что до сих пор я боролся :/
#include <unistd.h>
#include <stdio.h>
#include "sys/types.h"
#include <sys/wait.h>
int main(){
pid_t pid;
int status = 0;
int i;
pid= fork() ;
if(pid!=0) {
wait(amp;status);
printf ( " I am the parent my PID is %d, myPPID is %d, n ",getpid(),getppid());
printf( "Mychild process has finished. n ");
}else {
printf ( " I am the child , my PID is %d , my PPID is %d n",getpid(),getppid());
sleep(2);
execl ( "/bin/ls",".",(char*)0);
printf( "Can you read this ?n " ) ;
}
return 0;
}
Комментарии:
1. И в чем ваш вопрос к нам?
2. Как бы мне начать это?
3. Вам нужно быть более конкретным. Вы хотите знать о каком-то неправильном поведении представленного кода? (Какой?) Вы хотите знать, как запрограммировать какую-то конкретную операцию? (Что?)
4. Извините, я хотел бы понять, как я могу заставить программу запускать команды Linux при выборе пользователем из меню.
5. Относительно:
printf( "Can you read this ?n " ) ;
exec*()
Команды возвращаются ТОЛЬКО в случаеexec*()
сбоя функции. При таком сбое операторы должны быть:perror( "execl()
сбой» ); выход ( EXIT_FAILURE ); `
Ответ №1:
перед вызовом
fork()
код должен отображать меню, возможно, через некоторые вызовы printf(),
затем введите выбор пользователя
затем используйте этот выбор, возможно, с помощью switch()
оператора, чтобы поместить соответствующий текст в
char *args[] variable
затем используйте эту args[]
переменную при вызове execl()