Προς το περιεχόμενο

C++ Λειτουργικό Σύστημα Άσκηση


gio@

Προτεινόμενες αναρτήσεις

Δημοσ.

Ορίστε η εκφώνηση

Να γραφεί πρόγραμμα σε C το οποίο θα ζητάει από το χρήστη να δώσει το

όνομα ενός αρχείου και έναν ακέραιο αριθμό Χ. Έπειτα θα δημιουργεί μια

διεργασία-παιδί η οποία καλείται να γράψει Χ χαρακτήρες στο αρχείο αυτό

και να τερματίσει.

Μετά τον τερματισμό, ο πατέρας δημιουργεί μια νέα διεργασία-παιδί

η οποία ζητάει εκ νέου από το χρήστη το όνομα ενός αρχείου. Ελέγχει

εάν το αρχείο αυτό υπάρχει ή όχι και εφ’όσον υπάρχει ζητάει από το

χρήστη την άδειά του για να το διαγράψει. Στην περίπτωση κατάφασης το διαγράφει,

ενώ στην αντίθετη περίπτωση τυπώνει το μέγεθος του αρχείου και αποχαιρετάει το χρήστη με ένα μήνυμα στην οθόνη.

 

και να τι έχω κάνει μέχρι τώρα αλλά μου βγάζει προβλήματα αν μπορεί κάποιος να βοηθήσει :rolleyes:

>#include <stdio.h>
#include <fcntl.h>
#include <string.h>
#include <stdlib.h>

main() {
int arithmos,child,child2;
int fd;
long filesize;
char onoma[100],onoma2[100],n;

printf("Dwste to onoma arxeiou:\n");
scanf("%s", onoma);
printf("Dwste akeraio arithmo:\n");
scanf("%d",&arithmos);
child = fork();
if (child == 0) /* child process */
{
int i;

fd = open("onoma", O_WRONLY | O_CREAT);
for (i=0;i<arithmos;i++)
n=write(fd, "onoma","arithmos");
close(fd);
return (5);
}
else /* parent */
{
wait(&child); /* wait for child to finish first */
}
child2 = fork();
if (child2 == 0) /* child process 2 */
{
printf("Dwste to onoma arxeiou:\n");
scanf("%s", onoma2);
if (onoma2==onoma) {
printf("Diagrafi tou arxeiou?\n Apantiste me Y/N\n");
scanf("%s", n);
if (n="Y") { 
remove( "onoma" );
printf( "File successfully deleted" );}
else { 
fseek(onoma, 1, SEEK_END);
filesize = ftell(onoma);
fclose(onoma);
printf("To megethos tou arxeiou einai:" filesize);
}}

Δημοσ.

Τι ακριβώς κάνεις εδω:

fd = open("onoma", O_WRONLY | O_CREAT);

n=write(fd, "onoma","arithmos");

if (onoma2==onoma) {

if (n="Y") {

remove( "onoma" );

 

δες με την ευκαιρία πως ορίζονται οι συναρτησεις ftell,fclose,open,write,close,... για διαχειρηση αρχειων

Δημοσ.

Απο ότι κατάλαβα (του ξαδέρφου είναι η άσκηση :P)

Ανοίγει αρχείο για διάβασμα

Γράφει στο αρχείο?

Συγκρίνει αν υπάρχει αρχείο με ίδιο όνομα

διαγράφει το αρχείο?

Δημοσ.

Τίποτα απο όλα αυτά δεν κάνει.

Δες τα declaration των συναρτησεων

π.χ. κάνε google στο stdio.h και διάβασε τη συνταξη και χρηση των συναρτησεων αυτων για αρχη. Ειναι τελειως λάθος τα ορίσματα που περνας(ει)

Δημοσ.

την άλλαξα λίγο

>#include <stdio.h>
#include <fcntl.h>
#include <string.h>
#include <stdlib.h>
main() {
int arithmos,newkid,newkid2;
int fd;
int n;
int status;
char buf="A";
char onoma[100],onoma2[100];
long filesize;
printf("Dwste to onoma arxeiou:\n");
scanf("%s", onoma);
printf("Dwste akeraio arithmo:\n");
scanf("%d",&arithmos);
newkid = fork();
if (newkid == 0) /* child process */
{
int i;

fd = open(onoma, O_WRONLY | O_CREAT);
for (i=0;i<arithmos;i++)
n=write(fd, buf,1);
close(fd);
return (5);
}
else /* parent */
{
wait(&status); /* wait for child to finish first */
}
newkid2 = fork();
if (newkid2 == 0)
{
printf("Dwste to onoma arxeiou pou psaxnete:\n");
scanf("%s", onoma2);
if (-f onoma2)
{
char x;
printf("Na diagrafei to arxeio? Y i N\n");
scanf("%s", x)
if(x=Y)
{
remove("%s", onoma);
}
else
{
fseek(onoma, 1, SEEK_END);
filesize = ftell(onoma);
fclose(onoma);
printf("To megethos tou arxeiou einai:" filesize);
}}

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...