LINUX.ORG.RU

C++, функция system, зпуск сторонней программы с параметрами.

 ,


0

1

Привет, надо из моей программы запустить стороннюю программу. В терминале для этого я пишу

./linpack/xlinpack_xeon64 -i ./linpack/lininput_xeon64 >/tmp/inff/linpack.txt

В программе написал:

 system("./linpack/xlinpack_xeon64 -i ./linpack/lininput_xeon64 >/tmp/inff/linpack.txt");

Попробовал

system("./linpack/xlinpack_xeon64 -i $PWD/linpack/lininput_xeon64 >/tmp/inff/linpack.txt");

Но всегда получаю ошибку

Could not open file ./linpack/lininput_xeon64, aborted.
или
Could not open file /home/vodka/programming/dounlecode/linpack/lininput_xeon64, aborted.
И скрипт, и программа запускаются с одной и той же директории. В чём проблема, как исправить?

★★★

Либо всегда использовать полные абсолютные пути, либо внимательно работать с текущим каталогом.

Elyas ★★★★★
()

Работаю в Code::Blocks. Как оказалось, если запускать напрямую через эту программу, если даже указаны полные пути в файле, то программа не найдёт файл /home/vodka/programming/dounlecode/linpack/lininput_xeon64

Если запускать самому через терминал или тот же xterm, который используется в Code::Blocks, то всё работает.

Причина этого осталась загадкой. Повторяю, что пути все полные.

iljuase ★★★
() автор топика
Ответ на: комментарий от iljuase

запусти свою программу из консоли под strace

strace ./your_programme_name

увидишь кучу букв, в которых будет путь, по которому твоя программа на самом деле пытается другую программу.

anonymous
()
Ответ на: комментарий от iljuase

добавь перед этим местом while(true) sleep (100);, подключись отладчиком и поковыряйся. Заодно посмотри что в /proc/<pid>/cwd, где pid - ID процесса с запущенной программой. Еще можешь полную командную строку посмотреть, вдруг там что интересное есть.

Kiborg ★★★
()
Ответ на: комментарий от iljuase

когда ловишь ошибку - напечатай errno, текущий каталог и пути. последние в кавычках «» :-) чудес на свете не бывает - путь или не абсолютный, или неправильный.

PS: команда ./linpack/xlinpack_xeon64 -i ./linpack/lininput_xeon64 вообще вызывает смутные подозрения :-) может это она и ругается, просто на том-же наречии :-)

MKuznetsov ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.