Problemas de Programação com Processos
Por: Ednelso245 • 3/3/2018 • 1.466 Palavras (6 Páginas) • 349 Visualizações
...
uma mensagem de erro deve ser enviada ao usuário. O interpretador de comandos deve ser encerrado com “exit”.
nano 5_1.c
main(){system(“bin/sh”);}/*Com essa linha de comando foi possível através desse programa em C utilizar todos os processos e programas do shell através do meu código utilizado na distro Debian 8.4.*/
(2) A segunda alternativa considera os mesmos requisitos apresentados na anteriormente, porém considera o uso da chamada de sistema system() para a execução dos comandos presentes no GNU/Linux, especificamente, em “/bin/” e “/sbin”.
5. Incluindo o processo pai inicial, quantos processos são criados
pelo programa mostrado a seguir:
#include<stdio.h>
#include<unistd.h>
int main(){
/*gera um processo filho*/
fork();
/*gera um processo filho*/
fork();
/*gera um processo filho*/
fork();
/*gera um processo filho*/
fork();
/*gera mais um processo filho*/
fork();
return 0; }
32 processos são criados no total. Sendo que 1º é criado o processo do programa em c,
no primeiro fork são realizadas duplicações da quantidade de subprocessos para 2,
no segundo fork são realizadas duplicações da quantidade de subprocessos para 4,
no terceiro fork são realizadas duplicações da quantidade de subprocessos para 8,
no quarto fork são realizadas duplicações da quantidade de subprocessos para 16,
no quinto fork são realizadas duplicações da quantidade de subprocessos para 32.
6. Crie um programa que imprima na tela o ID do processo chamador.
#include<stdio.h>
#include <sys/types.h>
#include <unistd.h>
int main(){}
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
pid_t getpid(void);
pid_t getppid(void);
int main(){ printf("O Pid de processo eh = %d \n", getpid() ); }
7. Crie um programa que imprima na tela o ID do processo chamador e do processo pai do processo chamador. Quem é o processo pai do processo chamador?
#include<stdio.h>
#include <sys/types.h>
#include <unistd.h>
int main(){}
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
pid_t getpid(void);
pid_t getppid(void);
int main(){
printf("O Pid de processo chamador do processo filho: %d \n", getpid() );
printf("O Pid de processo pai do processo chamador é: %d \n", getppid() ); }
8. Crie um programa zombie.c que seja colocado para dormir (forçadamente) por 30 segundos. Abra um novo terminal e por meio do comando “top” verifique o resultado. PS. O comando “sleep(10); para a execução de um processo por dez segundos.
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
int main(){}
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
int main (){
printf("Um processo está sendo criado!\n");
printf("O processo estara dormindo pelos proximos 30 segundos\n!");
wait(sleep(30));
printf("O processo foi finalizado\n!"); }
9. Arquivos em disco suportam acesso sequencial e aleatório. Em C é possível criar os arquivos através de chamadas de sistema. Vejamos algumas chamadas de sistema para manipulação de arquivos:
fopen() Abrir
fclose()Fechar
fputc() Escrever caracter
fgetc() Lê um caracter
fseek() Posicionar em um byte específico
fprintf() Escreve uma cadeia
fscanf() Lê uma cadeia
feof() End of File (Fim do arquivo)
ferror() Ocorreu um erro
rewind()Reloca o indicador para o início
remove() Apaga o arquivos
fflush() Descarrega o arquivos
fout()
Ponteiro para arquivo: variável do tipo FILE
FILE *ponteiro;
Exemplo:
FILE *ponteiro;
Abrindo um arquivo:
ponteiro = fopen (arquivo,
modo) Exemplo:
fp = fopen(“teste.txt”,
...