Wywoływanie zewn. pliku zprogramu

0

Cześć,
Potrzebuje napisać funkcję, za pomocą której będę mógł wywołać zewnętrzny program w linuxie. Na razie myślałem na takim sposobem, ale nie działa. Pewnie problem jest trywialny-ja niestety nie mogę go dotąd rozgryźć:

  GNU nano 2.2.6             Plik: prog1.c                                      

#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <stdlib.h>
int main(){
printf("Poczatek\n");
if (fork() == 0){
//system('home/mtu/Dokumenty/concorde/TSP/concorde');
execl("home/mtu/Dokumenty/concorde/TSP","concorde", (char *)NULL);
perror("Blad uruchmienia programu");
exit(1);
}
wait(NULL);
printf("Koniec\n");
}

 

Wielkie dzieki za pomoc

0

Co znaczy że nie działa? Za każdym razem wypisuje, że się nie udało? No chyba to jest Twoim zamierzeniem tutaj...

0

To jest wyjście programu:

Poczatek
Blad uruchmienia programu: No such file or directory
Koniec

Podejrzewam, że źle wpisuje ścieżkę do pliku. Z drugiej strony nigdzie nie znalazłem dobrego przykładu wykorzystania tej funkcji.

No nikt nie pomoże? A może jest inny sposób, żeby wywołać jakiś program?

2

Sposób dobry, komputer się nie myli, twoje przypuszczenia też są słuszne - podałeś złą ścieżkę. Taki plik nie istnieje. Sprawdź co się podaje funkcji execl i sprawdź DOKŁADNIE jakie są ścieżki i argumenty które przekazujesz.

www.google.com/search?q=execl
http://www.gnu.org/software/libc/manual/html_node/Process-Creation-Example.html

0

Dzięki. Ogarnąłem ścieżki,a teraz dostaje takie cuś:

 Poczatek
Blad uruchmienia programu: Permission denied
Koniec

Czy istnieje sposób na uruchomienie programu?
Pozdrawiam

2

Tak istnieje. Nie masz praw do pliku, a dokładniej użytkownik na którym program się uruchamia. Użyj chmod.

0

Dzięki. Wracam do walki z kolejnymi wyzwaniami...

1 użytkowników online, w tym zalogowanych: 0, gości: 1