Virtlab:Linuxové okénko
Z VirtlabWiki
(Rozdíly mezi verzemi)
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í)
- 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é)