Первый параметр execvp
ожидает имя исполняемого файла. То, что вы передали, это имя исходного файла. Вам необходимо сначала скомпилировать trial.c, а затем передать имя скомпилированного исполняемого файла в execvp
.
Что касается второго параметра execvp
, последний элемент в массиве должен быть NULL
. Вот как он узнал, что достиг конца списка. Кроме того, условно, что первым параметром программы является имя самой программы.
Итак, сначала скомпилируйте trial.c:
gcc -g -Wall -Wextra -o trial trial.c
Затем измените способ его вызова в main.c:
int main() {
char* args[] = { "trial", "2", "1", NULL };
if(execvp("trial", args) == -1) {
printf("\nfailed connection\n");
return 1;
}