06-04-2002
many processes writing to a single file
I have some doubts about the solution you suggested:
I am using Ada83, and writing to the file using Text_Io
which is the standard way to perform basic IO in Ada.
I have no direct access to the system call used to actually
implement the write (although I can of course import the
system call WRITE and call it directly, which is quite ugly
in Ada terms.
The file is actually not a log file but a binary data file,
but I have a log file (Text file) in the system which is
written to directly with no Shared memory buffering,
and I can see instances where a write operation by a process
was interrupted by a call from another process (the log line
fromm the first is cut in half and in the middle lies the line from
the second process), so there is no automatic locking via this call.
The shared memory is needed, as I can understand, to minimize
access to the file for all the processes involved ( there are many),
and instead supply them with a memory area where they dump the data. A single process them accesses the data and pours it in the file. So no harm is caused to the working processes if the IO
is for some reason damaged or stuck.
I am looking for ideas how to reduce mutual wait problems due
to locking of the shared memory resource, maybe by eliminating it
or fragmenting it ?
Thanx
Seeker
9 More Discussions You Might Find Interesting
1. IP Networking
Do anyone telle me please how to use PING command to verify connection (TCP/IP) between serveurs.
thanks (1 Reply)
Discussion started by: hoang
1 Replies
2. Filesystems, Disks and Memory
I have a lot of processes all of which need to write quite
a lot of data to the filesystem ( to a single file).
This is managed today in the following way : all the processes
write the data to a shared memory block, which is manged by a process that empties it to a file, thus allowing more... (1 Reply)
Discussion started by: Seeker
1 Replies
3. Shell Programming and Scripting
Hi all,
Were currently using xapply to run multiple ssh instances that then calls
a script that returns the PID of a webserver process.
Currently we have like 30 xapply statements in a script call checkit which
checks various webserver processes on various unix/linux boxes.
My question... (0 Replies)
Discussion started by: bdsffl
0 Replies
4. UNIX Desktop Questions & Answers
hi friens, :)
if i need to find files with extension .c++,.C++,.cpp,.Cpp,.CPp,.cPP,.CpP,.cpP,.c,.C
wat is the pattern for finding them
:confused: (2 Replies)
Discussion started by: arunsubbhian
2 Replies
5. Shell Programming and Scripting
I am new to the boards and to shell programming and have a requirement to name new files received with a unique sequence number. I need to look at a particular file pattern that exists and then to increment a sequence by 1 and write the new file.
Example of file names and sequence #
... (4 Replies)
Discussion started by: sandiego_coder
4 Replies
6. Shell Programming and Scripting
Hi
I have a set of options in the form of key value in a file. Need to find a particular value of 'a' and delete all lines till the next 'a' keyword .
Ex :
a bbb
c ddd
e fff
g hhh
a sss
c ggg
e xxx
f sss
a ddd
d sss
r sss
g hhh (5 Replies)
Discussion started by: TDUser
5 Replies
7. UNIX for Dummies Questions & Answers
Hi,
Often when I use echo statements in scripts I echo a line of #'s above and below. For example:
echo #####
echo hello world
echo #####
However, I generally have a series of about 75 #'s. For example:
echo #(x 75)
echo hello world
echo #(X 75)
While this helps to delineate... (7 Replies)
Discussion started by: msb65
7 Replies
8. Shell Programming and Scripting
Hello all,
I have a script that has to get variables remotely. Rather than having the script login to the remote server 3 separate times, is there a faster way to get each variable?
##Server comes from input or list##
CHKINSTALL=`ssh server "swlist | grep -i program" | grep -v... (2 Replies)
Discussion started by: LinuxRacr
2 Replies
9. Shell Programming and Scripting
Hi
I have a requirement wherein i need to purge some directories.
I have more than 2000 directories where i need to keep data for 10 days and delete the rest. What i am looking for is an efficient way to achieve this.
There are four mount points from where i need to delete the files.
... (3 Replies)
Discussion started by: Apoorvbarwa
3 Replies
vfork(2) System Calls Manual vfork(2)
Name
vfork - spawn new process in a virtual memory-efficient way
Syntax
pid = vfork()
int pid;
Description
The can be used to create new processes without fully copying the address space of the old process, which is inefficient in a paged envi-
ronment. It is useful when the purpose of would have been to create a new system context for an The system call differs from in that the
child borrows the parent's memory and thread of control until a call to or an exit (either by a call to or abnormally.) The parent process
is suspended while the child is using its resources.
The system call returns a value of zero (0) in the child's context and, later, the pid of the child in the parent's context.
The system call can normally be used just like It does not work, however, to return while running in the childs context from the procedure
which called because the eventual return from would then return to a nonexistent stack frame. Be careful, also, to call _exit rather than
exit if you cannot call because exit will flush and close standard I/O channels and thereby cause problems in the parent process's standard
I/O data structures. Even with it is wrong to call exit, because buffered data would then be flushed twice.
Restrictions
To avoid a possible deadlock situation, processes which are children in the middle of a are never sent SIGTTOU or SIGTTIN signals. Rather,
output or ioctls are allowed, and input attempts result in an end-of-file indication.
Diagnostics
Same as for
See Also
execve(2), fork(2), sigvec(2), wait(2)
vfork(2)