Virtlab:Linuxové okénko

Z VirtlabWiki

(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
Verze z 09:00, 15. 9. 2007
Gry72 (Diskuse | příspěvky)

← Předchozí porovnání
Verze z 09:01, 15. 9. 2007
Gry72 (Diskuse | příspěvky)

Následující porovnání →
Řádka 36: Řádka 36:
<pre> <pre>
</pre> </pre>
 +
 +#include <sys/types.h>
 +#include <sys/ipc.h>
 +#include <sys/sem.h>
 +#include <stdio.h>
 +#include <fcntl.h>
 +
 +extern int errno;
 +
 +int main(void) {
 +
 +struct sembuf sb;
 +key_t key;
 +int semid;
 +
 +if ((key=ftok ("/tmp/qqq", '1'))==-1) perror("FTOK:");
 +// zmenit soubor na neco rozumnejsiho z Virtlabu
 +
 +// create one semaphore with no special flags
 +if ((semid = semget (key,1,IPC_CREAT| O_RDWR | 0777))==-1) perror("A:");
 +
 +// set semaphore value to 1
 +sb.sem_num=0;
 +sb.sem_op=1;
 +
Synchronizace se semaforem (spustit poté) Synchronizace se semaforem (spustit poté)
<pre> <pre>
</pre> </pre>

Verze z 09:01, 15. 9. 2007

seznam dobrych rad, osvedcenych postupu, a pod.
Zaznam cinnosti na konzoli
pokud delam praci pres konzoli(ssh) a chci to mit jako reprodukovatelny postup a zaroven jsem lenivy si vsechno psat co jsem udelal, tak existuje programek script ktery je schopen nahravat konzoli a k tomu je scriptreplay ktery umi nahravku prehrat
programy v linuxu:
script - nahrava konzoli (ulozi do souboru nahravku)
scriptreplay - prehrava (cte ze souboru nahravku)


Psaní robustních shell skriptů

Realizace kritické sekce v Bash


LOCKFILE=$SPOJ_DIR/spojovac.lock

# Implementace kriticke sekce s pouzitim LOCKFILE
# noclobber mode: redirection fails if (a regular) file to be written to exists
if ( set -o noclobber; echo "$$" > "$LOCKFILE") 2> /dev/null;
then
  trap 'rm -f "$LOCKFILE"; exit $?' INT TERM EXIT
  <CRITICAL SECTION>
  rm -f "$LOCKFILE"
  trap - INT TERM EXIT 
else
  echo "Failed to acquire LOCKFILE: $LOCKFILE."
  echo "Held by $(cat $LOCKFILE)"
fi
# Opsano z http://www.davidpashley.com/articles/writing-robust-shell-scripts.html


MUTEX promocí UNIXových semaforů


Vytvoření, použití a smazání semaforu (spustit jako první)


  1. include <sys/types.h>
  2. include <sys/ipc.h>
  3. include <sys/sem.h>
  4. include <stdio.h>
  5. include <fcntl.h>

extern int errno;

int main(void) {

struct sembuf sb; key_t key; int semid;

if ((key=ftok ("/tmp/qqq", '1'))==-1) perror("FTOK:"); // zmenit soubor na neco rozumnejsiho z Virtlabu

// create one semaphore with no special flags if ((semid = semget (key,1,IPC_CREAT| O_RDWR | 0777))==-1) perror("A:");

// set semaphore value to 1 sb.sem_num=0; sb.sem_op=1;


Synchronizace se semaforem (spustit poté)



						
			
Osobní nástroje