xterm: не могу выполнить execvp: нет файла или каталога

Я пишу программу на C в Linux.

Я создал процесс и раздвоил его, чтобы создать ребенка. Я хочу запустить другую программу для этого ребенка, поэтому я использую execlp, Но эта программа должна работать в независимом окне.

if ( (execlp("xterm","xterm","-e","./Child1", "127.0.0.1", (char *) 0)) < 0)  {
printf("Failed to Start the Echo Client. Exiting application.");
return 1;
}

Child1.c это простая программа, которая находится в том же каталоге, что и мой текущий файл.

При выполнении код работает нормально с появлением окна xterm, но я получаю ошибку "xterm: Can't execvp: No file or directory"

Можете ли вы предложить мне решение?

0

Решение

Ваша система может не иметь xterm установлен (или у пользователя неверный PATH). Вы можете проверить существование /usr/bin/xterm (например, access syscall), или используйте что-то еще. Например, многие дистрибутивы Debian или Ubuntu имеют x-terminal-emulator (обычно это символическая ссылка на какую-то конкретную программу), которую вы можете использовать вместо xterm,

Если xterm запускается ваша программа ./Child1 не существует, вы должны проверить его существование (с access) до. Если у вас есть только исходный код ./Child1.c Вы должны были скомпилировать его раньше (возможно, запустив system("gcc -Wall Child1.c -o Child1") до и проверяя, что он успешно скомпилирован, т.е. system возвращает 0 и что Child1 файл существует и является исполняемым).

Вы должны занять время, чтобы прочитать Xterm (1) справочная страница.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]