Другие языки | Прога на Си
Всем привет, кто понимает в Си, в общем нужно составить программу для Linux
Вот задание
Процесс 1 порождает потомка 2, который в свою очередь порождает потомка 3. С помощью сигналов добиться того, чтобы эти процессы заканчивались в порядке 1, 2,3 с интервалом в 2 с.
С меня +++
Вот задание
Процесс 1 порождает потомка 2, который в свою очередь порождает потомка 3. С помощью сигналов добиться того, чтобы эти процессы заканчивались в порядке 1, 2,3 с интервалом в 2 с.
С меня +++
#include <sys/types.h>
#include <fcntl.h>
#include <stdio.h>
#include <unistd.h> // здесь содержаться fork();,wait();,getpid();
#include <stdlib.h> //из-за нехватки этой библиотеки не работал exit();
void main(void)
{
int pid2, pid3, st; /* process 1 */
printf("Process 1, pid = %d:n", getpid());
pid2 = fork();
if (pid2 < 0)
printf("Cann't create process 2: error %dn", pid2);
if (pid2 == 0)
{ /* process 2 */
printf("Process 2, pid = %d:n", getpid());
pid3 = fork();
if (pid3 < 0)
printf("Cann't create process 3: error %dn", pid3);
if (pid3 == 0)
{ /* process 3 */
printf("Process 3, pid = %d:n", getpid());
sleep(2);
printf("Process 3: endn");
/* process 2 */
wait(&st);
printf("Process 2: endn");
/* process 1 */
wait(&st);
printf("Process 1: endn");
}
}
exit(0);
}
________
посл. ред. 02.04.2017 в 18:55; всего 1 раз(а); by Anton Metronome
Anton Metronome, так там завершение 3,2,1 ,а мне нужно 1,2,3
wladua2016 (02.04.2017 в 18:59)
Anton Metronome, так там завершение 3,2,1 ,а мне нужно 1,2,3
Anton Metronome, так там завершение 3,2,1 ,а мне нужно 1,2,3
Меняй местами )
Anton Metronome, а это точно будет верно? просто я хз в это Си
wladua2016, Ну да ) на виртуалке проверяй
Anton Metronome,
#include <sys/types.h>
#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/wait.h>
int main(){
int pid2, pid3, st; /* process 1 */
printf("Process 1, pid = %d:\n", getpid());
pid2 = fork();
if (pid2 < 0)printf("Cann't create process 2: error %d\n", pid2);
if (pid2 == 0){
/* Процесс 2 */
printf("Process 2, pid = %d:\n", getpid());
pid3 = fork();
if (pid3 < 0)printf("Cann't create process 3: error %d\n", pid3);
if (pid3 == 0){
/* ПРоцесс 3 */
printf("Process 3, pid = %d:\n", getpid());
sleep(1);
printf("\n");
printf("Process 1: end\n");
/* ПРоцесс 1 */
wait(&st);
sleep(2);
printf("Process 2: end\n");
/* Процесс 2 */
wait(&st);
sleep(2);
printf("Process 3: end\n");
/* Процесс 3 */
wait(&st);
}
}
return 0 ;
}
Хз верно ли так
#include <sys/types.h>
#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/wait.h>
int main(){
int pid2, pid3, st; /* process 1 */
printf("Process 1, pid = %d:\n", getpid());
pid2 = fork();
if (pid2 < 0)printf("Cann't create process 2: error %d\n", pid2);
if (pid2 == 0){
/* Процесс 2 */
printf("Process 2, pid = %d:\n", getpid());
pid3 = fork();
if (pid3 < 0)printf("Cann't create process 3: error %d\n", pid3);
if (pid3 == 0){
/* ПРоцесс 3 */
printf("Process 3, pid = %d:\n", getpid());
sleep(1);
printf("\n");
printf("Process 1: end\n");
/* ПРоцесс 1 */
wait(&st);
sleep(2);
printf("Process 2: end\n");
/* Процесс 2 */
wait(&st);
sleep(2);
printf("Process 3: end\n");
/* Процесс 3 */
wait(&st);
}
}
return 0 ;
}
Хз верно ли так
wladua2016, Разверни это на локалке и чекни
Anton Metronome, да я проверил оно выполняет
"printf("Process 2: endn");" что за порнография? Можно же пространство имен подключить и не париться.
cout << "";
cout << "";
Стр.: 1, 2