Dlaczego na Linuxie nic nie dziala? execl

0

Jestem nowym uytkownikiem linuxa, uzywam konkretnie raspbiana i raspberry pi. Przerabiam ksiazke linux programowanie systemowe, mamy taki prosty program.

#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>

int main()
{	
	int ret;
	ret = execl("/usr/bin", "vim", (char*)NULL);
	if(ret == -1)
	{
		perror("execl");
	}
	return 0;
} 

Program sie uruchamia, ale nie moze otworzyc programu vim, widze tylko w konsoli execl:permission denied . Program vim oczywicie jest w katalogu /usr/bin i jego atrybuty to 777. W takim razie gdzie jest problem?

Na windowsie wszystko bylo prostsze. W linuxe co chwile wychodza jakies haczyki.

0

nie jestem pewien, ale tutaj problem może być bardziej "tricky", tzn. problem z permission nie tylko dla ostatniego pliku, ale także dla katalogów WCZEŚNIEJSZYCH.
kiedyś pół dnia siedziałem jak ustawiałem nginx, bo właśnie wyskakiwały problemy z permissions, ale wyszło ostatecznie że dostępy mają być poustawiane od pierwszego katalogu do ostatniego

to jest jedna z takich bardziej ""tricky"" rzeczy, ale nie jestem pewien że na tym polega ten błąd ;)

0

Spróbuj użyć funkcji System() zamiast execl().

0
Pijany Mleczarz napisał(a):

Na windowsie wszystko bylo prostsze. W linuxe co chwile wychodza jakies haczyki.

Linux nigdy nie miał być alternatywą dla Windowsa. To po prostu otwarta implementacja Unixa ;)

Nawet pasuje rekurencyjny akronim "Linux is not Unix" :P ( https://pl.wikipedia.org/wiki/Linux#Nazwa )

Skoro nie pasuje Ci Linuks, to po prostu zainstaluj Windowsa na tym Raspberry...

1

Pierwszy argument to plik do wykonania.

Drugi i kolejne (aż do NULLa) to parametry przekazane programowi. Pierwszy parametr (argv[0]) powinien być nazwą wykonywanego pliku.

 execl("/usr/bin/vim", "/usr/bin/vim", (char*)NULL);
0

@Azarien
Ok, dzięki za pomoc, w książce nie zostało to opisane.

0

Skoro nie pasuje Ci Linuks, to po prostu zainstaluj Windowsa na tym Raspberry...

Jeśli kolega chce się bawić z RPI to raczej jest skazany na Linuxa, jeśli chce postawić jakiś sensowny program. Windows IOT daje bardzo ograniczone możliwości.

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