Avatar billede unsigned Nybegynder
17. juli 2002 - 22:16 Der er 5 kommentarer og
1 løsning

Lidt hjælp ønskes

Jeg mangler nogle koder. Hvad der mangler fremgår af programkoden nenenunder:

// Forklaring af programmet: (dette program hedder opret fil programmet)
//
// Opret fil programmet skal køre under linux.
// Programmet startes. Hvorfor og af hvad er ligegyldigt.
// Opret fil programmet opretter en tom fil, med navnet notify.
// Filen oprette i  directoryen /var/spool/cron/crontabs/.
// Efter et sekund slettes filen notify igen.
enum {succes, fail}
main()
{
  FILE *filpointer ;
  char filnavn[] = "/var/spool/cron/crontabs/notify" ;
  int reval = succes ;
  if (( filpointer = fopen(filnavn, "w")) == NULL)
  {
      printf("Kan ikke oprette filen notify.") ;
      reval = fail ;
  }
  else
      printf("Filen notify er oprettet.") ;

  # Her skal være kode, der får programudførelsen til at vente et sekund.

  # Her skal være kode, der sletter notify igen.
  if (filen bliver slettet)
      printf("Filen notify er blevet slettet.") ;
  else
  {
      printf("Filen notify kunne ikke slettes.") ;
      reval = fail ;
  }

  // Hvis filen bliver oprettet og slettet, returneres reval med værdien 0 (succes)
  // Hvis der undervejs sker en fejl, returneres reval med værdien 1 (fejl)
  return reval
}
Avatar billede kamikaze Nybegynder
18. juli 2002 - 09:49 #1
Til at slette filen igen kan du bruge
unlink(FILE* fp); // ANSI-C funktion, skal være der

Ved ikke hvordan man vente i et sekund under Linux. Under windows har du en funktion der hedder:
Sleep(DWORD dwMilliSec);
Der må være noget tilsvarende under Linux?!?
Avatar billede unsigned Nybegynder
18. juli 2002 - 15:21 #2
-> kamikaze Det er et program jeg laver for og ven og jeg har ikke linux på min maskine. Derfor kan jeg ikke teste koden. Hvis vi dropper det med at vente et sekund, og indsætter den kode du har foreslået. Vil nedenstående program så køre under linux?

// Forklaring af programmet: (dette program hedder opret fil programmet)
//
// Opret fil programmet skal køre under linux.
// Programmet startes. Hvorfor og af hvad er ligegyldigt.
// Opret fil programmet opretter en tom fil, med navnet notify.
// Filen oprette i  directoryen /var/spool/cron/crontabs/.
// Efter et sekund slettes filen notify igen.
enum {succes, fail}
main()
{
  FILE *filpointer ;
  char filnavn[] = "/var/spool/cron/crontabs/notify" ;
  int reval = succes ;
  if (( filpointer = fopen(filnavn, "w")) == NULL)
  {
      printf("Kan ikke oprette filen notify.") ;
      reval = fail ;
  }
  else
      printf("Filen notify er oprettet.") ;

  # Her skal være kode, der får programudførelsen til at vente et sekund.

  // Her koden, der sletter notify igen.
  if ((unlink(filpointer)) == NULL)
      printf("Filen notify er blevet slettet.") ;
  else
  {
      printf("Filen notify kunne ikke slettes.") ;
      reval = fail ;
  }

  // Her skal være kode, der frigiver filpointer

  // Hvis filen bliver oprettet og slettet, returneres reval med værdien 0 (succes)
  // Hvis der undervejs sker en fejl, returneres reval med værdien 1 (fejl)
  return reval
}
Avatar billede kamikaze Nybegynder
19. juli 2002 - 09:17 #3
Nu blev jeg lige nødt til at dobbelt checkke. Og det var meget heldigt, for unlink tager ikke en FILE* som parameter, men bare filnavnet. Desuden skal du inkludere <stdio.h>.

Fra MSDN:
#include <stdio.h>

void main( void )
{
  if( _unlink( "unlink.obj" ) == -1 )
      perror( "Could not delete 'UNLINK.OBJ'" );
  else
      printf( "Deleted 'UNLINK.OBJ'\n" );
}
Avatar billede kamikaze Nybegynder
19. juli 2002 - 09:19 #4
igen fra MSDN:
Return Value

Each of these functions returns 0 if successful. Otherwise, the function returns &#8211;1 and sets errno to EACCES, which means the path specifies a read-only file, or to ENOENT, which means the file or path is not found or the path specified a directory.
Avatar billede kamikaze Nybegynder
19. juli 2002 - 09:21 #5
Har selv brugt den uden problemer i et framework der skulle køre på både Win2K, Tru64 UNIX og AIX UNIX ...
Avatar billede kamikaze Nybegynder
19. juli 2002 - 11:20 #6
Mht. "...Vil nedenstående program så køre under linux?" -> Du skal jo kompilere den på Linux. Du kan ikke kompilere på Windows og køre på Linux, men det ved du nok godt :o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester