LINUX.ORG.RU

Помогите, пожалуйста, с fork()

 ,


0

1

Добрый вечер! Возник вопрос. Как можно создать несколько дочерних процессов при этом их кол-во бы задавалось аргументом из командной строки?

Все что надумал:

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

int main(int argc, char **argv)
{
	fork();
	return 0;
}

т.е. ничего, ибо в программинге не силен. В приведенном выше примере понятно, что создается один процесс...

Ответ на: комментарий от Eddy_Em

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc, char **argv){
	pid_t pid;
	if(argc != 2) return -1;
	int n = atoi(argv[1]);
	for(int i = 0; i < n; i++)
		if(pid = fork()) printf("fork #%d, pid = %d\n", i, pid);
		else printf("Ha-ha-ha !!!\n");
}
Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Bad_ptr

fork() != 0

!= 0 — лишнее

И вообще, непедагогично давать готовые работающие решения. Хай хоть чуть подумает.

Eddy_Em ☆☆☆☆☆
()
[dunkaist@ddesk fork]$ gcc main.c -o main -Wall -std=c89 -pedantic
[dunkaist@ddesk fork]$ ./main 50 &
[1] 24042
[dunkaist@ddesk fork]$ ps | grep main | wc -l
51
[dunkaist@ddesk fork]$ cat main.c 
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int main(int argc, char **argv)
{
	int	 n, i;

	sscanf(argv[1], "%i", &n);

	for(i=0; i<n; i++)
	{
		if(!fork())
		{
			sleep(10);
			return 0;
		}
	}

	sleep(10);

	return 0;
}
[1]+  Done                    ./main 50
[dunkaist@ddesk fork]$
d ★★★★
()
Ответ на: комментарий от d

Двойку тебе! В следующий раз не будешь давать списывать.

Eddy_Em ☆☆☆☆☆
()

в программинге не силен

Прокачивайтесь в программинге. Сейчас fork() для вас бесполезен.

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

Он не нужен, когда они сами благополучно дохнут.

Дохнут-то они благополучно, а хоронит /sbin/init.

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

Нормальное представление. Классическое. А у того же d — современное. Когда цель — не научить человека что-то делать самостоятельно, а вдолбить в его башку набор стандартных паттернов поведения. В результате получается эдакий баран, который при возникновении внештатных ситуаций ни хрена не представляет, что ему делать.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

Можно не только давать готовое решение, но и сопровождать его комментариями.

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

К сожалению, времени нету учиться этому... Да и не научишься всему.

В результате получается эдакий баран, который при возникновении внештатных ситуаций ни хрена не представляет, что ему делать.

Моя работа не связана с программированием.

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

Тогда какого **** ты забыл в Development?

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

Ты еще вспомни этого, с буквой f и нулем, который заполонил web-devel задачками из «колобка» для первокуров…

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

Я в web-devel не хожу, узнал про него из l-o-r-топика, крайне поразился: «агрессивный невежда».

Но Development за последний месяц стал каким-то «питомничком» для ленивых перкуров. Да какие там перкуры, до уровня средней школы даже не тянут.

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

Похоже, гугол поразился безграмотности и забанил…

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