Я пробовал тысячи опций для синтаксического анализа множества строк, которые хранятся внутри буфера, но не могу найти хороший способ сохранить их строку по строке в массиве * args [] строки. Что я хочу сделать после этого - запустить execvp внутри дочернего процесса.Разбор строки (Unix Shell)
Спасибо!
#include <unistd.h>
#include <stdio.h>
#include <sys/types.h>
#include <stdlib.h>
#define MAX_LINE 80
int main(){
char *args[MAX_LINE/2 + 1];
int should_run = 1;
int background = 1;
char buffer[1024];
while (should_run){
printf("jaime$ ");
int i = 0;
fflush(stdout);
while (fgets(buffer, 1024, stdin)){
sscanf(buffer, "%s", args[i]);
i++;
}
pid_t pid;
pid = fork();
if (pid < 1){
fprintf(stderr, "fork() failed");
..........
Непонятный вопрос. Вы спрашиваете, как разделить и токенизировать входную строку для синтаксического анализа команд с аргументами? –
Вам нужно больше узнать о системном вызове ['fork'] (http://man7.org/linux/man-pages/man2/fork.2.html), вы не проверяете правильный код возврата. –
Joachim, что вы предлагаете для системного вызова fork? Я следую всем инструкциям по операционным системам Concepts ... спасибо! – Jaime