Sponsored Content
Full Discussion: Read / write file exemples
Top Forums UNIX for Dummies Questions & Answers Read / write file exemples Post 302661463 by unumai on Monday 25th of June 2012 07:30:06 PM
Old 06-25-2012
Quote:
Originally Posted by vbe
What shell are you using? what is your OS?
linux; now i'm using ubuntu instaled on windows and i sure hope that don't make me any problem

---------- Post updated at 02:28 AM ---------- Previous update was at 02:26 AM ----------

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>
#include <errno.h>

union semun {
int val; /* Value for SETVAL */
struct semid_ds *buf; /* Buffer for IPC_STAT, IPC_SET */
unsigned short *array; /* Array for GETALL, SETALL */
struct seminfo *__buf; /* Buffer for IPC_INFO
(Linux-specific) */
};

int main(int argc, char *argv[])
{
FILE *out;
int i;
int mutex, empty, full;
char buffer_sir_citit [100];
struct sembuf sem_down, sem_up;



mutex = semget(26, 1, 0666 | IPC_CREAT | O_EXCL);
if (mutex <= 0)
{
if (errno == EEXIST) mutex = semget(1356, 1, 0666);
else
{printf("fail to get semaphore"); exit(1);}
}
else
{
union semun sem_union;
sem_union.val = 1;
if (semctl(mutex, 0, SETVAL, sem_union) == -1)
{
printf("nu s-a initializat mutex \n");
return(1);
}
}

empty = semget(35, 1, 0666 | IPC_CREAT | O_EXCL);
if (empty <= 0)
{
if (errno == EEXIST) empty = semget(1356, 1, 0666);
else
{printf("fail to get semaphore"); exit(1);}
}
else
{
union semun sem_union;
sem_union.val = 1;
if (semctl(empty, 0, SETVAL, sem_union) == -1)
{
printf("nu s-a initializat empty \n");
return(1);
}
}

full = semget(42, 1, 0666 | IPC_CREAT | O_EXCL);
if (full <= 0)
{
if (errno == EEXIST) full = semget(1356, 1, 0666);
else
{printf("fail to get semaphore"); exit(1);}
}
else
{
union semun sem_union;
sem_union.val = 0;
if (semctl(full, 0, SETVAL, sem_union) == -1)
{
printf("nu s-a initializat full \n");
return(1);
}
}


sem_down.sem_num = 0;
sem_down.sem_op = -1; /* P() */
sem_down.sem_flg = SEM_UNDO;

sem_up.sem_num = 0;
sem_up.sem_op = 1; /* P() */
sem_up.sem_flg = SEM_UNDO;

while (1)
{
scanf("%s\n", buffer_sir_citit);
semop(empty, &sem_down, 1);
semop(mutex, &sem_down, 1);
out = fopen("file.out","w");

if (out<0)
{
printf("Nu exista fisierul \n");
exit(1);
}
fprintf(out, "%s\n", buffer_sir_citit);
fclose(out);

semop(mutex, &sem_up, 1);
semop(full, &sem_up, 1);
}


}



#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>
#include <errno.h>

union semun {
int val; /* Value for SETVAL */
struct semid_ds *buf; /* Buffer for IPC_STAT, IPC_SET */
unsigned short *array; /* Array for GETALL, SETALL */
struct seminfo *__buf; /* Buffer for IPC_INFO
(Linux-specific) */
};

int main()
{

FILE *out;
int i;
int mutex, empty, full;
char buffer_sir_citit [100];
struct sembuf sem_down, sem_up;



mutex = semget(26, 1, 0666 | IPC_CREAT | O_EXCL);
if (mutex <= 0)
{
if (errno == EEXIST) mutex = semget(1356, 1, 0666);
else
{printf("fail to get semaphore"); exit(1);}
}
else
{
union semun sem_union;
sem_union.val = 1;
if (semctl(mutex, 0, SETVAL, sem_union) == -1)
{
printf("nu s-a initializat mutex \n");
return(1);
}
}

empty = semget(35, 1, 0666 | IPC_CREAT | O_EXCL);
if (empty <= 0)
{
if (errno == EEXIST) empty = semget(1356, 1, 0666);
else
{printf("fail to get semaphore"); exit(1);}
}
else
{
union semun sem_union;
sem_union.val = 1;
if (semctl(empty, 0, SETVAL, sem_union) == -1)
{
printf("nu s-a initializat empty \n");
return(1);
}
}

full = semget(42, 1, 0666 | IPC_CREAT | O_EXCL);
if (full <= 0)
{
if (errno == EEXIST) full = semget(1356, 1, 0666);
else
{printf("fail to get semaphore"); exit(1);}
}
else
{
union semun sem_union;
sem_union.val = 0;
if (semctl(full, 0, SETVAL, sem_union) == -1)
{
printf("nu s-a initializat full \n");
return(1);
}
}


sem_down.sem_num = 0;
sem_down.sem_op = -1; /* P() */
sem_down.sem_flg = SEM_UNDO;

sem_up.sem_num = 0;
sem_up.sem_op = 1; /* P() */
sem_up.sem_flg = SEM_UNDO;

while (1)
{
semop(full, &sem_down, 1);
semop(mutex, &sem_down, 1);

out = fopen("file.out","r");

if (out<0)
{
printf("Nu exista fisierul \n");
exit(1);
}

fscanf(out, "%s\n", &buffer_sir_citit);
fclose(out);

semop(mutex, &sem_up, 1);
semop(empty, &sem_up, 1);

printf("%s\n", buffer_sir_citit);
}
}

