Я хочу запустить из моей программы на С команду csh
.Я сделал это, используя следующий код:
char *csh_command[3];
...
csh_command[2]=(char*)malloc((length_command+strlen("\"\""))*sizeof(char));
csh_command[0]=(char*)malloc((strlen("-f")+1)*sizeof(char));
csh_command[1]=(char*)malloc((strlen("-c")+1)*sizeof(char));
strcat (csh_command[0],"-f");
strcat (csh_command[1],"-c");
strcat (csh_command[2],"\"");
strcat (csh_command[2],full_command);
strcat (csh_command[2],"\"");
pid=fork();
if (pid == 0){
execvp("csh", csh_command);
}
, что я делаю здесь, создаю массив, содержащий параметры для csh
: -f, -c, "[команда для запуска]"
Но результат не тот, который ожидался.Дочерний процесс просто работает в фоновом режиме, ничего не делая.
Мы пытались запустить ls | wc -l
, используя его.
в чем проблема?
РЕДАКТИРОВАТЬ:
Переменная length_command
уже имеет +1 для \0
.Проблема была с массивом, не оканчивающимся на NULL
.И "
были не нужны.