Fork i exec a CLONE

0

Witam, mógłby ktoś mi wytłumaczyć różnice miedzy forkiem i execem a funkcja clone? Mam prosty program który używa forka i execa do tworzenia nowego procesu. Musze zmienić ten program tak, żeby to działało za pomocą funkcji clone. Jak?

@Edit: innymi słowy: potrzebuje jakiś przykład użycia CLONE, najprotszy jaki może być z opisem, żeby zrozumieć. Na necie jest mało informacji na ten temat, po polsku to juz prawie w ogóle.

Pozdrawiam.

0

Zarówno clone jak i fork służą do tworzenia procesu pochodnego. Clone to rozbudowany system call, który daje pełną kontrolę nad tworzonym dzieckiem. Fork jest prostą i mocno ograniczoną user-friendly biblioteczną nakładką (z glibca) na clone, nie bierze żadnych parametrów a w środku wywołuje clone. Możesz uruchomić program np. pod strace-em i objerzeć dokładnie argumenty przekazywane wewnątrz fork-a do clone.
Więcej szczegółów na temat ww funkcji masz np tutaj: http://stackoverflow.com/questions/4856255/the-difference-between-fork-vfork-exec-and-clone

0

Powiedzmy że mam fragment kodu tworzacy nowy proces, i ładujący do niego program (fork i exec):


	int pid = fork();
	switch(pid)
	{
		case -1:
			perror("fork error\n");
			exit(1);
			break;
		case 0:
			execl("./a.x", "a", nr_sygnalu,nr_operacji,NULL);
			break;
		default: 
		(.....)

Jak teraz zrobić to samo tylko za pomocą clone ?

	clone(CLONE_SIGHAND, 0);

Oczywisćie nie działa. Co w ogóle zwraca clone ?

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