---------- Post updated at 02:30 AM ---------- Previous update was at 02:28 AM ----------

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>

union semun {
int val; /* Value for SETVAL */
struct semid_ds *buf; /* Buffer for IPC_STAT, IPC_SET */
unsigned short *array; /* Array for GETALL, SETALL */
struct seminfo *__buf; /* Buffer for IPC_INFO
(Linux-specific) */
};
int main(int argc, char *argv[])
{

int s;
struct sembuf sem_b;



s = semget(1356, 1, 0666 | IPC_CREAT);

union semun sem_union;
sem_union.val = 1;
if (semctl(s, 0, SETVAL, sem_union) == -1)
{
printf("Nu exista fisierul \n");
return(1);
}

exit(0);
}


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

int main(int argc, char *argv[])
{
FILE *out;
int i;

out = fopen("file.out","w");

if (argc>1)
for (i=1; i<argc; i++)
fprintf(out, "%s\n", argv[i]);

fclose(out);

exit(0);
}


#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>

union semun {
int val; /* Value for SETVAL */
struct semid_ds *buf; /* Buffer for IPC_STAT, IPC_SET */
unsigned short *array; /* Array for GETALL, SETALL */
struct seminfo *__buf; /* Buffer for IPC_INFO
(Linux-specific) */
};

int main(int argc, char *argv[])
{
int fisier;
int i;
int s;
struct sembuf sem_b;



s = semget(1356, 1, 0666 | IPC_CREAT);


sem_b.sem_num = 0;
sem_b.sem_op = -1; /* P() */
sem_b.sem_flg = SEM_UNDO;
if (semop(s, &sem_b, 1) == -1)
{
fprintf(stderr, "semaphore_p failed\n");
return(1);
}


fisier = open("file.out", O_WRONLY);

if (fisier<0)
{
printf("Nu exista fisierul \n");
exit(1);
}

if (argc>1)
for (i=1; i<argc; i++)
{
write(fisier, argv[i], strlen(argv[i]));
write(fisier, "\n", 1);
}

close(fisier);


exit(0);

}Smilie
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

sed to read and write to very same file

This is likely to be a dumb one. How can I use sed to substitute string occurances having it read from an input file and write to this very same file ? I have a file with lots of occurances of '2006', I want to change it to '2007', but I'd like these changes to be saved on the input file. ... (5 Replies)
Discussion started by: 435 Gavea
5 Replies

2. Shell Programming and Scripting

read and write from a file

I have tried to show the file name whose size is greater than 200 byte in current directory. Please help me. ls -l | tr -s " " " " | cut -f 5,9 -d " " >out.txt #set -a x `cat out.txt` i=0 `cat out.txt` | while do read x echo $x #re=200 j=0 if }" < "200" ] then echo $j j=`expr $j... (2 Replies)
Discussion started by: rinku
2 Replies

3. UNIX for Dummies Questions & Answers

Write/read to file descriptors

Is it possible to write to file descriptor 0 and read from 1 or 2? How could this be implemented? (3 Replies)
Discussion started by: machshev
3 Replies

4. Shell Programming and Scripting

Read/write file with scripting

Is there any way to write to a text file with scripting? I need to write to a text file two lines of text for the amount of files in the current directory. (9 Replies)
Discussion started by: Fred Goldman
9 Replies

5. IP Networking

read/write,write/write lock with smbclient fails

Hi, We have smb client running on two of the linux boxes and smb server on another linux system. During a backup operation which uses smb, read of a file was allowed while write to the same file was going on.Also simultaneous writes to the same file were allowed.Following are the settings in the... (1 Reply)
Discussion started by: swatidas11
1 Replies

6. Shell Programming and Scripting

read and write to xml file

hi i am quite new to shell scripting and need help in reading and writing in xml file i have an xml file with format: <main> <store> <name>ABC</name> <flag>0</flag> <size>123<size> </store> <store> <name>DEF</name> ... (2 Replies)
Discussion started by: kichu
2 Replies

7. Shell Programming and Scripting

File Read and Write

I have got a file in following format: AAAAAAA BBBBBBBB CCCCCCC DDDDDDD I am trying to read this file and out put it in following format: AAAAAAA,BBBBBBB,CCCCCCC,DDDDDD Preferred method is shell or Perl. Any help appreciated. (11 Replies)
Discussion started by: Araoki
11 Replies

8. Shell Programming and Scripting

Read and write in the file

Hello Guys, How all are doing? I have an issue in Unix and want help from all of you I have a file in UNIX which it read by line by line , If at the end of line '0' is written the it should fetch that line into another file and change '0' to '1' and If at the end of line '1' is written then it... (10 Replies)
Discussion started by: adisky123
10 Replies

9. Shell Programming and Scripting

Perl write and read on same file

Hi, I am trying to do a write operation followed by a read operation on the same file through Perl, expecting the output produced by read to contain the new lines added, as follows: #! /usr/bin/perl -w open FH, "+< testfile" or die "$@"; print FH "New content added\n"; while (my $line =... (1 Reply)
Discussion started by: royalibrahim
1 Replies

10. Shell Programming and Scripting

Read/write perl file

Hi I am trying to build a web form where it can take the input from the user and write it to a file. And when I will open that form again that for should read the file that was created at the 1st step and all the fields should auto populate from that file. I have 20 text fields in my form. I... (1 Reply)
Discussion started by: sauravrout
1 Replies
All times are GMT -4. The time now is 12:38 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy