I'm learning with a book: Programming Linux by Kurt Wall (Prentice Hall)
The code below could run in two windows (./lockit /tmp/foo in both for example). There is not problem with the read block (first byte) but when one, apply the write block while in the other is with the read block yet, the error message is:
block write already by -1075043608
and appear every time you press a key (instead of show the pid of the proccess)
But, even you running the program in a window only, happens the same.
I don't get to understand it.
Can you help to correct the code?
Thanks.
---------- Post updated at 11:42 PM ---------- Previous update was at 08:18 PM ----------
Sorry, i had an error.
Deleting line --> close(fd); into /* Desbloqueo */
Adding getchar(); close(fd) after printf("PID %d bloqueado para escritura %s\n", getpid(), argv[1]);
hi, I need to know how to lock a file. I used the following code, but after executing the program the file 'write.txt' remined empty, and I have no idea why.Maybe I'm not using the corresponding syntax for blocking a file. But I deleted then the blocking part and the problem persisted.
see to... (2 Replies)
Hi,
Unless I am missing some serious differences in Mac and linux in terms of C programming, I dont know why this would happen. Please take a look at the following piece of code fragment:
bool add_input_to_db(Cons *new_data) {
// Set the attributes of the lock
struct flock fl =... (3 Replies)
Hi
I need to append the following block of statements in the middle of the file:
#
openpipe tsdbdwn2
set -x
exec >> /tmp/tsdbdwn2.fifo 2>&1
#
This needs to be appended right after another block of statements:
if test $# -eq 0 ;then
echo "Safety check - do you really wish to run" $0 "... (5 Replies)
I have very simple client - server setup, where client connects, exchanges some messages with the server and then closes socket and exits. Everythink works OK, except when I am trying to change socket to be non-blocking AND the shell happens to be plain old Bourne. It runs no problem under ksh or... (3 Replies)
I was reading a book on UNIX internals "The design of the UNIX Operating system." There are two memory structures that are confusing me:
1) Buffer cache
2) Inode cache
My questions are
1) Does a process get both buffer cache and Indoe cache allocated when it opens/creates a file?
2) if no,... (1 Reply)
Hello
I have a Perl script that works on non-darwin Mac OS X environments and I think I have narrowed down the issue to a file locking problem.
In other linux environments, the flock struct is defined differently. I have adjusted this via the reference for Mac OS X fcntl(2) man page. The... (4 Replies)
Hei buddies,
Need ur help once again.
I have a file which has bunch of lines which starts from a fixed pattern and ends with another fixed pattern.
I want to make use of these fixed starting and ending patterns to select the bunch, one at a time.
The input file is as follows.
Hi welcome... (12 Replies)
I have a "main" file which has blocks of data for each user defined by tags BEGIN and END.
BEGIN
ID_NUM:24879
USER:abc123
HOW:47M
CMD1:xyz1
CMD2:arp2
STATE:active
PROCESS:id60
END
BEGIN
ID_NUM:24880
USER:def123
HOW:4M
CMD1:xyz1
CMD2:xyz2
STATE:running
PROCESS:id64
END (7 Replies)
I want to process a file block by block using sed, and if that block does not contain two patterns, then that complete block has to be printed.
See below for the example data.
................................server 1...............................
running process 1
running... (8 Replies)
I need to search for a block with the starting pattern say
"tabId": "table_1", and ending pattern say "]"
and then add a few lines before "]"
"block1":"block_111"
"tabId": "table_1",
"title":"My title"
.....
....
}]
how do I achieve it using awk and sed.
Thanks,
Lakshmi (3 Replies)
Discussion started by: Lakshmikumari
3 Replies
LEARN ABOUT SUNOS
printstack
walkcontext(3C) Standard C Library Functions walkcontext(3C)NAME
walkcontext, printstack - walk stack pointed to by ucontext
SYNOPSIS
#include <ucontext.h>
int walkcontext(const ucontext_t *uptr, int (*operate_func)(uintptr_t, int, void *), void *usrarg);
int printstack(int fd);
DESCRIPTION
The walkcontext() function walks the call stack pointed to by uptr, which can be obtained by a call to getcontext(2) or from a signal han-
dler installed with the SA_SIGINFO flag. The walkcontext() function calls the user-supplied function operate_func for each routine found
on the call stack and each signal handler invoked. The user function is passed three arguments: the PC at which the call or signal occured,
the signal number that occured at this PC (0 if no signal occured), and the third argument passed to walkcontext(). If the user function
returns a non-zero value, walkcontext() returns without completing the callstack walk.
The printstack() function uses walkcontext() to print a symbolic stack trace to the specified file descriptor. This is useful for reporting
errors from signal handlers. The printstack() function uses dladdr1() (see dladdr(3C)) to obtain symbolic symbol names. As a result, only
global symbols are reported as symbol names by printstack().
RETURN VALUES
Upon successful completion, walkcontext() and printstack() return 0. If walkcontext() cannot read the stack or the stack trace appears
corrupted, both functions return -1.
ERRORS
No error values are defined.
USAGE
The walkcontext() function is typically used to obtain information about the call stack for error reporting, performance analysis, or diag-
nostic purposes. Many library functions are not Async-Signal-Safe and should not be used from a signal handler. If walkcontext() is to be
called from a signal handler, careful programming is required. In particular, stdio(3C) and malloc(3C) cannot be used.
The printstack() function is Async-Signal-Safe and can be called from a signal handler. The output format from printstack() is unstable, as
it varies with the scope of the routines.
Tail-call optimizations on SPARC eliminate stack frames that would otherwise be present. For example, if the code is of the form
#include <stdio.h>
main()
{
bar();
exit(0);
}
bar()
{
int a;
a = foo(fileno(stdout));
return (a);
}
foo(int file)
{
printstack(file);
}
compiling without optimization will yield a stack trace of the form
/tmp/q:foo+0x8
/tmp/q:bar+0x14
/tmp/q:main+0x4
/tmp/q:_start+0xb8
whereas with higher levels of optimization the output is
/tmp/q:main+0x10
/tmp/q:_start+0xb8
since both the call to foo() in main and the call to bar() in foo() are handled as tail calls that perform a return or restore in the delay
slot. For further information, see The SPARC Architecture Manual.
ATTRIBUTES
See attributes(5) for descriptions of the following attributes:
+-----------------------------+-----------------------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+-----------------------------+-----------------------------+
|Interface Stability |Stable |
+-----------------------------+-----------------------------+
|MT-Level |Async-Signal-Safe |
+-----------------------------+-----------------------------+
SEE ALSO intro(2), getcontext(2), sigaction(2), dladdr(3C), siginfo.h(3HEAD), attributes(5)
Weaver, David L. and Tom Germond, eds. The SPARC Architecture Manual, Version 9. Santa Clara: Prentice Hall, 2000.
SunOS 5.10 1 Mar 2004 walkcontext(3C)