Запуск программы C на Heroku: такого файла нет

Я пытаюсь открыть программу C в скрипте Python, работающем на динамометрическом стенде Heroku. Скрипт на питоне локально работает нормально, а на дино пишет, что не удается найти исполняемый файл. Строка для запуска программы на Python:

Proc = subprocess.Popen(["./backend/test-print"], stdout=subprocess.PIPE, stderr=subprocess.PIPE),

Где backend — папка, содержащая программу test-print и скрипт Python. Я запускаю сценарий Python из корня папки, поэтому он отлично находит сценарий. Журналы Heroku говорят:

FileNotFoundError: [Errno 2] No such file or directory: './backend/test-print'.

Если я запускаю bash на динамометрическом стенде и пытаюсь запустить программу вручную, она выдает ту же ошибку:

Running bash on ⬢ ******** ... up, run.8123 (Eco)
~ $ cd backend
~/backend $ ls
server.py  test-print
~/backend $ ./test-print
bash: ./test-print: No such file or directory

Есть идеи? Заранее спасибо. Я создал тестовую печать программы на своем локальном компьютере (не на том, на котором я запускаю программу).

Я пытался положить программу в корневую /app папку, чтобы посмотреть, найдется ли она потом, но это не сработало.

Обновлено: я также должен добавить, что когда я cat test-print, он отлично находит файл и печатает его содержимое.

Обновлено: type test-print выходы

~/backend $ type test-print 
bash: type: test-print: not found

Обновлено:

~/backend $ ls -laQ
total 28
drwx------ 2 u5587 dyno  4096 Feb 20 16:16 "."
drwx------ 5 u5587 dyno  4096 Feb 20 17:08 ".."
-rw------- 1 u5587 dyno   520 Feb 20 16:16 "server.py"
-rwx------ 1 u5587 dyno 16176 Feb 20 16:16 "test-print"
~/backend $ ls -laq
total 28
drwx------ 2 u5587 dyno  4096 Feb 20 16:16 .
drwx------ 5 u5587 dyno  4096 Feb 20 17:08 ..
-rw------- 1 u5587 dyno   520 Feb 20 16:16 server.py
-rwx------ 1 u5587 dyno 16176 Feb 20 16:16 test-print

~/backend $ id
uid=13747(u13747) gid=13747(dyno) groups=13747(dyno)

Дикое предположение, но попробуйте ls -l test* - есть ли в имени файла начальный или конечный пробел (он будет отображаться в кавычках)?

tdelaney 20.02.2023 17:28
~/backend $ ls -l test* дает -rwx------ 1 u11198 dyno 16176 Feb 20 16:16 test-print
Cole White 20.02.2023 17:30

Попробуйте chmod +x ./test-print

Emanuel P 20.02.2023 17:31

Ладно, мое предположение было неверным... оно должно было отображаться как 'test-print '.

tdelaney 20.02.2023 17:31

@EmanuelP - это будет отображаться как ошибка прав доступа, а не файл не найден.

tdelaney 20.02.2023 17:32

@EmanuelP Я думаю, что у него уже есть права на выполнение

Cole White 20.02.2023 17:32

@ColeWhite Не думай. Гарантировать. :)

Haris 20.02.2023 17:36

Вы можете попробовать strace ./test-print, а потом, когда это не сработает, strace strace ./test-print.

pmacfarlane 20.02.2023 17:38
strace, к сожалению, недоступно на диностенде
Cole White 20.02.2023 17:40

@ColeWhite Пожалуйста, отредактируйте свой вопрос и покажите результат type test-print. Вся запрашиваемая информация или разъяснения должны быть добавлены к вопросу. На какой системе вы строили ./test-print?

Bodo 20.02.2023 17:51

@Bodo Я добавил вывод к вопросу. Я построил программу на своей машине.

Cole White 20.02.2023 17:56

Пожалуйста, покажите вывод ls -laQ и ls -laqв ~/backend. Что такое «моя машина»? Система, в которой вы пытаетесь запустить программу?

Bodo 20.02.2023 18:05

@Bodo Я имею в виду свою локальную машину, а не ту, на которой я запускаю программу. Я добавил результат, который вы просили, к вопросу.

Cole White 20.02.2023 18:10

И вывод id, пожалуйста.

Bodo 20.02.2023 18:12

@Bobo, я добавил вывод

Cole White 20.02.2023 18:15
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
Потяните за рычаг выброса энергососущих проектов
Потяните за рычаг выброса энергососущих проектов
На этой неделе моя команда отменила проект, над которым я работал. Неделя усилий пошла насмарку.
Инструменты для веб-скрапинга с открытым исходным кодом: Python Developer Toolkit
Инструменты для веб-скрапинга с открытым исходным кодом: Python Developer Toolkit
Веб-скрейпинг, как мы все знаем, это дисциплина, которая развивается с течением времени. Появляются все более сложные средства борьбы с ботами, а...
Библиотека для работы с мороженым
Библиотека для работы с мороженым
Лично я попрощался с операторами print() в python. Без шуток.
Эмиссия счетов-фактур с помощью Telegram - Python RPA (BotCity)
Эмиссия счетов-фактур с помощью Telegram - Python RPA (BotCity)
Привет, люди RPA, это снова я и я несу подарки! В очередном моем приключении о том, как создавать ботов для облегчения рутины. Вот, думаю, стоит...
Пошаговое руководство по созданию собственного Slackbot: От установки до развертывания
Пошаговое руководство по созданию собственного Slackbot: От установки до развертывания
Шаг 1: Создание приложения Slack Чтобы создать Slackbot, вам необходимо создать приложение Slack. Войдите в свою учетную запись Slack и перейдите на...
3
15
52
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В выводе u5587 и u13747 есть разные имена пользователей ls и id.

~/backend $ ls -laq
total 28
drwx------ 2 u5587 dyno  4096 Feb 20 16:16 .
drwx------ 5 u5587 dyno  4096 Feb 20 17:08 ..
-rw------- 1 u5587 dyno   520 Feb 20 16:16 server.py
-rwx------ 1 u5587 dyno 16176 Feb 20 16:16 test-print

~/backend $ id
uid=13747(u13747) gid=13747(dyno) groups=13747(dyno)

Пользователь u13747 не имеет права просматривать содержимое текущего каталога или получать доступ к чему-либо в этом каталоге, поскольку он принадлежит другому пользователю и не имеет разрешений для группы dyno или других лиц.

(Это не объясняет, почему cat test-print будет работать.)

Другие вопросы по теме