Не могу выполнить netcat

1
задан vcapra1 19 March 2019 в 15:33
поделиться

1 ответ

Проблема в том, что ваш первый аргумент - «4444». Почему?

Посмотрите на эту строку:

execlp("/usr/bin/netcat", "127.0.0.1", "4444", 0);

Первый аргумент для execlp() - это исполняемый двоичный файл. Остальные аргументы будут формировать argv[] -вектор, передаваемый процессу.

По соглашению, argv[0] должно содержать имя исполняемого файла, и первый «реальный» аргумент - argv[1], который в вашем случае - «4444». То, что вы делаете, является эквивалентом оболочки

netcat 4444

, и правильный вызов будет:

execlp("/usr/bin/netcat", "netcat", "127.0.0.1", "4444", 0);

Btw. использование execlp() имеет смысл только при вызове двоичного файла без полного пути, поскольку он ищет сам правильный путь (используя переменную окружения PATH). В противном случае следует использовать execl(). Но это все равно будет работать.

0
ответ дан Ctx 19 March 2019 в 15:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: